首页 » 网络爬虫 » 有趣的爬虫与反爬虫手段

有趣的爬虫与反爬虫手段

 
文章目录

有段时间我曾经研究过网络安全,关于攻和守 方方面面皆是较量(一直都很仰望搞安全的白帽子) 。 而爬虫与反爬虫,不过是诸多博弈中的一种罢了。正所谓 “道高一尺,魔高一丈", 这里面的故事简直是very very interesting....”


下面是我在以往的爬虫经验里整理总结出来的爬虫、反爬虫、反反爬虫的常规技术手段。后续遇到还会补。
(不要吝啬你的👍~)

常规爬虫措施(客户端获取数据防止被封)

  1. 动态设置请求头
    随机切换User-Agent、随机伪造不同的请求头,模拟不同用户的浏览器信息。
  2. 禁用Cookies
    也就是不启用cookies middleware,不向Server发送cookies,有些网站通过cookie的使用发现爬虫行为。
  3. 设置延迟下载
    防止访问过于频繁,设置为 2秒 或更高
  4. IP代理池
    VPN和代理IP,现在大部分网站都是根据IP来bai的。可付费购买一批私密代理IP。
  5. 使用Crawlera(专用于爬虫的代理组件)
    正确配置和设置下载中间件后,项目所有的request都是通过crawlera发出。
  6. Scrapy设置下载中间件(框架设置)
    Scrapy代理IP、Uesr-Agent的切换都是通过DOWNLOADER_MIDDLEWARES进行控制。在settings.py同级目录下创建middlewares.py文件,包装所有请求。修改settings.py配置文件中的USER_AGENTS和PROXIES等。

反爬虫(服务端校验爬虫程序)

  1. 站点robots协议
  2. 判断headers中的参数
  3. 检查用户cookies
    (注意 前方高能):
  4. 数据通过ajax动态获取,返回后通过 js 混淆处理
  5. 通过ip 或者特定账号单位时间内请求数量来限制访问,访问频率控制
  6. **设置验证码 **
    对于识别出的较为异常用户,设置验证码进行判断筛选。

    (下面 难度升级):

  7. 动态生成url
    有时候可能是动态生成构成该url的key; 有时候可能只是给你个假的url链接,能爬,但是没内容(此种情况属于蜜罐的一种)。。
  8. 利用浏览器http头指纹鉴别
    比如: PhantomJS 1.x版本中,由于其底层调用了Qt框架的网络库,因此http头里有明显的Qt框架网络请求的特征,可以被服务端直接识别并拦截。
  9. cookie token检查
    对所有访问页面的http请求,在 http response 中种下一个 cookie token;在这个页面内异步执行的一些ajax接口里去校验来访请求是否含有cookie token,将token回传回来则表明这是一个合法的浏览器来访,否则说明刚刚被下发了那个token的用户访问了页面html却没有访问html内执行js后调用的ajax请求,很有可能是一个爬虫程序。
  10. 蜜罐
    确认是爬虫之后,返回虚假数据。比如电商网站给爬虫的假商品假价格.(也是逗~2333) 或者关键信息不是正常字符,而是通过图片或者乱码来展示 等情况。

业内术语:

  • 监禁:
    采集一次放到全局变量中进行记录,并隔离访问(通过过滤器拦截器等限制访问),然后再放出来(提高应用容错性),再次符合判断再进行隔离访问或终身监禁,但界面展示为网络问题,等待中(为了防止破译监禁制造假象);
  • 投毒:
    界面展示的数据经过加工处理,展示的数据变为假数据(半真半假)(也可乱码)(投毒一般都是看起来像真数据,不仅仅是爬到真数据,也是想欺骗爬虫);
  • 断奶:
    如果判断是爬虫,直接拉黑;
  • 攻击(难度大,不建议):
    攻击方面有保守攻击和激进攻击两种,保守攻击如相应延时策略、返回大批量假数据策略、破坏数据解析规则策略等;激进攻击如肉鸡;

反反爬虫(进击的不甘心分子)

  1. 内置浏览器引擎
    PhantomJS,Selenium
  2. 转移战场,观察移动端
    别只盯着 Web 网站, App 和 H5 的反爬虫措施较少。
  3. **验证码识别大战 **
    关于验证码、验证码的识别、验证码的反识别也是一个恢弘壮丽的斗争史....
    这里简单说下思路(用上我刚学的机器学习)
    验证码识别可以用卷积神经网络训练图片数据进行识别;(关键词PIL,tesseract,二值化,分词,模式训练等等...)
  4. 分布式爬虫
    分布式能在一定程度上起到反爬虫的作用,当然相对于反爬虫分布式最大的作用还是能做到高效大量的抓取。

原文链接:有趣的爬虫与反爬虫手段,转载请注明来源!

1