百度翻譯接口實(shí)例解析

繼《百度翻譯最新接口破解》發(fā)出之后贺纲,很多朋友反饋請(qǐng)求始終是 998 的問題
這里特地單獨(dú)寫一篇實(shí)例來解析

關(guān)于 token 和 gtk 參數(shù)的獲取以及 sign 參數(shù)加密校驗(yàn)的過程請(qǐng)參考《百度翻譯最新接口破解

本實(shí)例采用 Python3 進(jìn)行編寫

獲取 token 和 gtk 代碼如下

# 請(qǐng)求頭非常重要幌缝,在請(qǐng)求 fanyi.baidu.com 這個(gè)頁面的時(shí)候需要傳遞
# 筆者測(cè)試時(shí)發(fā)現(xiàn)备典,如果不傳遞的話百度也會(huì)返回 token 和 gtk,但是此時(shí)返回的值是無法正確請(qǐng)求到翻譯結(jié)果的
header = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36",
    "Cookie": "'locale=zh; BAIDUID=FC2689968A662FA6104AA311FE89635B:FG=1; from_lang_often=%5B%7B%22value%22%3A%22en%22%2C%22text%22%3A%22%u82F1%u8BED%22%7D%2C%7B%22value%22%3A%22zh%22%2C%22text%22%3A%22%u4E2D%u6587%22%7D%5D; REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; to_lang_often=%5B%7B%22value%22%3A%22zh%22%2C%22text%22%3A%22%u4E2D%u6587%22%7D%2C%7B%22value%22%3A%22en%22%2C%22text%22%3A%22%u82F1%u8BED%22%7D%5D'",
}

# 獲取網(wǎng)頁源碼
html = requests.get('http://fanyi.baidu.com', headers=header)
html.encoding = 'utf-8'

# 正則匹配 gtk
matches = re.findall("window.gtk = '(.*?)';", html.text, re.S)
for match in matches:
    gtk = match

if gtk == "":
    print('Get gtk fail.')
    exit()

print('gtk = ' + gtk)

# 正則匹配 token
matches = re.findall("token: '(.*?)'", html.text, re.S)
for match in matches:
    token = match

if token == "":
    print('Get token fail.')
    exit()

print('token = ' + token)

獲取到 token 和 gtk 之后艰赞,我們需要對(duì)待翻譯的內(nèi)容進(jìn)行加密佣谐,這一步中返回的 sign 可以在百度的翻譯頁面中進(jìn)行校驗(yàn),查看對(duì)錯(cuò)與否

# 計(jì)算 sign
signCode = 'function a(r,o){for(var t=0;t<o.length-2;t+=3){var a=o.charAt(t+2);a=a>="a"?a.charCodeAt(0)-87:Number(a),a="+"===o.charAt(t+1)?r>>>a:r<<a,r="+"===o.charAt(t)?r+a&4294967295:r^a}return r}var C=null;var hash=function(r,_gtk){var o=r.length;o>30&&(r=""+r.substr(0,10)+r.substr(Math.floor(o/2)-5,10)+r.substr(-10,10));var t=void 0,t=null!==C?C:(C=_gtk||"")||"";for(var e=t.split("."),h=Number(e[0])||0,i=Number(e[1])||0,d=[],f=0,g=0;g<r.length;g++){var m=r.charCodeAt(g);128>m?d[f++]=m:(2048>m?d[f++]=m>>6|192:(55296===(64512&m)&&g+1<r.length&&56320===(64512&r.charCodeAt(g+1))?(m=65536+((1023&m)<<10)+(1023&r.charCodeAt(++g)),d[f++]=m>>18|240,d[f++]=m>>12&63|128):d[f++]=m>>12|224,d[f++]=m>>6&63|128),d[f++]=63&m|128)}for(var S=h,u="+-a^+6",l="+-3^+b+-f",s=0;s<d.length;s++)S+=d[s],S=a(S,u);return S=a(S,l),S^=i,0>S&&(S=(2147483647&S)+2147483648),S%=1e6,S.toString()+"."+(S^h)}'

source = '今天天氣怎么樣'
sign = execjs.compile(signCode).call('hash', source, gtk)
print('source = ' + source + ', sign = ' + sign)

有了 token 和 sign方妖,我們就可以開始構(gòu)建請(qǐng)求了
先來看一個(gè)可以正常返回結(jié)果的請(qǐng)求
http://fanyi.baidu.com/v2transapi?from=zh&to=en&query=%E4%BB%8A%E5%A4%A9%E5%A4%A9%E6%B0%94%E6%80%8E%E4%B9%88%E6%A0%B7&transtype=translang&simple_means_flag=3&sign=719145.924184&token=187678c6ec320a5f5e4e0620799970e5
其中的參數(shù)在《百度翻譯最新接口破解》中已經(jīng)進(jìn)行說明狭魂,from 和 to 可以由用戶輸入,query 的加密使用的 URLEncode,python 中實(shí)現(xiàn)的代碼是 urllib.parse.quote('需要翻譯的內(nèi)容')

接下來非常重要的是雌澄,千萬不要使用 POST 請(qǐng)求 http://fanyi.baidu.com/v2transapi 這個(gè)接口斋泄,會(huì)返回 998,會(huì)返回 998镐牺,會(huì)返回 998
具體原因不太清楚
我們需要做的是炫掐,按照正常的請(qǐng)求地址拼接一個(gè)我們需要的鏈接,然后 everything is ok~

請(qǐng)求代碼如下

# 請(qǐng)求接口
fromLanguage = 'zh'
toLanguage = 'en'

v2transapi = 'http://fanyi.baidu.com/v2transapi?from=%s&to=%s&query=%s' \
             '&transtype=translang&simple_means_flag=3&sign=%s&token=%s' % (fromLanguage, toLanguage, urllib.parse.quote(source), sign, token)
print(v2transapi)

translate_result = requests.get(v2transapi, headers=header)
print(translate_result.text)

根據(jù)上面提供的 3 段代碼大家應(yīng)該可以正常獲取返回結(jié)果睬涧,廢話不說了卒废,源碼點(diǎn)此下載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市宙地,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逆皮,老刑警劉巖宅粥,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異电谣,居然都是意外死亡秽梅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門剿牺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來企垦,“玉大人,你說我怎么就攤上這事晒来〕睿” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵湃崩,是天一觀的道長荧降。 經(jīng)常有香客問我,道長攒读,這世上最難降的妖魔是什么朵诫? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮薄扁,結(jié)果婚禮上剪返,老公的妹妹穿的比我還像新娘。我一直安慰自己邓梅,他們只是感情好脱盲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著日缨,像睡著了一般宾毒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天诈铛,我揣著相機(jī)與錄音乙各,去河邊找鬼。 笑死幢竹,一個(gè)胖子當(dāng)著我的面吹牛耳峦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播焕毫,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蹲坷,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了邑飒?” 一聲冷哼從身側(cè)響起循签,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疙咸,沒想到半個(gè)月后县匠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撒轮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年乞旦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片题山。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兰粉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出顶瞳,到底是詐尸還是另有隱情玖姑,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布慨菱,位于F島的核電站客峭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏抡柿。R本人自食惡果不足惜舔琅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望洲劣。 院中可真熱鬧备蚓,春花似錦、人聲如沸囱稽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽战惊。三九已至流昏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背况凉。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工谚鄙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刁绒。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓闷营,卻偏偏與公主長得像,于是被迫代替她去往敵國和親知市。 傳聞我的和親對(duì)象是個(gè)殘疾皇子傻盟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 本文只做技術(shù)交流,若有冒犯請(qǐng)告知我撤除 百度翻譯不知道啥時(shí)候開始轉(zhuǎn)向收費(fèi)的形式嫂丙,開發(fā)者可以免費(fèi)享受200w字符/月...
    HONGQUAN閱讀 29,657評(píng)論 32 17
  • 以前跟啤,很多人學(xué)習(xí)Python爬蟲的第一個(gè)爬蟲就是爬的有道翻譯诽表,但是現(xiàn)在由于有道翻譯進(jìn)行了參數(shù)加密,增加了反爬機(jī)制腥光,...
    sexy_cyber閱讀 1,589評(píng)論 0 0
  • 破解有道翻譯反爬蟲機(jī)制 web端的有道翻譯,在之前是直接可以爬的糊秆。也就是說只要獲取到了他的接口武福,你就可以肆無忌憚的...
    編程小蟬閱讀 6,114評(píng)論 10 28
  • 一、 逗逗愛看風(fēng)景 大約十點(diǎn)多我和逗逗站在陽臺(tái)痘番,我的手圍繞著小小的逗逗捉片,想一直抱著不松開,窗外一眼看過去滿眼的...
    逗逗的媽媽姚蘭閱讀 342評(píng)論 0 0
  • 各位親戚: 你們好汞舱!有些話一直想對(duì)你們說伍纫,可是當(dāng)面說出來會(huì)怕你們面子上過不去,因此用這種方式向你們表達(dá)昂芜,希...
    高溫若寒的堅(jiān)持閱讀 634評(píng)論 0 0