反爬虫方式千千万,绕过的方式万万千,很多反爬虫机制是无法绕过的,比如人家给你加个复杂验证码,你的爬虫就GG了,方法是各种各样的,下面来简单介绍一下。
1.请求频率限制。其实是基于用户行为的,有的站点有防火墙或者程序有设置,单位时间内请求过多给你禁IP。绕过方式:使用sleep等待随机时间,这招比较狠,你可以在一个时间段内生成个随机时间,然后传递给sleep,但是这种方式会拉长爬虫周期,最好的方法就是从IP入手,多找一些代理IP去访问就可以了。
2.user-agent限制。这个绕过也很简单,设置个user-agent列表,使用随机函数,从列表里随机抽出一个user-agent,封装到http请求里,比如你从网上找30个user-agent,做成一个list列表名字叫user-agents,然后使用user-agents[random.randint(0,30)]就可以从列表随机提取一个user-agent,然后封装到http里
3.JavaScript限制。这种是使用JavaScript产生请求,有两种绕过思路,
一种是使用burpsuite,拦截到js发送的请求,然后分析其规律,如果你只需要一个请求,那么把拦截的请求用urllib2或者类似的库封装个一样的请求就可以了,然后多的话,找一下请求的规律,按照规律封装请求,也能实现目的,
第二种呢,是使用selenium+webdriver,就是使用浏览器解析JavaScript的方式,这种环境配置起来比较麻烦,网上也有大把大把的教程,你可以自行搜索一下资料
4.远端IP限制。