Python 爬虫进阶必备 | 某小众电商请求参数加密逻辑分析
共 1474字,需浏览 3分钟
·
2021-08-17 19:21
点击上方“咸鱼学Python”,选择“加为星标”
第一时间关注Python技术干货!
今日网站
aHR0cHM6Ly9saXN0Lm1vZ3UuY29tL3NlYXJjaC9nb29kcz9xPSVFNSVCNyVBNSVFOCVBMyU4NSVFOCVBMyVBNA==
加密分析
在这个站的页面上按 F12 没有反应,我以为有什么防 debugger 的操作,结果防了个寂寞,啥都不是
打开控制台,向下滑动刷新请求,找到页面的请求是下面这个
注意:
虽然往下滑动可以加载新页面,但是这个请求并不是xhr
在Network
的xhr
过滤器下是没有这个请求的,这个请求是个jsonp
请求,是由js
发起的,在Network
的js
过滤器下可以找到这个请求,所以意味着用xhr
断点无法调试这个请求。
这个请求的参数如下
一个个检索看看,感觉是比较简单的
提交参数一般逻辑都写在一块,比较好维护,所以可能就会像下面这样检索一个就能把参数找的七七八八
还有一个mw-sign
在同一个文件里也能找到
接下来一个个看逻辑,mw-appkey
是一个switch
逻辑
mw-ttid
是一个字符串拼接的操作
this.__ttid = "NMMain@" + [this._type, this._platform, this._version].join("_")
// this._type = "mgj"
// this._platform = "pc"
// this._version = "1.0"
mw-t
获取是当前的时间戳
mw-t = String(Date.now())
mw-uuid
获取的cookie
中的__mgjuuid
那么这个 cookie 是怎么生成的呢?经过分析cookie
里的值是set-cookie
返回的
// t = __mgjuuid
s = function(t) {
var e = document.cookie.match(new RegExp("(^| )" + t + "=([^;]*)(;|$)"));
return null !== e ? decodeURIComponent(e[2]) : ""
}
mw-h5-os
是一个固定值unkown
完成以上这些值的获取之后,合并到并传入到buildQuery
方法中
e.headers["mw-sign"] = z(this.buildQuery(e))
这里的buildQuery
是将e
的内容用&
拼接,然后将结果传入z
经过buildQuery
得到的值如下
100028&pc-search-wall&unknown&1628739222904&NMMain@mgj_pc_1.0&c6603e42-558f-45b7-8423-9c7cba8990df&mwp.pagani.search&19&694b9a6ca4529f328a60392d782ec9a5&8f6d59b5ec26d24c15b05a608b1389da_1628668322693
将这串值传入z
,得到的值是下面这串
这串值就很简单啦,长度为 32 ,估计是hash
相关的算法,对于16
、32
的长度密文大家要有一定的敏感度
放到网站上验证一下想法
和md5
的结果完全一致,所以z
的逻辑就是一个md5
算法。
以上就是本次的全部内容了,咱们下次再会~
安卓逆向快速入门适合初中高级爬虫攻城狮对了,看完记得一键四连,这个对我真的很重要。