爬虫与反爬虫

 

爬虫与反爬虫知识

网络爬虫与反爬虫:

  网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网下载网页,是搜索引擎的重要组成。但是当网络爬虫被滥用

  后,互联网上就出现太多同质的东西,原创得不到保护。于是,很多网站开始反网络爬虫,想方设法保护自己的内容。他

  们根据IP访问频率,浏览网页速度,账户登录,输入验证码,flash封装,ajax混淆,js加密,图片等技术来应对网络爬虫。

反爬虫手段

User-Agent 和 Referer检测:

    User-Agent 是HTTP协议的中的一个字段, 其作用是描述发出HTTP请求的终端的一些信息。使得服务器能够识别客

  户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。服务器通过这个字

  段就可以知道访问网站的是什么人。对于不是正常浏览器的用户进行屏蔽。

    解决方案: 伪装浏览器的User-Agent,因为每个浏览器的User-Agent不一样,并且所有的用户都能使用浏览器。所有每

  次请求的时候条件浏览器的User-Agent,就能解决UA检测。

    Referer 是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页

  面链接过来的。例如有一些图片网站在你请求图片的时候,就会检测你的Referer值,如果Referer不符合,不会返回正常的

  图片。

    解决方案:在检测referer的请求中,携带符合的referer值。

js混淆和渲染:
    JavaScript 混淆,基本就是:
  1.去掉一些实际没有调用的函数。

  2.将零散的变量声明合并。

  3.逻辑函数的精简。

  4.变量名的简化。 具体要看不同的压缩工具的考虑优劣。常见的有UglifyJS、JScrambler等工具。


    js渲染其实就是对HTML页面的修改。比如有一些网页本身没有返回数据,数据是经过js加载之后添加到HTML当中

  的。当遇到这种情况的时候,我们要知道爬虫是不会执行JavaScript操作。所以需要用其他的方法处理。

  解决方案:
  1.通过阅读网站js源码,找到关键的代码,并用python实现。
  2.通过阅读网站js源码,找到关键的代码,用PyV8等库直接执行js代码。
  3.通过selenium库直接模拟浏览器环境。

 

IP限制频次:

  WEB系统都是走http协议跟WEB容器连通的,每次请求至少会产生一次客户端与服务器的tcp连接。对于服务端来说可以很

清楚的查看到,一个ip地址在单位时间内发起的请求。当请求数超过一定的值之后,就可判断为非正常的用户请求。


  解决方案:

    1.自行设计ip代理池,通过轮换的方式,每次请求携带不同的代理地址。

    2.ADSL动态拨号他有个独有的特点,每拨一次号,就获取一个新的IP。也就是它的IP是不固定的。

 

验证码:

  验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计

    算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷

    票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。

    这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答

    出问题的用户就可以被认为是人类。

  解决方案:

    1.手动识别验证码

    2.pytesseract识别简单的验证码

    3.对接打码平台

 

posted @ 2018-04-09 09:09  巴蜀秀才  阅读(155)  评论(0编辑  收藏  举报