360秒收问答采集伪原创程序(,策略有点意思:docId加密了,文末解析(一))
优采云 发布时间: 2021-09-10 02:17360秒收问答采集伪原创程序(,策略有点意思:docId加密了,文末解析(一))
QQ讨论群:828423011
// 8 月 7 日,返回项数限制为 50。getKey 方法变得更复杂,但本文中的方法仍然有效。
/8月20日再看,这个反爬策略有点意思:docId加密,文末解析
一、crawling 业务流程(1)结构guid
核心代码如下:
//js代码
(((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)
其实就是一个随机数,类似的算法也是可以的。官网成绩表为:
// 例如: `194cb81f-cec7-1baa9226-aa547f73b7fd`
fn()+fn()+'-'+fn()+'-'+fn()+fn()+'-'+fn()+fn()+fn()
(2)根据guid获取号码
这个很简单,带上guid参数即可。关键是中间有个洞:
当你遇到坑时,你会再试一次。后面也有类似的坑。 .
(3) 得到了 vjkl5 值
这个值有点意思,是系统在你访问网站时写入cookie中的。 cookie 的有效期是 1 小时,但只有 10 分钟(到目前为止)。后续请求将使用此值。系统会在客户端根据这个值计算vl5x,然后当向服务器发出请求时,服务器会根据vjkl5计算vl5x,然后将客户端的值与服务器计算的值进行比较。如果一致,则验证通过。返回数据,否则返回提醒键
获取这个值很简单,获取cookie就可以了,这个值可以在本地缓存10分钟,减少请求次数。
(4)计算 vl5x 值
这是核心参数。步骤简单又简单,又复杂又复杂。关键看实现方法。
首先跳入无聊的分析,直接告诉大家这个值是通过一个**getKey()**方法计算出来的,有经验的朋友都知道
经过调试跟踪,发现该方法的依赖文件如下:
sha1.js
base64.js
md5.js
key.js (是getKey的方法体,可以直接在控制台输入getKey获得)
然后有一个解决方案:
(5)获取列表
如果上面的值都得到了,那么现在就可以去获取列表了。参数如下:
(6)后续坑
坑很多,总结一下我目前发现的
(7)follow-up
目前可以使用上述方法。我有采集 数百万条数据。后面我会在官网更新算法(如果能破解的话..)。那我就不开源这个程序了。毕竟是暗蜘蛛程序。核心已经告诉大家,你可以自己做。不过有什么问题还是可以交流的~~
(8)Document ID解密