标签:逻辑 zkhst 进阶 Python sign header token 参数 concat
今日网站
aHR0cHM6Ly93ZWIuemtoMzYwLmNvbS9saXN0L2MtMjYwMTg2Lmh0bWw/c2hvd1R5cGU9cGljJmNscD0x
这个网站是在某交流群看到的,随手保存下来作为今天的素材
抓包分析与加密定位
先看看抓包的结果,可以看到请求的header
中包含两个未知的参数,分别是zkhs
和zkhst
进一步检索参数zkhst
和zkhs
,可以发现这两个参数的值没有做过混淆
并且都有对应的搜索结果
可以在文件中找到下面这几个关键位置
加密分析
在逻辑里比较明显的是
e.headers.zkhs = o,e.headers.zkhst = r
这行代码预示我们要分析的是o
和r
这两个变量
这两个变量的赋值分别可以在上面的 js 逻辑中找到
o = u()("body=".concat(i, "¶ms=").concat(o, "&sign_token=").concat(r), r)
r = Object(s.f)("zkhst")
接下来只要单点调试即可,先来看o
的生成
o
的逻辑是将所有的参数拼接,传入u()
中计算
这里的参数是一个逗号表达式,最后得到的传入参数是r
r = ("body=".concat(i, "¶ms=").concat(o, "&sign_token=").concat(r)
这里较为明显的未知参数是body
以及sign_token
可以通过断点分析得到下面的结果,这个结果就是计算后的r
body={"brandId":"","catalogueId":"260186","cityCode":350100,"clp":true,"extraFilter":{"inStock":false,"showIndustryFeatured":false},"from":0,"fz":false,"keyword":"","productFilter":{"brandIds":[""],"properties":{}},"rangeFilter":null,"searchType":{"notNeedCorrect":false},"size":20,"sort":0}¶ms={"traceId":"213681131613962067063"}&sign_token=799c9842f09c490196047064e10dead8
网站的开发很贴心了,还在逻辑里加了console.log
body
和parmas
都是查询参数,body
中包含了城市信息之类的内容,这个需要根据要爬取的内容修改
除此之外还有sign_token
未知,这个就是另一个要分析的参数zkhst
zkhst 获取
经过调试得到下面这个结果,在定位的js
中有一个switch
控制流
在918
行,会进行一次判断,如果r = Object(s.f)("zkhst")
没有获取到值,会进入到Object(l.i)();
这个逻辑。如果有值会break
进入926
行的逻辑。
所以需要先把Object(s.f)("zkhst")
的值变为undefinde
,进入s.f
中,可以看到下面这段逻辑
h = function(t) {
t = document.cookie.match(new RegExp("(^| )".concat(t, "=([^;]*)(;|$)")));
return null != t ? decodeURIComponent(t[2]) : null
}
可以得到zkhst
是从cookie
中得出的,直接清除cookie
中的zkhst
就能进入生成的逻辑
所以清除浏览器缓存/cookie
顺利进入(l.i)()
,可以看到下面这串逻辑
并且在network
中也的到印证这个zkhst
是由页面请求返回得到的。
至此两个加密参数均已得到,就可以获取页面的数据了。
好了,今天的文章就到这里了,我们下次再会~
标签:逻辑,zkhst,进阶,Python,sign,header,token,参数,concat 来源: https://blog.51cto.com/15127522/2684980
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。