最近呢,有位小朋友说,他想搜集北京所有的景点信息,找来找去,找到某游记网站有大量的景点信息,想让我帮忙处理下。
一看景点信息确实不少,人工处理是不现实了,只能利用爬虫技术处理,首先抓个翻页包看看。
抓包请求:https://www.mafengwo.cn/ajax/router.php
在请求体参数中,有两个验签的参数,_ts和_sn,从字段名看应该就是时间戳和sign。
打开开发者工具,下XHR断点,最后追溯到此处,index.js应该是生成签名的地方。
一看代码是做了一定的混淆,字符串都没有直接显示,网上翻,找到此处。
__Ox2133f变量是字符串数字,用AST还原字符串看看。
还原以后,可以看到SparkMD5字样,看来签名跟md5有关,我们在回到签名算法的调用入口函数看看。
经过字符串还原,看起来清晰多了,从代码看_ts每次调用都会生成一个时间戳,_sn则是_0xe7fex35函数生成。
跟进_0xe7fex35瞧瞧,看到最后一行,是经过排序的data加盐md5生成的。
总结:
整个签名流程下来,感觉蛮简单的,防护强度不高,可以完全还原算法的那种。
一起交流学习,QQ: NTQwMTExMDI5(base64)