js逆向解析之百度翻譯案例

2022-07-09 12:18:16 字數 2502 閱讀 8569

js逆向解析即通過呼叫對方的js加密函式來獲取正確的加密資料

js逆向解析需要安裝js開發環境node.js和execjs模組

有兩個檔案,乙個py檔案存放主程式,和乙個js檔案存放從瀏覽器中找到的生成js加密資料的js**

兩個檔案需在同乙個資料夾中。

*.py py檔案

import requests    # 需安裝

import execjs # pip install pyexecjs 用於執行js**

import jsonpath # 需安裝

# 1、開啟js檔案,使用js**生成js加密資料

with open('sign.js', 'r') as f:

js_sign = f.read()

# 2、編譯

exe_sign = execjs.compile(js_sign)

# 3、呼叫js函式生成加密資料

self.sign = exe_sign.call('e', self.zh)

def fanyi(self, zh):

# 翻譯

self.zh = zh

self.get_sign()

self.formdata['query'] = self.zh

self.formdata['sign'] = self.sign

res = requests.post(self.url, data=self.formdata, headers=self.head)

pydict = res.json()

try:

dst = jsonpath.jsonpath(pydict, '$..text')[0] # 單詞

except:

dst = jsonpath.jsonpath(pydict, '$..dst')[0] # 句子

print(f"英文翻譯為:\n")

if i < n - 1:

y = input(f"你還有次機會,繼續嗎?(y/n)\n")

if y in ['n', 'n']:

break

else:

print("機會已經用完,請重新啟動...")

input("請按任意鍵...")

time.sleep(1.5)

print("\n本次服務到此結束!")

*.js檔案

function n(r, o) 

return r

}function e(r) else

u = "320305.131321201";

for (var d = u.split("."), m = number(d[0]) || 0, s = number(d[1]) || 0, s = , c = 0, v = 0; v < r.length; v++)

for (var p = m, f = "" + string.fromcharcode(43) + string.fromcharcode(45) + string.fromcharcode(97) + ("" + string.fromcharcode(94) + string.fromcharcode(43) + string.fromcharcode(54)), d = "" + string.fromcharcode(43) + string.fromcharcode(45) + string.fromcharcode(51) + ("" + string.fromcharcode(94) + string.fromcharcode(43) + string.fromcharcode(98)) + ("" + string.fromcharcode(43) + string.fromcharcode(45) + string.fromcharcode(102)), b = 0; b < s.length; b++)

p += s[b],

p = n(p, f);

return p = n(p, d),

p ^= s,

0 > p && (p = (2147483647 & p) + 2147483648),

p %= 1e6,

p.tostring() + "." + (p ^ m)

}

百度翻譯介面例項解析

本例項採用python3進行編寫 獲取 token 和 gtk 如下 請求頭非常重要,在請求 fanyi.baidu.com 這個頁面的時候需要傳遞 header 獲取網頁原始碼 html requests.get headers header html.encoding utf 8 正則匹配 gt...

尋找百度翻譯引數,實現百度翻譯

author runsen 首先要分析瀏覽器是怎麼傳送請求的。構造請求 找到關鍵請求之後,就要分析請求,然後去構造請求。分析請求有一下幾個要素,url,請求方法,請求頭,請求引數。請求引數有七個,可以通過反覆請求然後比較的方法得出from,to是表示翻譯語言的,transtype,means fla...

access百度翻譯 get 我的百度翻譯

為了便於使用,寫了乙個簡單但夠用的使用者介面,它長這個樣子 在左邊輸入英文按下回車後,右邊就會顯示翻譯結果了。這個東西只是單純的顯示翻譯結果,像音標 發音 中英文對照等功能都沒有,而且編輯不方便 如提供乙個 按鈕來清空 不過,其中的一些是api本身不支援 如文字轉語音 另外的如加音標 方便操作的功能...