1,文字转图片,采集58同城,和百度知道,触发反爬机制后,会出现。解决办法:忘记了当时是怎么处理过的,找不到源码了~,但是单个的文字或者字符使用谷歌的OCR的包准确率也是非常高的。
2,传字符编码到页面,页面渲染字体才能得到实际的内容。解决办法:相关的包:from fontTools.ttLib import TTFont
3,利用js改变,计算,解密得到你能在审查元素找到的值,但是在response的文本看不到。解决办法:简单的js直接用自己的语言实现一遍计算过程,复杂一点的,相关包:import execjs,再更加复杂的,直接调用浏览器实例得到渲染结果,带界面的用from PyQt4.QtWebKit import *,这个可以来实现复杂麻烦的模拟登入,不带界面的就用phantomjs和selenium。
4,app的https协议传输内容,是使用自带证书和严格验证ssl的app,就是让你抓不到包。
Android应用程序在使用https协议时也使用类似的3种方式验证服务器身份,分别是系统证书库、自带证书库、自带证书库 + SSL Pinning特性。所以SSL Pinning,即SSL证书绑定,是验证服务器身份的一种方式,是在https协议建立通信时增加的代码逻辑,它通过自己的方式验证服务器身份,然后决定通信是否继续下去。它唯一指定了服务器的身份,所以安全性较高。
这种用xposed 去hood,可用模块:JustTrustMe
5,app的TCP传输内容,非http/https协议,只能是找到发送请求的方法去hook得到发送前的参数了(研究中。。。)
6,还听闻:根据依据 客户端分辨率和尺寸大小。。。。啥啥啥的,一个面试官说的,我当时都听蒙蔽了,不知所云,现在回想起来,他应该是用类似按键精灵的东西来配合操作吧。
7,自带ip库的,有技术实力做ip库的,所有的ip在他那里访问都会留下记录,无论你换UA还是登入,稍微过分一点就能触发反爬,对这种反爬,只能集群+分布式,单进程单ip温柔对待.
个人原创,转载必究,原文地址:https://my.oschina.net/u/2367514/blog/1921388