有道翻译最新JavaScript和python逆向实现(2024)

1.分析有道翻译数据包

2.利用python 构造请求资源

3 建立python request请求

4.分析请求数据中的sign

经过断点分析,找出sign参数的加密算法

5.经过分析,参数是利用MD5进行加密算法,利用javascript脚本进行实现

function encrypt1() {
    var e=new Date().getTime().toString();
   // var key = "1720581446941";
//var key = '1234567890123456';var z='1719908491399'
    const d = "fanyideskweb"
     , u = "webfanyi"
     , p = "client,mysticTime,product"
     , m = "1.0.0"
     , h = "web"
     , g = "fanyi.web"   
     , f = 1
     , b = 1
     , v = 1
     , A = "wifi"
     , y = 0
     , t="fsdsogkndfokasodnaso";
    var data=`client=${d}&mysticTime=${e}&product=${u}&key=${t}`;
    var sign=CryptoJS.MD5(data).toString();
    console.log(sign)
    //e="1720581446941"
    var data={
        code:sign,
        timestamp:e
    }
    return data;
}

6.利用数据包对相应数据进行解密

 

 7.经过对解密算法的分析,利用Javascript对返回数据进行解密实现

function decodetext1(context){
    let decodeIv="ydsecret://query/key/B*RGygVywfNBwpmBaZg*WT7SIOUP2T0C9WHMZN39j^DAdaZhAnxvGcCY6VYFwnHl";
   let Iv=crypto.createHash('md5').update(decodeIv).digest();
//    let Buf1=Buffer.alloc(16,Iv);
   let decodeKey="ydsecret://query/iv/C@lZe2YzHtZ2CYgaXKSVfsb7Y4QWHjITPPZ0nQp87fBeJ!Iv6v^6fvi2WN@bYpJ4";
   let key=crypto.createHash('md5').update(decodeKey).digest();
//    var Buf2=Buffer.alloc(16,key);
//    console.log(Buf1);
//    console.log(Buf2);
const  code=crypto.createDecipheriv('aes-128-cbc',Iv,key);
//  console.log(code);

let l = code.update(context, "base64", "utf-8");
l += code.final("utf-8");
   //console.log(l);
return l;

 8.最终通过python调用JavaScript函数的方式,完成逆向实现

import requests

import chardet
import subprocess
import execjs

 
def testJs():
	with open("youdiao.js",'r') as f:
		js=execjs.compile(f.read())
		
	res=js.call('encrypt1')
	return res
    

datares=testJs()
print(datares['code'])
print(str(datares['timestamp']))
cookies = {
    'OUTFOX_SEARCH_USER_ID_NCOO': '821713325.8217375',
    'OUTFOX_SEARCH_USER_ID': '1798672782@116.130.208.116',
    'DICT_DOCTRANS_SESSION_ID': 'NDU0M2E2MGEtNDAwYi00OTdhLTkzZDEtNjMxMDdhZmQ4YWU0',
}

headers = {
    'Accept': 'application/json, text/plain, */*',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Connection': 'keep-alive',
    'Content-Type': 'application/x-www-form-urlencoded',
    # 'Cookie': 'OUTFOX_SEARCH_USER_ID_NCOO=821713325.8217375; OUTFOX_SEARCH_USER_ID=1798672782@116.130.208.116; DICT_DOCTRANS_SESSION_ID=NDU0M2E2MGEtNDAwYi00OTdhLTkzZDEtNjMxMDdhZmQ4YWU0',
    'Origin': 'https://fanyi.youdao.com',
    'Referer': 'https://fanyi.youdao.com/',
    'Sec-Fetch-Dest': 'empty',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Site': 'same-site',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
    'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
}

data = {
    'i': 'pretty',
    'from': 'auto',
    'to': '',
    'useTerm': 'false',
    'dictResult': 'true',
    'keyid': 'webfanyi',
    'sign': str(datares['code']),
    'client': 'fanyideskweb',
    'product': 'webfanyi',
    'appVersion': '1.0.0',
    'vendor': 'web',
    'pointParam': 'client,mysticTime,product',
    'mysticTime': str(datares['timestamp']),
    'keyfrom': 'fanyi.web',
    'mid': '1',
    'screen': '1',
    'model': '1',
    'network': 'wifi',
    'abtest': '0',
    'yduuid': 'abcdefg',
}

response = requests.post('https://dict.youdao.com/webtranslate', cookies=cookies, headers=headers, data=data,verify=False)
context=response.text
print(context)
with open("youdiao.js",'r',encoding='utf-8') as f:		
	js=execjs.compile(f.read())
	print(js)
	res=js.call('aaa',response.text)
print(res)

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值