Coup de Grace

关于爬虫反屏蔽的发散思考

反屏蔽的东西很多人写过了…写一点我意淫时发散思考的东西.

实际随手一百度就有这么几个手法:

写的这段儿被单位警告了,可能觉得还是有敏感数据

现在这篇是像素级脱敏的版本,写的都是大家写爬虫的方法与我之后的规划,还未在生产环境实施.

那么本篇删除的内容就是如下内容:


代理

免费代理池

免费代理的思路就是到百度抓免费代理,抓到自己的库里crontab维护可用性,可以参考下面代理心跳的部分.

也有人用tor放在vps上来用应用触发切换ip,达到类似PPPoE拨号换ip的效果,有待考证.

自建代理

自建代理机房的部分因为敏感不提.

那么自行购买VPS搭建正向代理就是自建代理的思路了.

众所周知代理应用:

以上各位都有正向代理的使用方法,自行探索就是.

代理购买

也推荐阅读一下这篇文章与这个博客,内容详实.


UA/Header

这里想说一个其他的,闲逛时候看到这样一个项目,介绍了html中常见的head内容.

Header中可以模拟的部分尽量还是都模拟一下,简易的爬虫屏蔽也有判断header元素缺失这一点.

有计划给同事写个chrome插件将request header导成groovy/etc脚本.

我个人的话会用Paw的导出功能来实现以上部分来节省时间.

关于UA列表我这里则有一份还算可以的fake UA文件,是我从已经记不住的开源项目里面解析出来的…点击这里下载


最近一年,我浏览外国网站越来越多的会看到我站使用Cookie来实现某些功能,隐私blabla,你同不同意blabla...这种话…

前些日子接到的面试几乎每个我都会问一下Http协议里cookie的http-onlysecure属性.着了魔了..

回归正题,我们可以通过Cookie jar来暂存cookie以维持后续的抓取过程,当然也可以自定义cookie对象存在缓存中.

尤其是分段的,异步的.

Paw真是个好工具..多用啊诸君.


PhantomJs & Selenium

实际这部分我是很难产的,因为目前还没打听到谁把这套用在生产环境上,内存泄露等怪问题层出不穷…

原理是啥:

PhantomJs系列作为Headless Browser,提供无界面的webkit内核浏览器,提供Js API.

Selenium算是个脚本运行引擎,支持驱动浏览器,包括但不限于本机上的所有浏览器与headless浏览器.

那么流程就显而易见了.

应对什么样的场景:

js加载出来的页面(比如瀑布流),我们可以尝试用CasperJs模拟点击,把该出发的触发好,喂给Selenium或者我们的爬虫.

相关文档:

我写的东西里面实在不愿意搞这些文档链接什么的…

言尽于此吧,哪天真上了生产再写出来具体实践.

当然PhantomJs官网的这句话很对我胃口: