常见的反爬虫的方式

1、JS写的cookie

  当我们要写爬虫爬某个网页里面的数据的时候,无非就是发开网页,然后查看源代码,如果html里面有我们要的数据的话,那样也就简单了,直接就可以用requests请求网址得到网页源码,然后解析提取一下我们要的内容就可以了

  requests得到的网页是一对JS,跟浏览器打开看到的网页源代码是完全不一样的,当遇到这种情况的时候,往往就是浏览器通过运行这段JS生成了一个或者多个cookie,之后再带着这个cookie去做二次请求

  其实你在浏览器中可以看到这个过程,首先就是把浏览器中保存的cookie删掉,然后刷新网页,再次进行访问,我们就可以看到在历史的network请求记录中看到第一次访问返回的是521,内容是一段JS代码;当再次进行访问的时候就可以得到真实的页面了。分析这两次的请求,发现第二次请求中多带了一个cookie,而这个cookie并不是第一次请求服务器发送过去的,而是利用JS进行生成的

    解决方法:

      研究那一段JS,找到它生成cookie的算法,然后就可以利用python代码进行解决了

2、JS加密ajax请求参数

  当要爬取某个网页的数据的时候,发现网页源代码里面并没有我们要的真实的数据,那这时候数据往往是ajax请求得到的。这个时候就可以通过XHR里面的response进行分析,一般那里面的数据都是我们想要的

  当然这个URL里面会包含很多参数,其中一个可能看上去不是很起眼,但是这个字符串就可能是JS通过一个加密算法得到的,服务器也会通过同样的算法进行验证,验证通过了才认为你这个是从浏览器发送来的请求。我们可以通过将那个URL拷贝到地址栏中,把那个参数随便改动一下,访问看一下,是不是我们想要的正确的结果,以此来检验它是否是加密参数

    解决方法

      对于这样的加密参数,对策就是通过debug JS来找到对应的JS加密算法。其中最关键的就是在浏览器中设置XHR/fetch Breakpoints

3、JS反调试(反debug)

  前面我们都会用到chrome中的F12去查看网页的加载过程,当这种方法用多了网站就加了反调试的策略,只要我们打开F12,就会暂停在一个‘debugger’的代码行中,无论怎么样都跳不出去,不管我们点击多少次继续运行,他都一直在这里面,每次都会多出一个VMxx的标签,观察‘Call Stack’发现好像陷入了一个函数的递归调用中。这个‘debugger’让我们无法调试JS。但是只要关闭了F12窗口,网页就可以正常加载了

  解决这种JS反调试的方法我们称之为‘反-反调试‘,其策略就是通过‘Call Stack’找到把我们带入死循环的函数,并且重新定义它

  这样的函数几乎没有任何其他的功能,只是给我们设置的一个陷阱罢了。我们可以把这个函数在console中重新定义一下,比如将其定义成空函数,这样在运行的时候它就会什么都不干了,也就不会把我们带到无限递归的场景中去了,在这个函数调用的地方打个Breakpoint。因为我们已经在陷阱中了, 所以要刷新页面,JS的运行应该停止在设置的断点处,此时该函数还没有运行,我们就已经在console中重新定义完了,所以继续运行就会跳过该陷阱

4、JS发送鼠标点击事件

  有些网站,你从浏览器可以打开正常的页面,而在requests里面却被要求输入验证码或者是重定向到其他的页面。

  JS会响应链接被点击的链接。服务器收到被点击链接的请求,会看看之前是不是已经通过某个文件把信息发送过来了,如果发过了就认为是合法的浏览器访问,给出正常的网页内容

  因为requests没有鼠标事件响应就没有访问文件的过程,就直接访问链接了,服务器就拒绝服务

  当明白了这个过程以后,我们几乎可以不研究JS中的内容(JS也有可能对被点击链接进行修改)就可以绕过反爬策略了,无非就是在访问链接以前先访问一下那个文件就可以了。关键是要修改那个文件后面的参数,把这些参数都带上就OK了

总结:

  爬虫和网站是相生相克的,当爬虫知道了反爬策略就可以做成反-反爬策略;网站知道了爬虫的反-反爬策略就可以做一个反-反-反爬策略,正可谓是道高一尺魔高一丈,两者的斗争是永远不会结束的

原文地址:https://www.cnblogs.com/tulintao/p/11616640.html

时间: 2024-10-08 22:52:16

常见的反爬虫的方式的相关文章

网站常见的反爬虫和应对方法

这几天在爬一个网站,网站做了很多反爬虫工作,爬起来有些艰难,花了一些时间才绕过反爬虫.在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下. 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采集部分. 一般网站从三个方面反爬虫:用户请求的Headers,用户行为,网站目录和数据加载方式.前两种比较容易遇到,大多数网站都从这些角度来反爬虫.第三种一些应用ajax的网站会采用,这样增大了爬取的难度. 通过Headers反爬虫  从用户请求的Headers反爬虫是最常

常见的反爬虫和应对方法

0x01 常见的反爬虫 这几天在爬一个网站,网站做了很多反爬虫工作,爬起来有些艰难,花了一些时间才绕过反爬虫.在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下. 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采集部分. 一般网站从三个方面反爬虫:用户请求的Headers,用户行为,网站目录和数据加载方式.前两种比较容易遇到,大多数网站都从这些角度来反爬虫.第三种一些应用ajax的网站会采用,这样增大了爬取的难度. 0x02 通过Headers反爬虫 从用户

网站常见的反爬虫和应对方法(转)

在我们的对2016年大数据行业的预测文章<2016年大数据将走下神坛拥抱生活 资本青睐创业机会多>里,我们曾经提到“在2016年,防止网站数据爬取将变成一种生意.”.今天我找到了来自”BSDR“的一篇文章,文章里主要介绍了常见的反爬虫应对方法,下面是正文. 常见的反爬虫 这几天在爬一个网站,网站做了很多反爬虫工作,爬起来有些艰难,花了一些时间才绕过反爬虫.在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下. 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采

【转载】网站常见的反爬虫和应对方法

http://www.36dsj.com/archives/40809 在我们的对2016年大数据行业的预测文章<2016年大数据将走下神坛拥抱生活 资本青睐创业机会多>里,我们曾经提到“在2016年,防止网站数据爬取将变成一种生意.”.今天我找到了来自”BSDR“的一篇文章,文章里主要介绍了常见的反爬虫应对方法,下面是正文. 常见的反爬虫 这几天在爬一个网站,网站做了很多反爬虫工作,爬起来有些艰难,花了一些时间才绕过反爬虫.在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下. 从功

(转)常见的反爬虫和应对方法

0x01 常见的反爬虫 这几天在爬一个网站,网站做了很多反爬虫工作,爬起来有些艰难,花了一些时间才绕过反爬虫.在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下. 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采集部分. 一般网站从三个方面反爬虫:用户请求的Headers,用户行为,网站目录和数据加载方式.前两种比较容易遇到,大多数网站都从这些角度来反爬虫.第三种一些应用ajax的网站会采用,这样增大了爬取的难度. 0x02 通过Headers反爬虫 从用户

Python爬虫|深入请求(四)常见的反爬机制以及应对方法

作者:David Qian 链接:https://zhuanlan.zhihu.com/p/21558661 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 大家好!我是厦门大学王亚南经济研究院的大一学生,今天将由我来为大家介绍一下常见的反爬机制以及应对方法. 注:非商业转载注明作者即可,商业转载请联系作者授权并支付稿费.本人已授权"维权骑士"网站(http://rightknights.com)对我在知乎发布文章的版权侵权行为进行追究与维权. ---

python解决网站的反爬虫策略

网站的反爬虫策略: 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采集部分. 一般网站从三个方面反爬虫:用户请求的Headers,用户行为,网站目录和数据加载方式.前两种比较容易遇到,大多数网站都从这些角度来反爬虫.第三种一些应用ajax的网站会采用,这样增大了爬取的难度(防止静态爬虫使用ajax技术动态加载页面). 1.从用户请求的Headers反爬虫是最常见的反爬虫策略. 伪装header.很多网站都会对Headers的User-Agent进行检测,还有一部分网站

反击“猫眼电影”网站的反爬虫策略

0×01 前言 前两天在百家号上看到一篇名为<反击爬虫,前端工程师的脑洞可以有多大?>的文章,文章从多方面结合实际情况列举了包括猫眼电影.美团.去哪儿等大型电商网站的反爬虫机制.的确,如文章所说,对于一张网页,我们往往希望它是结构良好,内容清晰的,这样搜索引擎才能准确地认知它:而反过来,又有一些情景,我们不希望内容能被轻易获取,比方说电商网站的交易额,高等学校网站的题目等.因为这些内容,往往是一个产品的生命线,必须做到有效地保护.这就是爬虫与反爬虫这一话题的由来.本文就以做的较好的"

反爬虫总结

从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采集部分. 一般网站从三个方面反爬虫:用户请求的Headers,用户行为,网站目录和数据加载方式.前两种比较容易遇到,大多数网站都从这些角度来反爬虫.第三种一些应用ajax的网站会采用,这样增大了爬取的难度. 0x02 通过Headers反爬虫 从用户请求的Headers反爬虫是最常见的反爬虫策略.很多网站都会对Headers的User-Agent进行检测,还有一部分网站会对Referer进行检测(一些资源网站的防盗链就是