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; 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("")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值