wykxldz

@

目录

    首先打开Google translate的界面:
    Google translate
    F12
    找到包含我们所需要的信息的Request
    request
    这个request返回的是一个json文件
    这个api的地址为:https://translate.google.com/translate_a/single?client=t&sl=en&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&source=bh&ssel=0&tsel=0&kc=1&tk=723628.888571&q=translate

    param
    此处的q的键值就是待翻译的字符串
    tk也是一个重要的参数,它的获取比较复杂,但是也是有方法的,此处用python:

    import execjs
    
    #js解析得到tk值
    
    class Py4Js():
        def __init__(self):
            self.ctx = execjs.compile("""
            function TL(a) {
            var k = "";
            var b = 406644;
            var b1 = 3293161072;
    
            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)
    

    不做详细解释,看了某位大神的优秀操作,但是忘记收藏了,有兴趣可以自己解读代码。

    分类:

    技术点:

    相关文章:

    • 2021-06-23
    • 2021-12-29
    • 2021-12-23
    • 2021-12-04
    • 2021-12-12
    • 2021-12-23
    • 2022-01-02
    猜你喜欢
    • 2021-11-04
    • 2021-11-05
    • 2019-02-16
    • 2021-12-03
    • 2021-11-23
    • 2021-11-30
    相关资源
    相似解决方案