Python爬虫进阶必备 | 关于某电商网站的加密请求头 if-none-match 的分析

建议收藏 | 最全的 JS 逆向入门教程合集

目标网站

aHR0cHM6Ly94aWFwaS54aWFwaWJ1eS5jb20vc2VhcmNoP2tleXdvcmQ9JUU3JTk0JUI3JUU3JUFCJUE1JUU0JUI4JThBJUU4JUExJUEz

先来看看这个网站需要分析的加密是什么?

这次的网站例子来自「咸鱼的Python交流群」,一个群友遇到之后发到群里的。【图1-1】

图1-1

在这个网站搜索商品的时候会出现请求头if-none-match,之前咸鱼的很多例子都没有写到如何分析请求头的加密参数应该如何分析,所以拿这个例子大概讲讲。

定位加密

按照之前的套路,想到的第一步是搜索if-none-match,搜索的结果非常具有迷惑性。【图2-1】

图2-1

打开这个文件,直接检索if-none-match没有找到命中项,但是搜索If-None-Match,可以看到有相关的命中项的。【图2-2】

图2-2

不过咸鱼试过在这里打上断点,重新加载没有断上,初步判断不是这里生成了这个请求头参数。

所以这里尝试使用Xhr断点的方式分析。【图2-3】

图2-3

打上这个断点之后,重新加载页面。【图2-4】

图2-4

可以在这里看到t的值中就包含了我们需要的请求头if-none-match,所以可以猜测在这个 xhr 断点之前就已经完成了这个值的生成。

所以这里可以先在这个 xhr 断点前下一个断点之后暂时取消 xhr 断点。【图2-5】

图2-5

到这里之后我们直接单步调试,可以看到下面这段逻辑【图2-6】

图2-6

可以看到有写入请求头的位置了,我们分别打上断点,逐一分析是不是想要的内容。

经过分析可以看到在代码中有一段在字典中赋值的操作,并且这里也找到了加密的字段名。【图2-7】

图2-7

所以上面就是加密字段的加密位置。

分析加密

找到加密位置之后进一步分析加密的逻辑,可以看到这个加密的逻辑非常简单,结合上下文的代码可以看到这里拼接了字符串i.a + "-" + u("" + i.a + u(t) + i.a),这里反复调用的u也可以在上面找到。未知的就只有ti.a

通过分析可以看到这里的i.a就是固定的字符串55b03【图3-1】

图3-1

这里的开头和抓包中的值的开头一样。【图3-2】

图3-2

找到i.a之后,再回头看看这里的t,就是传入的参数,没有什么特殊的地方。

加密很简单直接带入 Python 实现的加密即可。【图3-3】

图3-3

Love & Share 

[ 完 ]


©著作权归作者所有:来自51CTO博客作者mob604756e9577d的原创作品,如需转载,请注明出处,否则将追究法律责任