如何在 Firefox 中免费的使用 Google 翻译 API 进行页面翻译

事情是这样的:

我前一阵切换到了 FireFox,但我暂时还不能离开网页翻译。

于是自己搜了下没办法就拜托小猫(@GroverChou)看了看,就有了这个

启用 Firefox 内置全页面翻译功能

然后我在 Google Cloud 配置启用了翻译 API,觉得最多一个月也就 3-10 USD(几百万字符,这样看好像还挺多),就没有设置想对应的预算和限制。

中间的时间,我就还是按照往常的习惯继续使用,直到...半个月之后。

招行提示: "您的一笔来自 Google*Cloud *** 的交易已成功。金额: 91.97 USD"。

我瞬间就慌张了起来,赶紧去控制台查询详细结算信息。

去翻了结算部分的页面,提示 " Translate Neural Translation Model Predictions" 这个服务使用了 109 USD,然后折扣掉了 10 USD。

因为这个命名的原因(或是翻译/我理解的不同)我当时认为,Google 搞错了或者 FireFox 使用了更高层级也更贵的 AutoML 来进行翻译。

在这时,我看到配额页面里有写着我只使用了 "google.cloud.translate.v2.TranslateService.TranslateText"(也就是基本 API),于是去问客服,为啥配额上写着我只用了基本 API 却收取了更高级别的费用。

客服给我好好算了一笔账(?),我使用了 500多万字符,按照费率(100w/20 USD) 的话就差不多是上面哪个价格。

这时候我看着价格表才反应过来,原来这就是基本 API 的费率。

去问去找客服确认,然后得到了确定的答案。于是只好老实停掉 API 付账单了。

页面翻译的事情另找出路。

那为啥个人用会有 500w 字符那么多呢(

配额页面说 API 调用次数是 1500 次,差不多一次 3000 字符。

按照网页去算的话,就挺合理的,而且我其实忽视了一点,那就是中文的一个词和英文的词,这字符量是不一样的。

那,怎么解决的呢?

总不能不用是不是(我也不想去白嫖别人泄漏出来的 api key。

在进行了一番搜寻之后,我找到了 google-translate-api 这样独立开启 API 并提供服务的库。
然后找了找,发现 firefox 的 google 翻译实现是在 omni.ja 的 modules/translation/GoogleTranslator.jsm 文件内的。
对翻译的代码进行了一番修改,改了下请求方式(post from - > post json),然后限制了单次请求的查询量(1,这是用的库的限制),还改了解析请求结果的部分),但发现这样存在一些问题,比如单个请求只能翻译一个词,请求数量大,而且很慢。(以及 Google 会 Ban 你 IP)

后来找了找又发现了另一个库 googletrans。测试后发现如同他宣称的一样工作良好。
于是用 flask 写了个模仿 Google 翻译 API 的 Server,这下就可以正常使用了。

于是这是成果:
(2021.03 更新: google 做了一些变动去禁止这样的库的使用,有可能需要你多多留意下他的 issues。)

后续

评论

此博客中的热门博文

获取 ASN 下的所有 IP 段

排错和解决 Clash 上网需要等待 5 秒的问题: DNS