此次破解的背景是:一个朋友希望定期同步某个公司的工商信息,评估和测试了下。相对比较可能的就是启*宝的接口了。通过一天的努力,终于有了点底了。特做记录,以备以后回顾!
参考:http://everstar.xyz/2017/07/30/terrible-web-crawler-experience/
1.接口分析
image.pngc0951f38fbe39d08a765: ea9e74813f6211841f5dccee4398f32ee78bf4a82d23ca00c36e4662a7f275dad91ea7fb13d521567ab0aa3e821225761e349684782d40c3db38ba4a893d931e
这段无法解释,其他均可以理解【都是老司机,不解释了】
尝试不传这个参数
image.png该参数是接口校验值,所以要想爬接口,就必须破解算法
2.如何破解算法
a.key值和value值的特点
key值20位,value值128位。
在js里根据关键字,搜索。
image.png
b. 请求参数【t,e】如何生成
image.pngimage.png利用chrome的断点调试,终于找到了
c.新的问题来了,参数【n】的算法是什么?
通过断点的方式找到了实现方法。【因为单步调试太多,无法复现,所以无法截图了】
主要原理就是以请求的url为基础,分割字符串,根据单字母获取字母0-65545的值,然后取余20,根据取余值,从设定的数组中,根据key获取对应的值然后拼接得到n。
d.n算法只是第一步,之后根据n生成请求的value值。算法就是hmac512
image.pngimage.png
跟接口请求一样,可以舒口气,工作算是完成一半了。接下来,就是请求的key的生成算法了。
f. 通过调试,发现key的算法和value值的算法是相似的。都是hmac512的加密方式,只是请求值不一样,然后根据计算的加密值,从10开始,截取20。
image.png3. 本地实现
image.png4. 小结
这次的破解启*宝,是一次难得的经验积累。从全网google其他的破解方法,以及自己如何一步一步调试,最终破解出生成算法。有辛苦和快要放弃的念头,也有快乐和成就感。
不过为了保证不影响他人的利益,所以文章中的一些关键技术都未展示。这只是一次记录。
当然后续应该还有,一整套的实现方案。毕竟到这一步,不弄点东西出来,是无法满足自己的好奇心的。
网友评论