前置条件:nodejs环境、安装 crypto 和 python3环境
js.js文件:
const crypto = require("crypto")function decode(resp_data) {g_o = 'ydsecret://query/key/B*RGygVywfNBwpmBaZg*WT7SIOUP2T0C9WHMZN39j^DAdaZhAnxvGcCY6VYFwnHl'g_n = 'ydsecret://query/iv/C@lZe2YzHtZ2CYgaXKSVfsb7Y4QWHjITPPZ0nQp87fBeJ!Iv6v^6fvi2WN@bYpJ4'const g_o_1 = new Uint8Array(crypto.createHash('md5').update(g_o).digest())const g_n_1 = new Uint8Array(crypto.createHash('md5').update(g_n).digest())const cipher = crypto.createDecipheriv('aes-128-cbc', g_o_1, g_n_1)let s = cipher.update(resp_data, 'base64', 'utf-8')s += cipher.final("utf-8")return s
}
python代码
import json
import time
from hashlib import md5
import requests
import execjs
from jsonpath import jsonpathprint("=" * 12)
print("有道翻译v1.0")
print("=" * 12)while 1:ch_value = input("请输入待翻译的内容 ==> ")# 发送请求 - signtime1 = int(time.time() * 1000)s1 = f'client=fanyideskweb&mysticTime={time1}&product=webfanyi&key=fsdsogkndfokasodnaso'obj = md5()# 要加密的内容,必须传入字节obj.update(s1.encode('utf-8'))sign = obj.hexdigest()url = "https://dict.youdao.com/webtranslate"headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36','referer': 'https://fanyi.youdao.com/','origin': 'https://fanyi.youdao.com','cookie': 'OUTFOX_SEARCH_USER_ID_NCOO=648817392.8377072; OUTFOX_SEARCH_USER_ID=-1140685951@47.109.4.40; hb_MA-B0D8-94CBE089C042_source=www.baidu.com'}data = {"i": ch_value,"from": "auto","to": "auto","domain": 0,"dictResult": "true","keyid": "webfanyi","sign": sign,"client": "fanyideskweb","product": "webfanyi","appVersion": "1.0.0","vendor": "web","pointParam": "client,mysticTime,product","mysticTime": str(time1),"keyfrom": "fanyi.web"}resp = requests.post(url=url, data=data, headers=headers)# 解密with open('./js.js') as f:js_code = f.read()js = execjs.compile(js_code)ret = js.call("decode", resp.text)translateResult_tgt = jsonpath(json.loads(ret), '$..translateResult..tgt')[0]print("翻译的结果 ==> ", translateResult_tgt, sep='')print("")