大家好,距离上次分享js逆向案例
已经有一个月了,在这期间每次在快要揭秘出来时、整理文章的时发现某乎的加密又又又更新了、、、,导致近期长时间没有更新文章了。同时也收到了很多童鞋的催更,这里说一下哈,并不是我忘记了,或者懈怠了,只是一直在从头逆向某乎而已、、、为了继续更新逆向100例
,我决定先暂停某乎的文章输出,等稳定了在案例一下,不然今天扣的代码明天又不能用了、、、,还是先分享其他平台的案例吧,这里就不多说了哈!!!
今天的案例对象是有道在线翻译,如果有同学想做一个类似划词翻译的浏览器插件的,或者开发一个vscode
插件练手,可以通过本次分享get
到一些经验。
为了照顾刚入门童鞋,文章每一步的分析过程尽可能的详细(有经验的同学可以选择感兴趣的地方快速预览)
下面会进行以下几步进行分析(下方演示过程全部使用chrome
浏览器);
python
爬虫结果演示;浏览器f12
,打开调试面板,翻译窗口里输入内容后触发接口如下图:
高能总结:
1.勾选上图1.
处的Preserve log
,原因方便我们比对两次请求都有哪些字段是变化的,通常变化的字段就特别需要留意的,很有里面很有可能是加密字段。有的接口每次输入完之后页面的url
内容也跟着变导致页面刷新,如果不勾选的话,会很难比对每次请求变化的内容。(有道的这个貌似并不会导致页面刷新,所以本次勾不勾看不出效果,可以去知乎的搜索试试这个方法就很明显了);
2.通常比对变化字段的地方有上图中的3.
处的Payload
和Headers
两个地方;
有经验的童鞋可能一眼就能猜出来大概那些是加密字段。
通过上面的比对,发现每次变化的字段有4
个,分别是:salt|sign|lts|bv
, headers中本次没有发现可疑字段。其中加密字段感觉有两个sign&bv
,如下图:
大概的字段已经锁定,接下来就分析这俩字段;
老规矩,先查询一下sign
字段出现的位置,流程如下图:
把所有对sign
字段赋值的地方都打上断点,如上图:
输入内容,断点捕获,如下图,很容易发现salt|sign|lts|bv
值是怎么来的,
因此,
ts
: 13位的时间戳
salt
:ts+1位随机数
bv
: md5(navigator.appVersion)
sign
: md5("fanyideskweb" + 要翻译的内容 + salt + "Ygy_4c=r#e#4EX^NUGUc5")
其它字段都是除了要翻译的内容字段i都是定值;
高能总结:
1.md5
加密算法可能会被重写,我们需要先确保md5
有没有被改写,可以先去网上在线加密一下,看看和调试的时候是否相同,如果不同还需要我们把对应md5
加密代码扣出来,这里巧了,验证后没有被改写,所以我就不单独演示扣md5
了;
到这里关键字段基本算是理论破解完成了,是不是很简单!!!
如何快速的写python
代码呢?这里推荐一个工具网站: 爬虫工具库,演示一下如何使用这个库,
在接口上右键,拷贝cURL
,如下图:
打开这个链接 爬虫工具库,粘贴到这个curl转requests
这里,如下图:
右侧会立即呈现对应python
代码,复制出来,可直接运行,是不是很快就有了对应的python
文件!
拿到转化后的python
代码之后,我们还需要进行改造,把对应加密的东西给补上,就成了哦!
下面看结果演示:
有道逆向到此完!
下一节预计分享webpack逆向的案例!!!
后期会持续分享爬虫案例-100例,不想自己造轮子的同学可加入我的知识星球,有更多惊喜、技巧、高能总结等你哦!!!;