python爬虫进阶(七):应对反爬虫的策略

在之前的学习中也了解到一些反爬与应对反爬的策略,见这篇博客 。


一、服务器处理web请求流程


client     >>   DNS(运营商)   >>  CDN   >>   proxy  >>  host   >>  Apach  >>   PHP





二、网站反爬虫


1、网站如何发现爬虫?

      (1)单一IP非常规的访问频次

       (2)单一IP非常规的数据流量

       (3)大量重复简单的网站浏览行为

        (4)只下载网页,没有后续的js、css请求

        (5)通过一些陷阱来发现爬虫,例如一些通过CSS对用户隐藏的链接,只有爬虫才会访问

2、反爬虫的方案

        (1)user-agent

         (2)动态网页  js

         (3).htaccess  机器学习、大数据来判断是否爬虫

         (4)基于流量的拒绝

          (5)基于IP连接的拒绝

           iptable的控制:



3、爬虫被网站识别后的反应

 即我们的爬虫被网站识别后网站会给予我们什么信息?

         (1)验证码

          (2)响应时间

           (3)错误:301、401、403、404、408、429、503


三、应对反爬虫的策略


动态IP切换技术


1、模拟路由器登录

2、通过POSTMAN查找路由器的断线、重连接口

3、当发现IP被主机识别后,强制路由器断线、重连


路由器登录


我们在浏览器url栏输入192.168.1.1就可以弹出登录信息



路由器重连




CSS的display属性


display:none   隐藏当前块

当CSS内有上面语句时,在浏览器页面显示时会隐藏



限制网络爬虫的命门是限速,如何在网站限速的条件下更快速的获得我们想要的内容才是重点!!!!!


大型网站都有很多服务器,当我们访问不同的服务器时,反爬虫监督只会记录我们访问一次,而实际上我们不止访问一次。因此我们应该花点时间找到这些服务器的IP地址。

如:Google在全球可能有成百上千的服务器,如果我们能找到这些服务器IP地址,将会提速N倍,当爬取内容非常多时,那么这是值得的!!



网页内嵌套:

一个网页内嵌套另一个网页的内容,只需要嵌入其网址,而看不到其源代码。

例子  广东省电子税务局




console

方法一:document.getElementsByClassName('col-xs-12')[0]

方法二:document.getElementById('ifrMain').contentWindow.document.getElementsByClassName('col-xs-12')

‘ifrMain’  拿到嵌套页面,注意复制粘贴

上面两种方法在console控制台都能拿到我们想要的内容,

但是在用selenium+phantomjs时只能用方法二




你可能感兴趣的:(python,Python,爬虫)