百度翻譯最新接口破解

翻譯接口

本文只做技術(shù)交流,若有冒犯請(qǐng)告知我撤除

百度翻譯不知道啥時(shí)候開(kāi)始轉(zhuǎn)向收費(fèi)的形式攘蔽,開(kāi)發(fā)者可以免費(fèi)享受200w字符/月的福利
廢話少說(shuō),入主題

先看看以前的接口
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=realtime&simple_means_flag=3

參數(shù)分析

參數(shù)名 參數(shù)解釋
from 要翻譯的原文語(yǔ)種
to 翻譯結(jié)果的目標(biāo)語(yǔ)種
query 要翻譯的內(nèi)容
transtype 翻譯類(lèi)型(該參數(shù)目前發(fā)現(xiàn)有 realtime 和 translang 兩種,我們使用 realtime 即可)
simple_means_flag 未知

接口更新后上述鏈接會(huì)返回如下內(nèi)容

舊版返回結(jié)果

出現(xiàn)錯(cuò)誤碼 998渡蜻,這里暫時(shí)不對(duì)錯(cuò)誤碼進(jìn)行解釋
我們重新看看新的接口
通過(guò) Chrome Dev Tools 可以看到,新的請(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=3a1ae6d96bdd2a8e0f2eb367cb23cb83

除了原有的5個(gè)參數(shù)之外计济,新增了兩個(gè)參數(shù)

參數(shù)名 參數(shù)解釋
sign 簽名(如:719145.924184)
token 請(qǐng)求令牌(如:3a1ae6d96bdd2a8e0f2eb367cb23cb83)

對(duì)谷歌翻譯接口有研究的大神應(yīng)該不難發(fā)現(xiàn)茸苇,sign 的加密后的值與 Google 的翻譯加密后的值非常類(lèi)似,趕緊看看唄

回到 Chrome Dev Tools沦寂,觀察新的請(qǐng)求發(fā)現(xiàn)翻譯頁(yè)面界面總共加載了 8 個(gè) JavaScript 文件学密,其中最值得我們注意的就是 index_a6525c5.js 該文件了,不要問(wèn)我為什么传藏,男人的直覺(jué)

根據(jù)翻譯接口 v2transapi 可以查到一段迷之代碼

langIsDeteced: function(t, a, n, r) {
    if (null !== t) {
        var s = $(".select-from-language .language-selected").attr("data-lang"),
        o = $(".select-to-language .language-selected").attr("data-lang"),
        l = null;
        r && !c.get("fromLangIsAuto") && s !== t ? l = i.processOcrLang(t, s, o) : (e.show(t, s), l = i.getLang(t, s, o)),
        u.show();
        var g = this,
        a = this.processQuery(a),
        d = {
            from: l.fromLang,
            to: l.toLang,
            query: a,
            transtype: n,
            simple_means_flag: 3,
            sign: h(a),
            token: window.common.token
        };
        this.translateXHR && 4 !== this.translateXHR.readyState && this.translateXHR.abort(),
        this.translateXHR = $.ajax({
            type: "POST",
            url: "/v2transapi",
            cache: !1,
            data: d
        }).done(function(t) {
            c.set("isInRtTransState", !0),
            g.translateSuccess(t, l.fromLang, l.toLang, a)
        })
    }
}

很明顯可以看出就是翻譯的核心代碼腻暮,其中 token 的值直接通過(guò) window.common.token 獲取即可,稍微要費(fèi)點(diǎn)心思的就是 sign 的值漩氨,通過(guò) h(a) 獲取的
其中 a 是傳入的待翻譯的內(nèi)容西壮,那么很容易猜到 h() 這個(gè)函數(shù)會(huì)返回 719145.924184 類(lèi)似這樣的結(jié)果,并且多次嘗試發(fā)現(xiàn)叫惊,a 的值固定的情況下款青,h() 的返回值也是固定的,這樣也方便大家測(cè)試

因?yàn)榇a加密過(guò)霍狰,需要男人的直覺(jué)給我們更多的指引..
看這段代碼

define("translation:widget/translate/input/pGrab",
function(r, o, t) {
    "use strict";
    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
    }
    function n(r) {
        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,
        n = "" + String.fromCharCode(103) + String.fromCharCode(116) + String.fromCharCode(107);
        t = null !== C ? C: (C = window[n] || "") || "";
        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 = "" + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(97) + ("" + String.fromCharCode(94) + String.fromCharCode(43) + String.fromCharCode(54)), l = "" + 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)), 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)
    }
    var C = null;
    t.exports = n
});;

返回的結(jié)果中有一段 S.toString() + "." + (S ^ h)抡草,與我們期望的加密值結(jié)構(gòu)非常類(lèi)似

嗯,其實(shí)這段代碼就是加密的核心代碼蔗坯,有興趣的朋友可以詳細(xì)理解康震,這里就不多說(shuō)啦
我已經(jīng)將加密的代碼單獨(dú)整理出來(lái),大家直接調(diào)用即可

這里再啰嗦一下宾濒,加密過(guò)程中需要用到一個(gè)名為 gtk 的參數(shù)腿短,該值直接通過(guò) window.gtk 即可獲取,可以獲取網(wǎng)頁(yè)源碼后通過(guò) regex 匹配該值,這個(gè)值是可以重復(fù)使用的橘忱,不需要每次調(diào)用赴魁,所以再初始化的時(shí)候獲取到即可

好啦,不啰嗦了钝诚,加密源碼奉上
https://www.devtool.top/upload/2018/01/u5kr8hdmtgikjqpi8ta7q00sqr.zip
后續(xù)會(huì)有更多有趣的內(nèi)容和大家分享討論颖御,如果覺(jué)得對(duì)你有幫助的話點(diǎn)下關(guān)注~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市凝颇,隨后出現(xiàn)的幾起案子潘拱,更是在濱河造成了極大的恐慌织阅,老刑警劉巖逢防,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異宠哄,居然都是意外死亡垫蛆,警方通過(guò)查閱死者的電腦和手機(jī)盔腔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)月褥,“玉大人,你說(shuō)我怎么就攤上這事瓢喉∧啵” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵栓票,是天一觀的道長(zhǎng)决左。 經(jīng)常有香客問(wèn)我,道長(zhǎng)走贪,這世上最難降的妖魔是什么佛猛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮坠狡,結(jié)果婚禮上继找,老公的妹妹穿的比我還像新娘。我一直安慰自己逃沿,他們只是感情好婴渡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著凯亮,像睡著了一般边臼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上假消,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天柠并,我揣著相機(jī)與錄音,去河邊找鬼。 笑死臼予,一個(gè)胖子當(dāng)著我的面吹牛鸣戴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瘟栖,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼葵擎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了半哟?” 一聲冷哼從身側(cè)響起酬滤,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寓涨,沒(méi)想到半個(gè)月后盯串,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡戒良,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年体捏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糯崎。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡几缭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沃呢,到底是詐尸還是另有隱情年栓,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布薄霜,位于F島的核電站某抓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏惰瓜。R本人自食惡果不足惜否副,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望崎坊。 院中可真熱鬧备禀,春花似錦、人聲如沸流强。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)打月。三九已至队腐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間奏篙,已是汗流浹背柴淘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工迫淹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人为严。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓敛熬,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親第股。 傳聞我的和親對(duì)象是個(gè)殘疾皇子应民,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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

  • @synthesize和@dynamic分別有什么作用诲锹?@property有兩個(gè)對(duì)應(yīng)的詞,一個(gè)是 @synthes...
    筆筆請(qǐng)求閱讀 515評(píng)論 0 1
  • (開(kāi)始) (標(biāo)題)iApc(/標(biāo)題)(鏈接)https://duming666.wodemo.net/down/2...
    獨(dú)名閱讀 1,541評(píng)論 1 3
  • 【Aipm引導(dǎo)頁(yè)】 https://58976235.wodemo.net/down/20170514/44034...
    Mr_洛寒閱讀 2,580評(píng)論 3 5
  • 曾經(jīng)在海底的山巒 仰望著白云與天空 做了一個(gè)長(zhǎng)長(zhǎng)的夢(mèng) 魚(yú)群失散貝殼成石 你奮力向上再向上 把行走的淙淙光陰 累積成...
    斯人會(huì)閱讀 462評(píng)論 0 0
  • 你的苦沒(méi)人知道涉馅,別人也沒(méi)有義務(wù)聽(tīng)著你的抱怨归园,所以請(qǐng)戒掉你的抱怨…… 相信我們的身邊都有這么一群人,一點(diǎn)風(fēng)吹草動(dòng)都能...
    清風(fēng)又藍(lán)閱讀 513評(píng)論 8 10