绕过反爬的八种方式

反爬虫方式千千万,绕过的方式万万千,很多反爬虫机制是无法绕过的,比如人家给你加个复杂验证码,你的爬虫就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限制。目标网站会根据客户端IP进行限制,比如防火墙或者程序里,这边说一下,如果防火墙在TCP/UDP层或者它们以下的层做限制是无法绕过的,所以建议使用正规渠道提供的代理IP试试。

5.frame限制。比较典型的是在页面里插入好几层frame,链接到另外一个页面,然后再插入层层frame,链接到另外页面,这种你在第一个页面是无法提取到有效url的,这种绕过方式是查看页面源代码,抽丝剥茧,找到有效的页面所在的目录,然后直接请求有效的页面

6.cookie限制。这种是以cnvd为代表,每次请求以后,它会给你一个cookie,然后下次请求你要带上这个cookie才行,这种绕过方式就是使用selenium+webdriver,获取每次需要的cookie,下次再带上,当然你也可以用urllib2的cookie机制,使用什么方式不限制,关键是绕过

7.xpath的迷惑。这边介绍有的网页HTML代码编写并不标准,你使用火狐的firebug点击元素并右键,然后再copy(复制)的子选项里有copy xpath这种获取xpath的方式,它是标准的,会自动补全缺少的HTML元素比如tr元素,所以这种xpath无法解析到需要的内容,绕过这种的方式是查看页面源代码,然后手工编写或者修改从火狐里复制出来的xpath

8.事件限制。有的内容是需要触发相关的事件才能发送请求,这种的绕过方法是利用selenium+webdriver也就是加个浏览器内核去模拟事件即可

上面几种绕过反爬虫的方式可以单独使用也可以综合使用,建了议几种结合使用,当然可能也有其他绕过反爬虫的方式,这边只想起那么多了,大家都是做安全的,可以从安全的角度做一些,比如上面使用burpsuite抓包的方式,就可以绕过ajax。
http://PC:http://clue.xiecaiyun.com/reg/?channel=xy-zh-xcyicon-default.png?t=M4ADhttp://PC:http://clue.xiecaiyun.com/reg/?channel=xy-zh-xcy


版权声明:本文为xinyan023542原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。