獲取 google api tkk值以及 tk 值計(jì)算——純Python版

1. 獲取 tkk 值

吾愛破解上有朋友對(duì)https://translate.google.cn/網(wǎng)頁進(jìn)行分析來獲取tkk值,點(diǎn)這里

下面分享一個(gè) python 版獲取 ttk 值的代碼:

    def _get_token_key(self):
        if self.token_key is not None:
            return self.token_key

        response = requests.get("https://translate.google.com/")
        tkk_expr = re.search("(tkk:.*?),", response.text)
        if not tkk_expr:
            raise ValueError(
                "Unable to find token seed! Did https://translate.google.com change?"
            )

        tkk_expr = tkk_expr.group(1)
        try:
            # Grab the token directly if already generated by function call
            result = re.search("\d{6}\.[0-9]+", tkk_expr).group(0)
        except AttributeError:
            # Generate the token using algorithm
            timestamp = calendar.timegm(time.gmtime())
            hours = int(math.floor(timestamp / 3600))
            a = re.search("a\\\\x3d(-?\d+);", tkk_expr).group(1)
            b = re.search("b\\\\x3d(-?\d+);", tkk_expr).group(1)

            result = str(hours) + "." + str(int(a) + int(b))

        self.token_key = result
        return result

目前發(fā)現(xiàn)可用的 ttk 值有:
422392.71207223
406644.3293161072
431767.4042228602

2. 獲取 tk 值

完整版代碼如下:

# -*- coding: utf-8 -*-
import calendar
import math
import time
import requests
import re


class Token:

    SALT_1 = "+-a^+6"
    SALT_2 = "+-3^+b+-f"

    def __init__(self):
        self.token_key = None

    def calculate_token(self, text, seed=None):
        if seed is None:
            seed = self._get_token_key()

        [first_seed, second_seed] = seed.split(".")

        try:
            d = bytearray(text.encode('UTF-8'))
        except UnicodeDecodeError:
            # This will probably only occur when d is actually a str containing UTF-8 chars, which means we don't need
            # to encode.
            d = bytearray(text)

        a = int(first_seed)
        for value in d:
            a += value
            a = self._work_token(a, self.SALT_1)
        a = self._work_token(a, self.SALT_2)
        a ^= int(second_seed)
        if 0 > a:
            a = (a & 2147483647) + 2147483648
        a %= 1E6
        a = int(a)
        return str(a) + "." + str(a ^ int(first_seed))

    def _get_token_key(self):
        if self.token_key is not None:
            return self.token_key

        response = requests.get("https://translate.google.com/")
        tkk_expr = re.search("(tkk:.*?),", response.text)
        if not tkk_expr:
            raise ValueError(
                "Unable to find token seed! Did https://translate.google.com change?"
            )

        tkk_expr = tkk_expr.group(1)
        try:
            # Grab the token directly if already generated by function call
            result = re.search("\d{6}\.[0-9]+", tkk_expr).group(0)
        except AttributeError:
            # Generate the token using algorithm
            timestamp = calendar.timegm(time.gmtime())
            hours = int(math.floor(timestamp / 3600))
            a = re.search("a\\\\x3d(-?\d+);", tkk_expr).group(1)
            b = re.search("b\\\\x3d(-?\d+);", tkk_expr).group(1)

            result = str(hours) + "." + str(int(a) + int(b))

        self.token_key = result
        return result

    """ Functions used by the token calculation algorithm """
    def _rshift(self, val, n):
        return val >> n if val >= 0 else (val + 0x100000000) >> n

    def _work_token(self, a, seed):
        for i in range(0, len(seed) - 2, 3):
            char = seed[i + 2]
            d = ord(char[0]) - 87 if char >= "a" else int(char)
            d = self._rshift(a, d) if seed[i + 1] == "+" else a << d
            a = a + d & 4294967295 if seed[i] == "+" else a ^ d
        return a
        

if __name__ == '__main__':
    token=Token()
    text="ruirui ai weiwei"
    print("text:",text)
    print("tk:",token.calculate_token(text))

懂JS的朋友可以參考嵌入JS版python代碼:

import execjs
import requests

class Py4Js():
    
    def __init__(self):
        self.ctx = execjs.compile("""
        function TL(a) {
        var k = "";
        var b = 422392;
        var b1 = 71207223;
        /*422392.71207223*/
        /*406644.3293161072*/
        /*431767.4042228602*/
        
        var jd = ".";
        var $b = "+-a^+6";
        var Zb = "+-3^+b+-f";
    
        for (var e = [], f = 0, g = 0; g < a.length; g++) {
            var m = a.charCodeAt(g);
            128 > m ? e[f++] = m : (2048 > m ? e[f++] = m >> 6 | 192 : (55296 == (m & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (m = 65536 + ((m & 1023) << 10) + (a.charCodeAt(++g) & 1023),
            e[f++] = m >> 18 | 240,
            e[f++] = m >> 12 & 63 | 128) : e[f++] = m >> 12 | 224,
            e[f++] = m >> 6 & 63 | 128),
            e[f++] = m & 63 | 128)
        }
        a = b;
        for (f = 0; f < e.length; f++) a += e[f],
        a = RL(a, $b);
        a = RL(a, Zb);
        a ^= b1 || 0;
        0 > a && (a = (a & 2147483647) + 2147483648);
        a %= 1E6;
        return a.toString() + jd + (a ^ b)
    };
    
    function RL(a, b) {
        var t = "a";
        var Yb = "+";
        for (var c = 0; c < b.length - 2; c += 3) {
            var d = b.charAt(c + 2),
            d = d >= t ? d.charCodeAt(0) - 87 : Number(d),
            d = b.charAt(c + 1) == Yb ? a >>> d: a << d;
            a = b.charAt(c) == Yb ? a + d & 4294967295 : a ^ d
        }
        return a
    }
    """)
        
    def getTk(self,text):
        return self.ctx.call("TL",text)

if __name__ == '__main__':
    js = Py4Js()
    text="ruirui ai weiwei"
    print("text:",text)
    print("tk:",js.getTk(text))

最后分享一個(gè)不需要tk值的google translate接口(感謝評(píng)論區(qū)朋友分享

http://translate.google.cn/translate_a/single?client=gtx&dt=t&ie=UTF-8&oe=UTF-8&sl=auto&tl=en&q=%E6%83%8A%E5%96%9C
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末眠饮,一起剝皮案震驚了整個(gè)濱河市疮薇,隨后出現(xiàn)的幾起案子仰美,更是在濱河造成了極大的恐慌赴叹,老刑警劉巖弓千,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件齿诞,死亡現(xiàn)場離奇詭異酸休,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)祷杈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門斑司,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人但汞,你說我怎么就攤上這事宿刮。” “怎么了特占?”我有些...
    開封第一講書人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵糙置,是天一觀的道長。 經(jīng)常有香客問我是目,道長谤饭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮揉抵,結(jié)果婚禮上亡容,老公的妹妹穿的比我還像新娘。我一直安慰自己冤今,他們只是感情好闺兢,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著戏罢,像睡著了一般屋谭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上龟糕,一...
    開封第一講書人閱讀 52,337評(píng)論 1 310
  • 那天桐磁,我揣著相機(jī)與錄音,去河邊找鬼讲岁。 笑死我擂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缓艳。 我是一名探鬼主播校摩,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼阶淘!你這毒婦竟也來了衙吩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤舶治,失蹤者是張志新(化名)和其女友劉穎分井,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霉猛,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年珠闰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惜浅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伏嗜,死狀恐怖坛悉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情承绸,我是刑警寧澤裸影,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站军熏,受9級(jí)特大地震影響轩猩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一均践、第九天 我趴在偏房一處隱蔽的房頂上張望晤锹。 院中可真熱鬧,春花似錦彤委、人聲如沸鞭铆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽车遂。三九已至,卻和暖如春斯辰,著一層夾襖步出監(jiān)牢的瞬間舶担,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來泰國打工椒涯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柄沮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓废岂,卻偏偏與公主長得像祖搓,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子湖苞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

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

  • 前言 Python的創(chuàng)始人為Guido van Rossum拯欧。1989年圣誕節(jié)期間,在阿姆斯特丹财骨,Guido為了打...
    依依玖玥閱讀 3,572評(píng)論 6 37
  • 首先, 什么是Python? 用python作者Guido van Rossum自己的話來說镐作,Python是這樣的...
    大禹編程扛把子閱讀 350評(píng)論 0 1
  • 關(guān)掉窗簾、關(guān)掉電視隆箩、關(guān)掉燈光该贾,我在一片黑暗中感覺無比透亮。 或許這一刻心是潮濕的捌臊,是需要一架烘干機(jī)的杨蛋。不過,我卻很...
    愛花公子閱讀 187評(píng)論 0 3
  • 說起歷史上的老大帝國寇荧,很多人的第一印象,就是號(hào)稱“日不落帝國”的大英帝國(British Empire)执隧! 清朝道...
    冷眼觀史閱讀 2,320評(píng)論 5 27
  • 我覺得生活很美好 我貪戀著 卻又時(shí)常覺得毫無意義 我聽著舒緩的音樂 讓腦海變得澄亮清透 又雀躍 我時(shí)而憂傷 歡欣 ...
    陌雨萱閱讀 226評(píng)論 0 1