Why would they take a percentage of your salary? You're the recruit. They're providing the business a service (good recruits who can fill a position), so they charge the business. You're providing the recruiter a service (being that good recruit), so they pay you in the form of a signing bonus. Additionally, since the employer pays the recruiter a percentage of one year's salary, the recruiter is incentivized to make that salary as high as possible, so they'll negotiate on your behalf in that regard.
Recruiters are middlemen, and middlemen match customers with providers. For that, they get paid.
They are not "harming" either, as the relationship and deals made are voluntary.