记录一次企查查、天眼查的类似网站的爬虫实践

此次破解的背景是:一个朋友希望定期同步某个公司的工商信息,评估和测试了下。相对比较可能的就是启*宝的接口了。通过一天的努力,终于有了点底了。特做记录,以备以后回顾!

参考:http://everstar.xyz/2017/07/30/terrible-web-crawler-experience/

1.接口分析

记录一次企查查、天眼查的类似网站的爬虫实践_第1张图片
image.png
c0951f38fbe39d08a765: ea9e74813f6211841f5dccee4398f32ee78bf4a82d23ca00c36e4662a7f275dad91ea7fb13d521567ab0aa3e821225761e349684782d40c3db38ba4a893d931e

这段无法解释,其他均可以理解【都是老司机,不解释了】

尝试不传这个参数

记录一次企查查、天眼查的类似网站的爬虫实践_第2张图片
image.png

该参数是接口校验值,所以要想爬接口,就必须破解算法

2.如何破解算法

a.key值和value值的特点

key值20位,value值128位。
在js里根据关键字,搜索。


记录一次企查查、天眼查的类似网站的爬虫实践_第3张图片
image.png

b. 请求参数【t,e】如何生成

记录一次企查查、天眼查的类似网站的爬虫实践_第4张图片
image.png

利用chrome的断点调试,终于找到了

记录一次企查查、天眼查的类似网站的爬虫实践_第5张图片
image.png

c.新的问题来了,参数【n】的算法是什么?

通过断点的方式找到了实现方法。【因为单步调试太多,无法复现,所以无法截图了】
主要原理就是以请求的url为基础,分割字符串,根据单字母获取字母0-65545的值,然后取余20,根据取余值,从设定的数组中,根据key获取对应的值然后拼接得到n。

d.n算法只是第一步,之后根据n生成请求的value值。算法就是hmac512

记录一次企查查、天眼查的类似网站的爬虫实践_第6张图片
image.png

记录一次企查查、天眼查的类似网站的爬虫实践_第7张图片
image.png

跟接口请求一样,可以舒口气,工作算是完成一半了。接下来,就是请求的key的生成算法了。

f. 通过调试,发现key的算法和value值的算法是相似的。都是hmac512的加密方式,只是请求值不一样,然后根据计算的加密值,从10开始,截取20。

记录一次企查查、天眼查的类似网站的爬虫实践_第8张图片
image.png

3. 本地实现

记录一次企查查、天眼查的类似网站的爬虫实践_第9张图片
image.png

4. 小结

这次的破解启*宝,是一次难得的经验积累。从全网google其他的破解方法,以及自己如何一步一步调试,最终破解出生成算法。有辛苦和快要放弃的念头,也有快乐和成就感。
不过为了保证不影响他人的利益,所以文章中的一些关键技术都未展示。这只是一次记录。

当然后续应该还有,一整套的实现方案。毕竟到这一步,不弄点东西出来,是无法满足自己的好奇心的。

你可能感兴趣的:(记录一次企查查、天眼查的类似网站的爬虫实践)