解决「Google 翻译」改版后,访问及翻译 速度很慢很迟钝的问题!

前段时间为了解决 Google 翻译 的翻译结果选择列表及其翻译结果溢出屏幕的问题,我写了个油猴脚本,结果刚公开分享脚本,一个星期后 Google 翻译 就改版了,而新的样式解决了溢出问题,但是又出现了一个新问题

不知道是不是巧合,这个毛病很早就有了,早不修复晚不修复,偏偏我忍无可忍自己研究修复后,Google 翻译就修复了这问题。。。

那就是每次访问及翻译时都会请求 google.com,然而国内是无法访问这个网站的,所以导致使用体验很糟糕,翻译非常迟钝!

给大家提供两个解决办法!


屏蔽请求

如果你浏览器安装的有任意一个广告屏蔽扩展,那么可以在自定义屏蔽规则中添加:

www.google.com/js/bg/*.js$script,domain=translate.google.cn

我也不清楚这个 js 文件是干嘛的,但是屏蔽后依然可以正常翻译、朗读等!


URL 重定向

安装一个 URL 重定向浏览器扩展,把请求中的 google.com 重定向为 google.cn

扩展下载:

我用的是 URLRedirector(URL重定向)扩展。

不会离线安装 .crx 扩展?可以看看这个文章:


扩展配置:

点击扩展图标 - :gear: 按钮,进入扩展配置页面。

4

点击如下图所示的加号
3

如下图所示填写后,点击 [确认] 按钮,最后务必点击网页右上角的 [保存] 按钮。

# 原始地址
https://www.google.com/js/bg/(.*).js
# 目标地址
https://www.google.cn/js/bg/$1.js


额外说一个重定向配置,可能有人会需要:

部分使用 Google recaptcha 人机验证服务的网站还在用旧 URL,也可以替换一下解决!

# 原始地址
www.google.com/recaptcha
# 目标地址
recaptcha.net/recaptcha
3 Likes

我说怎么最近用谷歌翻译觉得很慢,难道是因为这个?

因为「Google 翻译」新版每次访问、翻译时都会优先请求 google.com ,页面就会一直等待请求完成,多次失败后才会跳过请求显示页面。

所以你就会发现不管是访问还是翻译,都反应很慢。

果然是.

https://www.google.com/js/bg/xzlXmyP2KpvZepfBreWIls0InmNJ8I1NmCIwo5PV7gY.js

这个被屏蔽后, 访问速度马上快了很多.

经过我的实验, 用广告过滤的方式, 屏蔽以下3个url可以有效加快谷歌翻译的加载速度.

www.google.com/js/bg/xzlXmyP2KpvZepfBreWIls0InmNJ8I1NmCIwo5PV7gY.js

ogs.google.com/widget/app/so?origin=https%3A%2F%2Ftranslate.google.cn&cn=app&pid=269&spid=51&hl=zh-CN

apis.google.com/_/scs/abc-static/_/js/k=gapi.gapi.en.40L1XIQnUK4.O/m=gapi_iframes,googleapis_client/rt=j/sv=1/d=1/ed=1/rs=AHpOoo87VqKnhJy5DXHDJekiAyngLi-Q2w/cb=gapi.loaded_0

虽然我也不清楚这个 js 文件是干嘛的。

「Google 翻译」改版后,除了修复溢出屏幕 BUG 和这个问题以外,还很莫名其妙的把网页内的所有 Class、id 随机命名,连这个 js 文件名也是随机的(我昨天写这个文章的时候,才发现这个 js 文件名是会变的,又给改成正则表达式匹配了)

我屏蔽之后觉得没什么问题. 不影响翻译.

感觉比重定向更快一些.

那你记得用正则表达式匹配 URL,因为这个 js 文件名是随机的,会变的。

至于速度,差别不大,google.cn 是国内服务器,毫秒级别的加载速度。

很奇怪,一般来说只有广告元素才会去用随机文件名、Class、id 的,「Google 翻译」不知道怎么想的,把所有元素名称都随机了。。。

我本来认为是会变的,不过我发现我的url跟你的是一模一样, 我感觉起码近期不会变. 如果不行就把后面用*代替.

简单粗暴点, 大力出奇迹 :rofl:

而且我发现屏蔽这几个url之后, 好多网站的速度都加速了, 比如小众. 真不戳啊…O(∩_∩)O哈哈~

我昨天写这个文章的时候,也是突然发现重定向失效了(一开始我也是只匹配完整 URL)。
于是检查了下发现 URL 变了,于是给改成正则表达式了。

不清楚 js 文件名随机间隔是什么,这种毫无规律的文件名都是随机生成的,正常的 js 文件应该是规范命名的(特别是大公司、大网站)。

你屏蔽 URL 用的是哪个扩展?

只要支持自己输入url的. 我觉得哪一款广告过滤扩展都行.

我目前用adguard

另外,我还发现一个问题

我用国外线路访问 https://translate.google.cn/

是不加载这些随机命名js的.

image

我去查看一下js的代码. 看看到底是做什么的.

你一说我才想起来广告过滤扩展也可以屏蔽 URL。。。

另外,不知道发什么神经,谷歌翻译会一直通过 xmlhttprequest 请求 play.google.com/log?format=json&hasfast=true

如果把他屏蔽了,网页就会无限请求。。。

我看了一下代码, 函数名称全都无意义化, 既有创建框架,也有生成object, 还有无数嵌套.

很像是对编码的转换, 但是国外线路完全不会载入这个路径的任何内容, 也没有类似的js代码.

具体有什么作用,我也看不太懂,分享给大家,看懂的回复下.


(function() {
    var P = function(Z, t) {
        try {
            Zk(Z, t, this)
        } catch(z) {
            E(this, z)
        }
    },
    Y = (P.prototype.T = function(Z, t, z, p, a) {
        if (this.Y) Z(this.Y);
        else try {
            a = [],
            p = !this.b.length,
            w(this, [U, a, z]),
            w(this, [v, Z, a]),
            t && !p || B(t, this, true)
        } catch(N) {
            E(this, N),
            Z(this.Y)
        }
    },
    []),
    F = this || self,
    y = function(Z) {
        isNaN(Z) || (Z >> 3).toString(16)
    },
    m,
    u = [],
    e = function(Z, t, z, p, a, N) {
        if (Z.K == Z) for (a = Z.l(t), 46 == t ? (t = function(J, X, Q, k) {
            if (X = ((Q = a.length, Q) | 0) - 4 >> 3, a.o6 != X) {
                X = (X << (k = [0, 0, N[1], (a.o6 = X, N[2])], 3)) - 4;
                try {
                    a.zH = M(k, sE(a, X), sE(a, (X | 0) + 4))
                } catch(G) {
                    throw G;
                }
            }
            a.push(a.zH[Q & 7] ^ J)
        },
        N = Z.l(164)) : t = function(J) {
            a.push(J)
        },
        p && t(p & 255), Z = 0, p = z.length; Z < p; Z++) t(z[Z])
    },
    ty = function(Z, t, z, p, a, N) {
        return function() {
            if (Z.K == Z) {
                var J = [W, z, p, void 0, a, N, arguments],
                X = t & 1;
                if (t & 2) var Q = (w(Z, J), B)(false, Z, false);
                else X ? (X = !Z.b.length, w(Z, J), X && B(false, Z, false)) : Q = NT(J, Z);
                return Q
            }
        }
    },
    b = function(Z, t, z, p) {
        if (Z.i) return Z.P(Z.V);
        return (p = c(Z, (z = (p = Z.l(109), p >> 3), p)), Z.R != z >> 3 && (Z.R = z >> 3, t = Z.l(188), Z.Km = M([0, 0, t[1], t[2]], Z.iM, Z.R)), p) ^ Z.Km[z % 8]
    },
    v = [],
    zO = F.requestIdleCallback ?
    function(Z) {
        requestIdleCallback(function() {
            Z()
        },
        {
            timeout: 4
        })
    }: F.setImmediate ?
    function(Z) {
        setImmediate(Z)
    }: function(Z) {
        setTimeout(Z, 0)
    },
    c = function(Z, t) {
        if (t >= Z.g) throw h(Z, 31),
        Z.a;
        return K(109, Z, (t | 0) + 8),
        Z.N[t >> 3]
    },
    E = (m = P.prototype,
    function(Z, t) {
        Z.Y = ("E:" + t.message + ":" + t.stack).slice(0, 2048)
    }),
    L = function(Z, t) {
        return (t = b(Z), t) & 128 && (t = t & 127 | b(Z) << 7),
        t
    },
    W = [],
    x = function(Z, t, z) {
        return K(109, Z, (iY((((y((z = Z.l(109), t)), y)(z), Z.N) && z < Z.g ? (K(109, Z, Z.g), pa(Z, t)) : K(109, Z, t), Z)), z)),
        Z.l(185)
    },
    Jy = function(Z, t, z) {
        if (t = typeof Z, "object" == t) if (Z) {
            if (Z instanceof Array) return "array";
            if (Z instanceof Object) return t;
            if ((z = Object.prototype.toString.call(Z), "[object Window]") == z) return "object";
            if ("[object Array]" == z || "number" == typeof Z.length && "undefined" != typeof Z.splice && "undefined" != typeof Z.propertyIsEnumerable && !Z.propertyIsEnumerable("splice")) return "array";
            if ("[object Function]" == z || "undefined" != typeof Z.call && "undefined" != typeof Z.propertyIsEnumerable && !Z.propertyIsEnumerable("call")) return "function"
        } else return "null";
        else if ("function" == t && "undefined" == typeof Z.call) return "object";
        return t
    },
    d = function(Z, t, z, p) {
        for (p = (z = [], (t | 0) - 1); 0 <= p; p--) z[(t | 0) - 1 - (p | 0)] = Z >> 8 * p & 255;
        return z
    },
    Xm = ((m.B = (P.prototype.P = function(Z) {
        return (Z = Z().shift(), this.i().length || this.V().length) || (this.V = this.i = void 0),
        Z
    },
    35), m).m = "caller",
    function(Z) {
        Z.iM = c(Z, Z.l(109)) << 24 | c(Z, Z.l(109)) << 16 | c(Z, Z.l(109)) << 8 | c(Z, Z.l(109)),
        Z.R = void 0
    }),
    $E = (P.prototype.VA = function(Z, t, z, p) {
        try {
            p = Z[((t | 0) + 2) % 3],
            Z[t] = (Z[t] | 0) - (Z[((t | 0) + 1) % 3] | 0) - (p | 0) ^ (1 == t ? p << z: p >>> z)
        } catch(a) {
            throw a;
        }
    },
    function(Z, t) {
        if (! (t = null, Z = F.trustedTypes, Z) || !Z.createPolicy) return t;
        try {
            t = Z.createPolicy("bg", {
                createHTML: r,
                createScript: r,
                createScriptURL: r
            })
        } catch(z) {
            F.console && F.console.error(z.message)
        }
        return t
    }),
    sE = function(Z, t) {
        return Z[t] << 24 | Z[(t | 0) + 1] << 16 | Z[(t | 0) + 2] << 8 | Z[(t | 0) + 3]
    },
    r = function(Z) {
        return Z
    },
    Qc = [],
    K = function(Z, t, z) {
        if (109 == Z || 96 == Z) if (t.o[Z]) t.o[Z][t.A](z);
        else t.o[Z] = t.xy(z);
        else if (192 != Z && 46 != Z && 67 != Z && 82 != Z && 164 != Z || !t.o[Z]) t.o[Z] = t.S(z, t.l);
        188 == Z && Xm(t)
    },
    w = function(Z, t) {
        Z.b.splice(0, 0, t)
    },
    aU = function(Z, t, z, p, a, N) {
        for (N = (t = ((p = (z = {},
        b)(Z), z.I = b(Z), z).v = [], Z.K == Z ? (b(Z) | 0) - 1 : 1), a = b(Z), 0); N < t; N++) z.v.push(b(Z));
        for (z.Z = Z.l(a), z.W = Z.l(p); t--;) z.v[t] = Z.l(z.v[t]);
        return z
    },
    pa = function(Z, t) { (Z.u.push(Z.o.slice()), Z.o)[109] = void 0,
        K(109, Z, t)
    },
    q = function(Z, t) {
        for (t = []; Z--;) t.push(255 * Math.random() | 0);
        return t
    },
    h = function(Z, t, z, p, a) {
        if ((z = ((p = (((a = Z.l(96) >> 3, t = [t, a >> 8 & 255, a & 255], void 0) != p && t.push(p), 0) == Z.l(82).length && (Z.o[82] = void 0, K(82, Z, t)), ""), z) && (z.message && (p += z.message), z.stack && (p += ":" + z.stack)), Z.l(97)), 3) < z) {
            Z.K = (t = (p = (z -= ((p = p.slice(0, (z | 0) - 3), p).length | 0) + 3, EE)(p.replace(/\\r\\n/g, "\\n")), Z).K, Z);
            try {
                e(Z, 46, d(p.length, 2).concat(p), 12)
            } finally {
                Z.K = t
            }
        }
        K(97, Z, z)
    },
    Pi = false,
    Zk = function(Z, t, z, p, a) {
        for (z.C = !(z.O = (z.S = (z.f = [],
        function(N, J, X, Q, k, G) {
            return ((k = (G = (Q = this, X = function() {
                return X[(Q.B | 0) + (G[Q.m] === J | 0) - !k[Q.m]]
            },
            function() {
                return X()
            }), Q.U), G)[Q.A] = function(l) {
                X[Q.s] = l
            },
            G)[Q.A](N),
            N = G
        }), z.i = void 0, (z.j = (a = 0, false), z).X = 0, p = [], z.xy = function(N, J, X) {
            return (J = function() {
                return N
            },
            X = function() {
                return J()
            },
            X)[this.A] = function(Q) {
                N = Q
            },
            X
        },
        ((z.V = void 0, z).G = 0, z).H = 0, 25), 1); 128 > a; a++) p[a] = String.fromCharCode(a); (w(z, (w(z, [Y, ((z.g = (K(111, (K(126, (K(92, (K(46, z, (K(187, (K(164, z, [0, 0, (K(82, (K(227, z, (K((K(210, (z.D = (K(83, (K(119, z, ((K(41, (K((K(84, z, ((a = (K((K(161, z, (K(174, (K(59, (K(19, z, (K(97, (K(217, (K(67, (K(192, (K(180, (K(102, (K(218, ((K(185, (K(222, (K(231, z, (K(214, z, (z.h = (z.b = (K(32, z, ((K(77, (K(229, (K(51, (K(152, (K(42, z, (K(96, (K(109, (((z.Yy = function(N) {
            this.K = N
        },
        z).o = [], z).J = (z.K = z, []), z), 0), z), 0),
        function(N, J, X, Q, k) { (J = (Q = (X = (X = (k = b((J = b(N), N)), Q = b(N), b(N)), N.l(X)), k = N.l(k), N.l(Q)), N.l(J)), 0 !== J) && (X = ty(N, 1, Q, X, J, k), J.addEventListener(k, X, Pi), K(144, N, [J, k, X]))
        })), z),
        function(N, J, X, Q) { (J = (Q = (X = b((Q = (J = b(N), b(N)), N)), N).l(Q), N.l(J)), K)(X, N, J[Q])
        }), z), 0), z),
        function(N, J) {
            A(false, N, true) || (J = aU(N), K(J.I, N, J.W.apply(J.Z, J.v)))
        }), z),
        function(N, J, X, Q, k, G) {
            if (!A(true, N, true)) {
                if ((N = (G = (J = (k = (G = (X = b((J = (k = b(N), b(N)), N)), b(N)), N.l(k)), N.l(J)), N.l(G)), N.l(X)), "object") == Jy(k)) {
                    for (Q in X = [], k) X.push(Q);
                    k = X
                }
                for (X = (N = 0 < (Q = k.length, N) ? N: 1, 0); X < Q; X += N) J(k.slice(X, (X | 0) + (N | 0)), G)
            }
        }), K)(197, z,
        function(N) {
            kE(4, N)
        }),
        function(N, J, X) {
            0 != (X = b((J = b(N), N)), X = N.l(X), N.l(J)) && K(109, N, X)
        })), K(144, z, 0), []), false),
        function(N) {
            N.M(3)
        })),
        function(N, J, X, Q, k) {
            for (k = (J = (X = L((Q = b(N), N)), []), 0); k < X; k++) J.push(b(N));
            K(Q, N, J)
        })), z),
        function(N) {
            N.$(4)
        }), z), {}), K)(157, z,
        function(N) {
            kE(1, N)
        }), z),
        function(N, J, X, Q, k, G, l) {
            if (l = (X = b(N), G = L(N), ""), N.o[44]) for (J = N.l(44), k = 0, Q = J.length; G--;) k = ((k | 0) + (L(N) | 0)) % Q,
            l += p[J[k]];
            else for (; G--;) l += p[b(N)];
            K(X, N, l)
        }), z),
        function(N, J, X, Q, k, G, l, D, R, I, H, C, n) {
            for (C = (Q = (H = (I = b(N), R = 0),
            function(V, f) {
                for (; H < V;) R |= b(N) << H,
                H += 8;
                return H -= (R >>= (f = R & (1 << V) - 1, V), V),
                f
            }), n = (Q(3) | 0) + 1, Q(5)), l = [], D = k = 0; D < C; D++) J = Q(1),
            l.push(J),
            k += J ? 0 : 1;
            for (D = (k = ((k | 0) - 1).toString(2).length, 0), X = []; D < C; D++) l[D] || (X[D] = Q(k));
            for (D = 0; D < C; D++) l[D] && (X[D] = b(N));
            for (G = (D = n, []); D--;) G.push(N.l(b(N)));
            K(I, N,
            function(V, f, S, T, O) {
                for (T = (O = 0, f = [], []); O < C; O++) {
                    if (! (S = X[O], l)[O]) {
                        for (; S >= f.length;) f.push(b(V));
                        S = f[S]
                    }
                    T.push(S)
                }
                V.i = V.S(G.slice(), (f = V.P, f)),
                V.V = V.S(T, f)
            })
        }), z),
        function(N, J, X, Q) { (J = (Q = (X = b(N), b)(N), b(N)), K)(J, N, N.l(X) || N.l(Q))
        }), z), [165, 0, 0]), z), []), z),
        function(N, J, X, Q) {
            X = b((J = b(N), N)),
            Q = b(N),
            K(Q, N, N.l(J) >> X)
        }), z), 2048),
        function(N, J, X, Q) { (X = (Q = b((X = b(N), J = b(N), N)), J = N.l(J), N.l(X) == J), K)(Q, N, +X)
        })), z),
        function(N, J, X, Q, k) { (Q = (k = b((X = b(N), N)), b)(N), N.K == N) && (k = N.l(k), J = N.l(X), Q = N.l(Q), J[k] = Q, 188 == X && (N.R = void 0, 2 == k && Xm(N)))
        }), z),
        function() {}),
        function(N, J, X, Q, k, G, l) {
            A(false, N, true) || (k = aU(N), J = k.W, Q = k.Z, X = k.v, G = X.length, 0 == G ? l = new Q[J] : 1 == G ? l = new Q[J](X[0]) : 2 == G ? l = new Q[J](X[0], X[1]) : 3 == G ? l = new Q[J](X[0], X[1], X[2]) : 4 == G ? l = new Q[J](X[0], X[1], X[2], X[3]) : h(N, 22), K(k.I, N, l))
        })), 4), z, 113), window.performance || {}), z).bM = a.timeOrigin || (a.timing || {}).navigationStart || 0,
        function(N, J, X, Q) {
            if (X = N.u.pop()) {
                for (J = b(N); 0 < J; J--) Q = b(N),
                X[Q] = N.o[Q];
                X[97] = (X[82] = N.o[82], N.o)[97],
                N.o = X
            } else K(109, N, N.g)
        })), 110), z,
        function(N, J, X) {
            K((X = b((J = b(N), N)), X), N, "" + N.l(J))
        }), z),
        function(N, J, X, Q) { (J = (Q = (Q = b(N), X = b(N), N).l(Q), N.l(X)), K)(X, N, J + Q)
        }), z).u = [], z)), z),
        function(N, J) { (N = (J = b(N), N.l(J)), N)[0].removeEventListener(N[1], N[2], false)
        }), false), z.R6 = function(N, J) {
            J.push(N[0] << 24 | N[1] << 16 | N[2] << 8 | N[3]),
            J.push(N[4] << 24 | N[5] << 16 | N[6] << 8 | N[7]),
            J.push(N[8] << 24 | N[9] << 16 | N[10] << 8 | N[11])
        },
        z),
        function(N, J) {
            pa(N, (y((J = N.l(b(N)), J)), J))
        }), 165), z,
        function(N, J, X) {
            A(false, N, true) || (X = b(N), J = b(N), K(J, N,
            function(Q) {
                return eval(Q)
            } (GO(N.l(X)))))
        }), F)), z), []), 0)]), z),
        function(N) {
            N.M(4)
        }), q(4))), z),
        function(N, J, X, Q, k) {
            K((X = (Q = b((X = b((J = b(N), N)), N)), k = b(N), k = N.l(k), Q = N.l(Q), N).l(X), J), N, ty(N, k, X, Q))
        }), z),
        function(N, J, X) { (J = (J = (X = b((J = b(N), N)), N.l(J)), Jy)(J), K)(X, N, J)
        }), z),
        function(N, J, X, Q) {
            K((X = (J = b((X = b(N), Q = b(N), N)), N.l(X)), Q = N.l(Q), J), N, X in Q | 0)
        }), 0), z).N = [], t)]), [u, Z.UT])), B)(Z.F, z, true)
    },
    M = function(Z, t, z, p) {
        try {
            for (p = 0; 79669387488 != p;) t += (z << 4 ^ z >>> 5) + (z | 0) ^ (p | 0) + (Z[p & 3] | 0),
            p += 2489668359,
            z += (t << 4 ^ t >>> 5) + (t | 0) ^ (p | 0) + (Z[p >>> 11 & 3] | 0);
            return [t >>> 24, t >> 16 & 255, t >> 8 & 255, t & 255, z >>> 24, z >> 16 & 255, z >> 8 & 255, z & 255]
        } catch(a) {
            throw a;
        }
    },
    g = (m.s = 36, []),
    NT = ((m.A = "toString", P.prototype.AP = function() {
        return b(this)
    },
    m).a = {},
    P.prototype.a6 = function(Z, t, z) {
        if (3 == Z.length) {
            for (z = 0; 3 > z; z++) t[z] += Z[z];
            for (Z = [13, 8, (z = 0, 13), 12, 16, 5, 3, 10, 15]; 9 > z; z++) t[3](t, z % 3, Z[z])
        }
    },
    P.prototype.l = function(Z, t) {
        if ((t = this.o[Z], void 0) === t) throw h(this, 30, 0, Z),
        this.a;
        for (Z = 7; Z--;);
        return t()
    },
    function(Z, t, z, p, a) {
        if ((p = Z[0], t).j = false, p == U) t.O = 25,
        t.U(Z);
        else if (p == v) {
            z = Z[1];
            try {
                a = t.U(Z)
            } catch(N) {
                E(t, N),
                a = t.Y
            }
            z(a)
        } else if (p == g) t.U(Z);
        else if (p == Y) t.U(Z);
        else if (p == u) {
            try {
                for (a = 0; a < t.J.length; a++) try {
                    z = t.J[a],
                    z[0][z[1]](z[2])
                } catch(N) {}
            } catch(N) {}
            t.J = [],
            (0, Z[1])(function(N, J) {
                t.T(N, true, J)
            })
        } else if (p == W) return a = Z[2],
        K(118, t, Z[6]),
        K(185, t, a),
        t.U(Z)
    }),
    U = (m.lM = false, []),
    EE = (m = P.prototype,
    function(Z, t, z, p, a) {
        for (t = (a = z = 0, []); z < Z.length; z++) p = Z.charCodeAt(z),
        128 > p ? t[a++] = p: (2048 > p ? t[a++] = p >> 6 | 192 : (55296 == (p & 64512) && z + 1 < Z.length && 56320 == (Z.charCodeAt(z + 1) & 64512) ? (p = 65536 + ((p & 1023) << 10) + (Z.charCodeAt(++z) & 1023), t[a++] = p >> 18 | 240, t[a++] = p >> 12 & 63 | 128) : t[a++] = p >> 12 | 224, t[a++] = p >> 6 & 63 | 128), t[a++] = p & 63 | 128);
        return t
    }),
    iY = (m.Do = (m.L = (m.pm = function(Z, t, z) {
        return Z ^ ((t = (t ^= t << 13, t ^= t >> 17, (t ^ t << 5) & z)) || (t = 1), t)
    },
    (window.performance || {}).now) ?
    function() {
        return this.bM + window.performance.now()
    }: function() {
        return + new Date
    },
    m.Lm = function() {
        return Math.floor(this.X + (this.L() - this.c))
    },
    m.Ni = function(Z, t, z, p, a) {
        for (a = p = 0; p < Z.length; p++) a += Z.charCodeAt(p),
        a += a << 10,
        a ^= a >> 6;
        return (p = new Number((Z = (a += a << 3, a ^= a >> 11, a + (a << 15) >>> 0), Z & (1 << t) - 1)), p)[0] = (Z >>> t) % z,
        p
    },
    m.tP = function(Z, t, z, p, a, N) {
        for (z = (N = (p = [], 0), 0); z < Z.length; z++) for (N += t, a = a << t | Z[z]; 7 < N;) N -= 8,
        p.push(a >> N & 255);
        return p
    },
    m.v7 = function() {
        return Math.floor(this.L())
    },
    function(Z, t, z, p) {
        for (; z--;) 109 != z && 96 != z && t.o[z] && (t.o[z] = t[p](t[Z](z), this));
        t[Z] = this
    }),
    function(Z, t, z, p, a, N) {
        Z.G++;
        try {
            for (p = (N = (t = 0, z = Z.g, 5001), void 0); (Z.lM || --N) && (Z.i || (t = Z.l(109)) < z);) try {
                Z.i ? p = Z.P(Z.i) : (K(96, Z, t), a = b(Z), p = Z.l(a)),
                p && p.call ? p(Z) : h(Z, 21, 0, a),
                Z.j = true,
                A(false, Z, false)
            } catch(J) {
                J != Z.a && (Z.l(4) ? h(Z, 22, J) : K(4, Z, J))
            }
            N || h(Z, 33)
        } catch(J) {
            try {
                h(Z, 22, J)
            } catch(X) {
                E(Z, X)
            }
        }
        Z.G--
    }),
    A = (P.prototype.$ = (P.prototype.U = function(Z, t) {
        return t = (Z = {},
        {}),
        function(z, p, a, N, J, X, Q, k, G, l, D, R, I, H, C, n, V) {
            X = Z,
            Z = t;
            try {
                if (J = z[0], J == Qc) return X == t ? 29 : 80;
                if (J == Y) {
                    V = z[1];
                    try {
                        for (a = (Q = (k = 0, l = [], atob(V)), 0); k < Q.length; k++) p = Q.charCodeAt(k),
                        255 < p && (l[a++] = p & 255, p >>= 8),
                        l[a++] = p;
                        K(188, this, (this.g = (this.N = l, this.N.length << 3), [0, 0, 0]))
                    } catch(f) {
                        f != this.a && h(this, 17, f);
                        return
                    }
                    iY(this)
                } else if (J == U) k = z[1],
                k.push(this.l(192).length, this.l(97), this.l(67).length, this.l(46).length),
                K(185, this, z[2]),
                this.o[158] && x(this, this.l(158));
                else {
                    if (J == v) { (R = (C = d(((k = z[2], this).l(192).length | 0) + 2, 2), this).K, this).K = this;
                        try {
                            N = this.l(82),
                            0 < N.length && e(this, 192, d(N.length, 2).concat(N), 15),
                            e(this, 192, [1], 104),
                            e(this, 192, [7]),
                            Q = 0,
                            G = this.l(46),
                            Q += this.l(51) & 2047,
                            Q -= (this.l(192).length | 0) + 5,
                            4 < G.length && (Q -= (G.length | 0) + 3),
                            0 < Q && e(this, 192, d(Q, 2).concat(q(Q)), 10),
                            4 < G.length && e(this, 192, d(G.length, 2).concat(G), 153)
                        } finally {
                            this.K = R
                        }
                        if (n = ((a = q(2).concat(this.l(192)), a[1] = a[0] ^ 3, a)[3] = a[1] ^ C[0], a[4] = a[1] ^ C[1], window.btoa)) {
                            for (p = (Q = 0, ""); Q < a.length; Q += 8192) p += String.fromCharCode.apply(null, a.slice(Q, Q + 8192));
                            I = n(p).replace(/\\+/g, "-").replace(/\\/ / g, "_").replace(/=/g, "")
                        } else I = void 0;
                        if (D = I) D = "!" + D;
                        else for (Q = 0, D = ""; Q < a.length; Q++) H = a[Q][this.A](16),
                        1 == H.length && (H = "0" + H),
                        D += H;
                        return (K(97, (this.l((l = D, 192)).length = k.shift(), this), k.shift()), this.l(67).length = k.shift(), this).l(46).length = k.shift(),
                        l
                    }
                    if (J == g) x(this, z[1]);
                    else if (J == W) return x(this, z[1])
                }
            } finally {
                Z = X
            }
        }
    } (),
    function(Z, t, z) {
        for (t = b(this), z = 0; 0 < Z; Z--) z = z << 8 | b(this);
        K(t, this, z)
    }),
    function(Z, t, z, p) {
        if ((p = 0 < t.H && t.D && t.h && 1 >= t.G && !t.i && !t.C && (t.j || !z) && 0 == document.hidden, !p) || (p ? t.L() : t.gl) - t.c < t.H - (Z ? 255 : z ? 5 : 2)) return false;
        return t.C = ((K(109, t, (Z = t.l(z ? 96 : 109), t.g)), t.b).push([g, Z]), true)
    }),
    kE = (P.prototype.M = function(Z, t, z, p) {
        e(this, (((p = (z = (p = b((t = Z & 3, Z &= 4, this)), b(this)), this.l(p)), Z) && (p = EE(("" + p).replace(/\\r\\n/g, "\\n"))), t) && e(this, z, d(p.length, 2)), z), p)
    },
    function(Z, t, z, p) {
        p = b((z = b(t), t)),
        e(t, p, d(t.l(z), Z))
    }),
    lY = function(Z, t, z) {
        return t.T(function(p) {
            z = p
        },
        false, Z),
        z
    },
    B = function(Z, t, z, p, a, N) {
        if (t.b.length) {
            t.h = (t.D = (t.D && 0(), true), Z);
            try {
                a = t.L(),
                t.gl = a,
                t.c = a,
                p = Dk(Z, t),
                N = t.L() - t.c,
                t.X += N,
                N < (z ? 0 : 10) || 0 >= t.O--||(N = Math.floor(N), t.f.push(254 >= N ? N: 254))
            } finally {
                t.D = false
            }
            return p
        }
    },
    Dk = function(Z, t, z, p) {
        for (; t.b.length;) if (t.C = false, p = t.b.pop(), p = NT(p, t), Z && t.C) {
            z = t,
            zO(function() {
                B(true, z, true)
            });
            break
        }
        return p
    },
    GO = function(Z) {
        return (Z = $E()) && 1 === eval(Z.createScript("1")) ?
        function(t) {
            return Z.createScript(t)
        }: function(t) {
            return "" + t
        }
    } ();
    try {
        F.addEventListener("test", null, Object.defineProperty({},
        "passive", {
            get: function() {
                Pi = {
                    passive: true
                }
            }
        }))
    } catch(Z) {}
    return (function(Z, t, z, p) {
        return [(p = new P({
            UT: t,
            F: z
        },
        Z),
        function(a) {
            return lY(a, p)
        })]
    });
}).call(this);
')'

但是屏蔽后并不影响使用. 基于谨慎原则, 建议屏蔽.

我更新了一下 1L,添加了屏蔽方法。

所以…国内居然是可以正常使用翻译的啊

国内一直都可以使用「Google 翻译」的呀。用的 .cn 域名。

啊呀,居然这样。