-
Notifications
You must be signed in to change notification settings - Fork 13
/
youDaoTranslate.js
68 lines (64 loc) · 2 KB
/
youDaoTranslate.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
const crypto = require("crypto");
/*
console.log(await youDaoTranslate("秋风不燥,时光不老,岁月静好,你我都好"));
{
"code": 0,
"dictResult": {},
"translateResult": [
[
{
"tgt": "The autumn wind is not dry, time is not old, years are quiet, you and I are good",
"src": "秋风不燥,时光不老,岁月静好,你我都好",
"srcPronounce": "qiū fēng bù zào, shí guāng bù lăo, suì yuè jìng hăo, nĭ wŏ dōuhăo"
}
]
],
"type": "zh-CHS2en"
}
*/
async function youDaoTranslate(text) {
const getMd5YD = function (e) {
return crypto.createHash("md5").update(e.toString()).digest("hex")
}
const getSignYD = function (o, e) {
return getMd5YD(`client=fanyideskweb&mysticTime=${o}&product=webfanyi&key=${e}`);
}
const o = (new Date).getTime();
const e = "fsdsogkndfokasodnaso";
const bodyJson = {
i: text,
from: "auto",
to: "",
dictResult: true,
keyid: "webfanyi",
sign: getSignYD(o, e),
client: "fanyideskweb",
product: "webfanyi",
appVersion: "1.0.0",
vendor: "web",
pointParam: "client,mysticTime,product",
mysticTime: o,
keyfrom: "fanyi.web",
mid: 1,
screen: 1,
model: 1,
network: "wifi",
abtest: 0,
yduuid: "abcdefg",
}
const res = await fetch("https://dict.youdao.com/webtranslate", {
"headers": {
"content-type": "application/x-www-form-urlencoded",
"Referer": "https://fanyi.youdao.com/",
"cookie": "OUTFOX_SEARCH_USER_ID_NCOO=1; [email protected]"
},
"body": new URLSearchParams(bodyJson).toString(),
"method": "POST"
});
const resBase64 = await res.text();
const key = Buffer.from("08149da73c59ce62555b01e92f34e838", "hex")
const iv = Buffer.from("d2bb1bfde83b38c344366357b79cae1c", "hex");
const r = crypto.createDecipheriv("aes-128-cbc", key, iv);
let s = r.update(resBase64, "base64", "utf-8");
return s += r.final("utf-8")
}