以下内容写于2023-12-28, 原链接为:https://fanyi.youdao.com/index.html#/
1 在输入框内输入hello world进行翻译,通过检查发出的网络请求可以看到翻译文字的http接口应该是:
2 复制下链接最后的路径,去js文件中搜索下:
可以看到这里是定义了一个函数B来做文字的翻译接口函数,查询附近的代码可以发现存在一个t["a"]的map, key为decodeData,value为函数R,在函数R处下断点,改变输入框的输入,发现代码在此处断下.查看断点内容:
记录此处t的值可以发现该参数的值为1中返回的值,那么可以得出结论该函数负责对翻译后返回的加密字符串做解密
3 分析函数R可以得出该函数需要三个参数,分别为密文t,加密key o, 和加密向量n, 加密key为:'ydsecret://query/key/B*RGygVywfNBwpmBaZg*WT7SIOUP2T0C9WHMZN39j^DAdaZhAnxvGcCY6VYFwnHl',加密向量:'ydsecret://query/iv/C@lZe2YzHtZ2CYgaXKSVfsb7Y4QWHjITPPZ0nQp87fBeJ!Iv6v^6fvi2WN@bYpJ4', 加密方法为aes-128-cbc, 编写js方法进行验证:
至此,解密成功,在python中我使用的execjs库进行js方法的调用,如果觉得麻烦的话也可以使用寻找python的加解密方法来进行替换以提高执行效率,这里博主省事直接使用crypto库进行加解密