js逆向_百度翻译

在上一篇 爬取有道翻译 的基础上来进行本次百度翻译的破解

前面步骤不变,就不在赘述了。

直接跳到找fromdata里的sign元素

前面分析可以知道 变的只有sign和token,token可以直接获取,使用我们重点放在sign
在这里插入图片描述
同样的先全局查找,在逐个分析,然后内部查找,最后逐步分析到上图所示,打断点运行,发现e就是传入的word,把光标放在L上,点击上面提示的f进行跳转
在这里插入图片描述
我们把这个函数体直接复制下来,存储到js文件中`,然后用import execjs库对其进行分析,就可以得到sign的值

import execjs
def getSign(word):
    with open("baidufanyi.js", "r", encoding='utf8') as f:
        jscode = f.read()
    sign = execjs.compile(jscode).call('e', word)
    return sign

但是我们要把js里的内容补齐,否则会一直报错未定义,还需要一个i和一个函数n,读者可以自己尝试找一下。
在这里插入图片描述
最后附完整代码

import requests
import execjs

def getSign(word):
    with open("baidufanyi.js", "r", encoding='utf8') as f:
        jscode = f.read()
    sign = execjs.compile(jscode).call('e', word)
    return sign


def request(word):
    url = "https://fanyi.baidu.com/v2transapi?from=en&to=zh"

    headers = {
        'Accept': '*/*',
        'Accept-Encoding': 'gzip, deflate, br',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Connection': 'keep-alive',
        'Content-Length': '136',
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
        'Cookie': 'BIDUPSID=602A11E252B731A9757622309C3F89E5; PSTM=1626349844; BAIDUID=602A11E252B731A9D017D8914C6CF71D:FG=1; __yjs_duid=1_70ff7d08f671b7667da8a108172284571626349912834; REALTIME_TRANS_SWITCH=1; HISTORY_SWITCH=1; FANYI_WORD_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; BAIDUID_BFESS=602A11E252B731A9D017D8914C6CF71D:FG=1; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; delPer=0; PSINO=3; H_PS_PSSID=34644_34067_34549_33848_34600_34584_26350_34627_34420_34469_34691; BA_HECTOR=21ah212l852l808lab1gkd6ij0q; BCLID=7900992051927074863; BDSFRCVID=2PLOJexroG0YyxOHO7bjhKIR3_weG7bTDYLtOwXPsp3LGJLVJeC6EG0Pts1-dEu-EHtdogKKLgOTHULF_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF=tR3aQ5rtKRTffjrnhPF3Dl8TXP6-hnjy3bRkX4nvWpAbHRcdyUrCDp4Wbttf5q3RymJJ2-39LPO2hpRjyxv4y4Ldj4oxJpOJ-bCL0p5aHl51fbbvbURvX--g3-7PWU5dtjTO2bc_5KnlfMQ_bf--QfbQ0hOhqP-jBRIE3-oJqCDhMC-93D; BCLID_BFESS=7900992051927074863; BDSFRCVID_BFESS=2PLOJexroG0YyxOHO7bjhKIR3_weG7bTDYLtOwXPsp3LGJLVJeC6EG0Pts1-dEu-EHtdogKKLgOTHULF_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF_BFESS=tR3aQ5rtKRTffjrnhPF3Dl8TXP6-hnjy3bRkX4nvWpAbHRcdyUrCDp4Wbttf5q3RymJJ2-39LPO2hpRjyxv4y4Ldj4oxJpOJ-bCL0p5aHl51fbbvbURvX--g3-7PWU5dtjTO2bc_5KnlfMQ_bf--QfbQ0hOhqP-jBRIE3-oJqCDhMC-93D; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1631951765,1631951802,1631952172,1632016982; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1632016982; __yjs_st=2_M2I0MjI3ZTEwM2UyZjAwZDJhYjljMDdhNGFiNDhkZTg0OWNmZjZjNDI1ZDAwZmUxZDllNDkyYjczOWE5NzhkYjY0ZmE2NjdhMDkzZGNmMmJlODQ1MjcwOWQwOTBiY2E5YTA0MmZiNGQyYzU1NDgwYTIzZTVkNWZmMjUxNDViZjRiNGU0OWY3MmYwZTUxNmFmODRmMzJhN2JhN2RjNDY2YmU4ZGEyZDA2M2JhZWUzMjRiZThjNzI0NDU4OWRkZDhmYjdhZDdiZWRiMmJiY2IzMmM1NmI0YjBmMjBlNjA5M2E4NjQ4ZGM4ZmU2MDVkMzM0NzMzMjI4YTk4MTBhMmFlNV83XzllYzQwNTlj; ab_sr=1.0.1_NmU4Y2M3NGRiY2U3YWFiZjlkNDNjMjI2YjZkN2YwNTYyNDc2OTEyY2ZkY2FhZTJjMzU4YjVlZjk5NDZmZDMxOWRmZTJkMzM0YmNkNTY1MGI2MWFiMDEzMjRiY2FhNWRlZTFjN2Y2OTg0OTBlMjFhYzBlYmM1MDMzNzBlYmJkMmFmYzNhZjVhOGM4YmE2ODdjN2U4NmQ5MjE5Y2NiM2E4ZQ==',
        'Host': 'fanyi.baidu.com',
        'Origin': 'https://fanyi.baidu.com',
        'Referer': 'https://fanyi.baidu.com/translate?aldtype=16047&query=&keyfrom=baidu&smartresult=dict&lang=auto2zh',
        'sec-ch-ua': '"Google Chrome";v="93", " Not;A Brand";v="99", "Chromium";v="93"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Windows"',
        'Sec-Fetch-Dest': 'empty',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Site': 'same-origin',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36',
        'X-Requested-With': 'XMLHttpRequest'
    }

    sign = getSign(word)

    data = {
        'from': 'en' if word[0].upper() in ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'
                                            , 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
                                            'W', 'X', 'Y', 'Z'] else 'zh',
        'to': 'zh' or 'en',
        'query': word,
        'transtype': 'realtime',
        'simple_means_flag': 3,
        'sign': sign,  # '63766.268839'
        'token': 'ceef41c83fe0d714278e1d1dca80a510',
        'domain': 'common'
    }

    response = requests.post(url, headers=headers, data=data).json()
    print(response['trans_result']['data'][0]['dst'])

if __name__ == '__main__':
    word = input("请输入翻译元素:")
    request(word)

js的文件自己找找看。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独角兽小马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值