有道翻译爬虫 js逆向

1.抓包分析

1.1打开 https://fanyi.youdao.com/ 打开F12抓包 接口为post请求 筛选一下
在这里插入图片描述

经过对比可以看到字段 salt sign lts 变化 ,经过分析可以得到salt lts为时间戳 区别只是长度之间的差别

2.逆向分析

2.1 ctrl+shift+f全局搜索sign 可以找到fanyi.min.js文件

在这里插入图片描述
2.2 进入js文件 输入sign 经过筛选可以找到疑似md5加密 打个断点在网页重新输入需要翻译的字段

在这里插入图片描述
2.3 可以看到js是使用md5加密 这里采用拼接即可
在这里插入图片描述

2.4 拿到图1.1的post请求data,用字符串拼接一下代码:

salt: 16589335746912
sign: 5614d4985a3a4e0f7fc78bbedc3522f8
lts: 1658933574691

keyword = 'cat'
time = '16589335746912'
str = 'fanyideskweb'+ keyword + str(time) + 'Ygy_4c=r#e#4EX^NUGUc5'
md5.update(str.encode("utf8"))
sign = md5.hexdigest()
print(sign)

完整代码如下:

import hashlib,requests,time
md5 = hashlib.md5()



def down(keyword,sign,lts,salt):
    url = 'https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
    headers = {
        'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.134 Safari/537.36 Edg/103.0.1264.71',
        'referer':'https://fanyi.youdao.com/',
        'cookie':'OUTFOX_SEARCH_USER_ID_NCOO=353057625.3046742; OUTFOX_SEARCH_USER_ID="242904760@10.105.137.203"; STUDY_SESS="42X+/0fQWO+PwZUs00HRb1Vc7OQtcOUmYi80326RJ9ThslfAR4KE/GhXLZCaYaVctoFBOCkE65ii+mJSpr4/sZK2WMhDg5A/z7iTmHO4xts2IU//wxoQxryqwc+QZyW2CM2DPabcGHI6x/L+re8MzguyV48liOelpnOvyb70J28Lhur2Nm2wEb9HcEikV+3FTI8+lZKyHhiycNQo+g+/oA=="; STUDY_INFO="oP4xHuAVkAf0MVwZBnwP6Jbwhy1c|6|1436746713|1658768068557"; DICT_SESS=v2|tZ4iqRJ_NWQzO4UmOLlM0lm0MkM0MOY0lEkfTynHqu0zYhMlm0Mg40JzOfTyh4g40gZhfTZ0Hlf0gukMpBkLey0lfOLgLOfYm0; DICT_LOGIN=1||1658768068628; fanyi-ad-id=308216; fanyi-ad-closed=0; ___rl__test__cookies=1658937677747',
    }
    data = {
        'i': keyword,
        'from': 'AUTO',
        'to': 'AUTO',
        'smartresult': 'dict',
        'client': 'fanyideskweb',
        'salt': salt,
        'sign': sign,
        'lts': lts,
        'bv': '8b6c8845a74df59c1f2be6165a6104b5',
        'doctype': 'json',
        'version': '2.1',
        'keyfrom': 'fanyi.web',
        'action': 'FY_BY_REALTlME',
    }
    res = requests.post(url,headers=headers,data=data)
    return res


if __name__ == '__main__':
    # salt: 16589335746912
    # sign: 5614d4985a3a4e0f7fc78bbedc3522f8
    # lts: 1658933574691

    keyword = 'dog'
    lts = str(int(time.time() * 1000))
    salt = lts + str(1)
    str = 'fanyideskweb' + keyword + str(salt) + 'Ygy_4c=r#e#4EX^NUGUc5'
    md5.update(str.encode("utf8"))
    sign = md5.hexdigest()
    # print(sign)
    res = down(keyword,sign,lts,salt).text
    print(res)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值