2023 js逆向爬虫 有道翻译 代码

前置条件: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 jsonpath

print("=" * 12)
print("有道翻译v1.0")
print("=" * 12)

while 1:
    ch_value = input("请输入待翻译的内容 ==> ")
    # 发送请求 - sign
    time1 = 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; [email protected]; 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("")

你可能感兴趣的:(爬虫,js,python)