需求描述
在采集蘑菇街的时候,按照关键词搜索宝贝列表的接口中有mw-sign参数,经过测试发现此参数无法伪造,可以重放。为了脱离浏览器进行采集,需要将这个值解出来。
分析过程
1.寻找加密位置
代码没有混淆,加密位置比较好找:
这边可以看到 mw-sign 是z(this.buildQuery(e))这一步生成的
2.分析传入参数
下断点调试,这个过程调用了两次z方法
第一次的位置如下图:
传入的参数如下:
第二次传入参数是一串字符串:该字符串由部分固定参数,cookie,已经上一步调用z方法得到的加密值拼接而来
将js抠出来做个简单测试:
100028&pc-search-wall&unknown&1564034676371&NMMain@mgj_pc_1.0&f65f8c1e-6286-4b4a-a917-5061e238155b&mwp.pagani.search&19&b9cab4ab7f543491e2c4f6c556711345&39a9ae72d3faec64f157166036f84edd_1564026637963
结合请求参数,对这一串字符的组成部分进行简单猜测:
大致就是"mw-appkey",“mw-ckey”,“mw-h5-os”,“mw-t”,“mw-ttid”,“mw-uuid”,以及部分请求地址(“mwp.pagani.search/19/”)使用"&"拼接而成,
“b9cab4ab7f543491e2c4f6c556711345"是第一步调用z方法的计算结果,
“39a9ae72d3faec64f157166036f84edd_1564026637963"来自cookie中的”_mwp_h5_token”
那么方向就明确了 将这些参数一一解决即可,部分参数可以固定,下文只讲无法写死的参数
3.mw-uuid
抓包发现这个值是从cookie里来的
4._mwp_h5_token和_mwp_h5_token_enc
只带mw-uuid,请求目标地址,可以获得这两个参数:
5.最终流程梳理
- 第一次调用z方法计算中间值
- 请求蘑菇街https://list.mogujie.com接口获得mw-uuid
- 再次调用z方法计算mw-sign值
结果展示
关注我们
爬虫教程,思路分享,商务合作,请关注射线网络公众号
回复 蘑菇街JS ,可以获得我们帮你抠好的js,本文用于技术学习交流,请勿用于非法用途