hcfyapp / crx-selection-translate

一站式划词 / 截图 / 网页全文 / 音视频 AI 翻译扩展。
https://hcfy.ai
4.07k stars 540 forks source link

谷歌翻译出现了“远程服务器没有响应”问题 #1493

Closed lmk123 closed 1 year ago

lmk123 commented 2 years ago

此问题我正在紧急修复中,修复进展请关注 https://hcfy.app/blog/2022/09/28/ggg

09-29 12:04 更新:

各位,我在公告 https://hcfy.app/blog/2022/09/28/ggg 里更新了新的步骤。这个问题可能无需更新到新版本就能解决,大家可以试一下回退到 v8.7.7,然后按照公告里新的打开谷歌翻译网站的步骤试一下。

GoodCoder666 commented 1 year ago

@lmk123 可不可以做一个类似于GitHub520的项目,实现自动获取谷歌翻译的IP并传到服务器上?然后用SwitchHosts自动刷新HOSTS,省的手动换了

或者直接在划词翻译插件里边自动获取IP并直接访问而不是访问translate.googleapis.com?


我还有个小问题,就是为什么我用各种IP访问测试地址都是能加载,但是显示Error 404(浏览器重启过了)?

lmk123 commented 1 year ago

@GoodCoder666

可不可以做一个类似于GitHub520的项目

我大概是没有这个余力了 :joy:

直接在划词翻译插件里边自动获取IP

以我的理解,插件是没有能力判断出哪个 IP 可用的。

为什么我用各种IP访问测试地址都是能加载,但是显示Error 404(浏览器重启过了)?

如果指的是谷歌翻译的测试地址报 404 错误的话,除了没重启浏览器我也想不到别的原因了 :joy: 我自己测试就发现只要重启浏览器就不会 404 了。注意,是【完全】退出浏览器再重启,比如 macOS 关闭 Chrome 后其实只是把浏览器窗口关了,程序本身没关,需要右键点任务栏的 Chrome 图标退出才行。

如果你指的是划词翻译里的谷歌翻译报 404 错误,那你看下你的划词翻译版本,如果是 v8.7.7 或者以下版本,那确实可能有这个问题,因为有个接口我硬编码了 translate.google.cn。这个问题已经在 v8.7.8 里解决。

lxfly2000 commented 1 year ago

改HOST方法貌似已经不行了,所有IP都挂了

lmk123 commented 1 year ago

@lxfly2000 @GoodCoder666

改HOST方法貌似已经不行了,所有IP都挂了

为什么我用各种IP访问测试地址都是能加载,但是显示Error 404(浏览器重启过了)?

我刚才用 IP 180.163.151.162 试了一下,还真出现了重启浏览器后仍然会显示 404 的问题,看来真的很有可能改 hosts 没用了。

其它改 hosts 的朋友有出现这个问题吗?

dfjfj commented 1 year ago

大概是三四天前吧, 前面我使用的是v8.7.6 然后修改hosts可以正常使用, 然后就发生了这些问题, 怎么改都不行, 我观察到版本被升级到了v8.7.8 这个原因和版本有关吗? 毕竟8.7.7当中添加了不少问题, v8.7.6是当时最后一个正常版本. 还有, 我的插件为什么会自动更新呢?

lmk123 commented 1 year ago

@kaimeng110091 浏览器自动更新的。跟划词翻译版本没关系,是谷歌翻译一直在调整它们的连接。目前修改 hosts 的方式似乎失效了,我正在关注相关动向。

GoodCoder666 commented 1 year ago

@lmk123 好像确实没办法自动获取最佳IP,但是如果HOSTS的方法能恢复的话,可以在插件里加一个“自定义谷歌翻译服务器IP”选项并且让用户指定服务器IP,这样省去了繁琐的改HOSTS再重启的步骤

lmk123 commented 1 year ago

@GoodCoder666 插件也没有能力修改本地文件或是指定访问什么 IP 的 translate.googleapis.com :joy:

Syt100 commented 1 year ago

改host已经失效了,重启浏览器还是提示404

mouju commented 1 year ago

失效+1,改了好几个了,自动手动都试了

lmk123 commented 1 year ago

已在公告中添加 hosts 方案疑似失效的说明。

lmk123 commented 1 year ago

我看到有人说目前还是能找到谷歌翻译可以用的国外 IP 的,虽然速度慢但至少能用,我正在问但还没得到回复,大家有什么头绪吗?

lxfly2000 commented 1 year ago

能找到但是会很快就失效,就好像有个黑名单一样,或者是遇到recaptcha了(纯个人猜测)

kiird commented 1 year ago

全部添加,目前还可以用 142.250.4.90 translate.googleapis.com 172.253.114.90 translate.googleapis.com 172.217.203.90 translate.googleapis.com 172.253.112.90 translate.googleapis.com 142.250.9.90 translate.googleapis.com 172.253.116.90 translate.googleapis.com 142.250.97.90 translate.googleapis.com 142.250.30.90 translate.googleapis.com 142.250.111.90 translate.googleapis.com 172.217.215.90 translate.googleapis.com 142.250.11.90 translate.googleapis.com 142.251.9.90 translate.googleapis.com 108.177.122.90 translate.googleapis.com 142.250.96.90 translate.googleapis.com 142.250.100.90 translate.googleapis.com 142.250.110.90 translate.googleapis.com 172.217.214.90 translate.googleapis.com 172.217.222.90 translate.googleapis.com 142.250.31.90 translate.googleapis.com 142.250.126.90 translate.googleapis.com 142.250.10.90 translate.googleapis.com 172.217.195.90 translate.googleapis.com 172.253.115.90 translate.googleapis.com 142.251.5.90 translate.googleapis.com 142.250.136.90 translate.googleapis.com 142.250.12.90 translate.googleapis.com 142.250.101.90 translate.googleapis.com 172.217.192.90 translate.googleapis.com 142.250.0.90 translate.googleapis.com 142.250.107.90 translate.googleapis.com 172.217.204.90 translate.googleapis.com 142.250.28.90 translate.googleapis.com 142.250.125.90 translate.googleapis.com 172.253.124.90 translate.googleapis.com 142.250.8.90 translate.googleapis.com 142.250.128.90 translate.googleapis.com 142.250.112.90 translate.googleapis.com 142.250.27.90 translate.googleapis.com 142.250.105.90 translate.googleapis.com 172.253.126.90 translate.googleapis.com 172.253.123.90 translate.googleapis.com 172.253.122.90 translate.googleapis.com 172.253.62.90 translate.googleapis.com 142.250.98.90 translate.googleapis.com 142.250.185.238 translate.googleapis.com 142.251.116.101 translate.googleapis.com 216.58.214.14 translate.googleapis.com 142.250.189.206 translate.googleapis.com 216.58.209.174 translate.googleapis.com 142.250.203.142 translate.googleapis.com 142.250.218.14 translate.googleapis.com 142.251.10.138 translate.googleapis.com 142.251.40.174 translate.googleapis.com 142.250.185.174 translate.googleapis.com 172.217.16.46 translate.googleapis.com 172.217.0.46 translate.googleapis.com 172.217.31.142 translate.googleapis.com 216.58.220.142 translate.googleapis.com 172.217.13.142 translate.googleapis.com

lmk123 commented 1 year ago

@kiird 厉害了,实测确实可以

GoodCoder666 commented 1 year ago

@kiird 感谢!可以用

实际上只需要第一条就可以了:

142.250.4.90 translate.googleapis.com

QyhOfficial commented 1 year ago

@kiird 这个全部添加的效果是?一个不行就换一个?会增加耗时吗?

iceofwater0418 commented 1 year ago

我为什么都不好用呢

lmk123 commented 1 year ago

@QyhOfficial

这个全部添加的效果是?一个不行就换一个?会增加耗时吗?

是的,电脑会从上往下解析,上一个 IP 不行就换下一个,这样做确实会增加耗时,不过我刚才试了一下, 全部粘贴后可以在5秒内响应

lmk123 commented 1 year ago

再分享一些可用 IP,来源:https://www.v2ex.com/t/888970#r_12246970

172.253.114.90,172.253.113.90,172.217.203.90,172.253.112.90,142.250.4.90,142.250.9.90,172.253.116.90,142.250.97.90,142.250.30.90,142.250.111.90,172.217.215.90,142.250.11.90,142.251.9.90,108.177.122.90,142.250.96.90,142.250.100.90,142.250.110.90,172.217.214.90,172.217.222.90,142.250.31.90,142.250.126.90,142.250.10.90,172.217.195.90,172.253.115.90,142.251.5.90,142.250.136.90,142.250.12.90,142.250.101.90,172.217.192.90,142.250.0.90,142.250.107.90,172.217.204.90,142.250.28.90,142.250.125.90,172.253.124.90,142.250.8.90,142.250.128.90,142.250.112.90,142.250.27.90,142.250.105.90,172.253.126.90,172.253.123.90,172.253.122.90,172.253.62.90,142.250.98.90
GoodCoder666 commented 1 year ago

刚写了个python脚本,自动检测可用的IP @lmk123 希望能加到公告里,方便大家使用

from urllib.request import Request, urlopen
from sys import stdout

# 这一部分不要动
HEADERS = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'zh-CN,zh;q=0.9',
    'sec-ch-ua': '"Chromium";v="106", "Not;A=Brand";v="99", "Google Chrome";v="106.0.5249.119"',
    'host': 'translate.googleapis.com',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
}

def test_ip(ip):
    url = f'http://{ip}/translate_a/single?client=gtx&sl=en&tl=fr&q=a'
    try:
        urlopen(Request(url, headers=HEADERS), timeout=3).close() # timeout为时间限制,根据自己网络情况设置为3-7秒
    except Exception as e:
        return str(e)
    return 'OK'

# 以下ips即为需要检测的所有IP列表
ips = ['108.177.122.90', '142.250.0.90', '142.250.10.90', '142.250.100.90', '142.250.101.90', '142.250.105.90', '142.250.107.90', '142.250.11.90', '142.250.110.90', '142.250.111.90', '142.250.112.90', '142.250.12.90', '142.250.125.90', '142.250.126.90', '142.250.128.90', '142.250.136.90', '142.250.185.174', '142.250.185.238', '142.250.189.206', '142.250.203.142', '142.250.218.14', '142.250.27.90', '142.250.28.90', '142.250.30.90', '142.250.31.90', '142.250.4.90', '142.250.8.90', '142.250.9.90', '142.250.96.90', '142.250.97.90', '142.250.98.90', '142.251.10.138', '142.251.116.101', '142.251.40.174', '142.251.5.90', '142.251.9.90', '172.217.0.46', '172.217.13.142', '172.217.16.46', '172.217.192.90', '172.217.195.90', '172.217.203.90', '172.217.204.90', '172.217.214.90', '172.217.215.90', '172.217.222.90', '172.217.31.142', '172.253.112.90', '172.253.114.90', '172.253.115.90', '172.253.116.90', '172.253.122.90', '172.253.123.90', '172.253.124.90', '172.253.126.90', '172.253.62.90', '216.58.209.174', '216.58.214.14', '216.58.220.142']

if __name__ == "__main__":
    for ip in ips:
        print(f'Testing {ip} ...', end=' ')
        stdout.flush()
        result = test_ip(ip)
        print(result)

使用的都是原生的python库,不需要自行安装第三方库

lmk123 commented 1 year ago

@GoodCoder666 感谢分享,不过普通用户估计连 python 都不会装 :joy:

GoodCoder666 commented 1 year ago

@lmk123 那要不我打包一个exe?

lmk123 commented 1 year ago

@GoodCoder666 如果打包成 exe 的话,那估计得有一个 GUI 界面来让用户输入 IP 库(即代码里的 ips),你做出来了我一定放到公告里

Ponderfly commented 1 year ago

@GoodCoder666 可以把响应时间也加在IP上去

lmk123 commented 1 year ago

@kiird 可以请教一下你这些 IP 是用什么方法拿到的吗?

lmk123 commented 1 year ago

我在 https://www.v2ex.com/t/888970#r_12246970 看到有人说可以用工具扫描 GWS 服务器来获取谷歌翻译可以使用的 IP:

只要是 GWS 服务器都可以,可以扫描出来。 用的是 gscan_quic ,我开了这个分支。文档还没写。 原 repo: https://github.com/Kisesy/gscan_quic Frok: https://repo.or.cz/gscan_quic.git

但是我不会 go,有大佬可以看看这个要怎么用吗 :joy:

lmk123 commented 1 year ago

@GoodCoder666 我突然想到不用 GUI,从命令行里读取也可以,比如 check.exe --ips=ips.txt,让用户把 ip 库写在 ips.txt 里就行

wohenbushuang commented 1 year ago

感觉可以关issue了,如何获取ip和改hosts的讨论是不是已经超出这个项目的范畴了…

lmk123 commented 1 year ago

@wohenbushuang 我也很纠结,但是有相当一部分划词翻译的用户不知道怎么用梯子,为了让他们能继续使用谷歌翻译,我只能不断寻找新的可用 IP 并贴在公告里 :joy:

kiird commented 1 year ago

@kiird 可以请教一下你这些 IP 是用什么方法拿到的吗?

逛论坛的时候看到的,原文在这里https://www.centbrowser.net/zh-cn/forum.php?mod=redirect&goto=findpost&ptid=10787&pid=73101

Ponderfly commented 1 year ago

GoogleTranslateCheck.zip @lmk123 随便写了个检查的看看能不能用

GoodCoder666 commented 1 year ago

@lmk123 改进了一下python脚本,如果没有问题就准备打包了 目前还会自动计算每个IP的请求时间并给出速度最快的5个IP(感谢 @Ponderfly 的建议)

from urllib.request import Request, urlopen
from sys import stdout, argv
from time import time

HEADERS = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'zh-CN,zh;q=0.9',
    'sec-ch-ua': '"Chromium";v="106", "Not;A=Brand";v="99", "Google Chrome";v="106.0.5249.119"',
    'host': 'translate.googleapis.com',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
}

def check_ip(ip):
    url = f'http://{ip}/translate_a/single?client=gtx&sl=en&tl=fr&q=a'
    try:
        start_time = time()
        response = urlopen(Request(url, headers=HEADERS), timeout=3)
        end_time = time()
        response.close()
    except Exception as e:
        return str(e)
    return end_time - start_time

if len(argv) == 1:
    ips = ['108.177.122.90', '142.250.0.90', '142.250.10.90', '142.250.100.90', '142.250.101.90', '142.250.105.90', '142.250.107.90', '142.250.11.90', '142.250.110.90', '142.250.111.90', '142.250.112.90', '142.250.12.90', '142.250.125.90', '142.250.126.90', '142.250.128.90', '142.250.136.90', '142.250.185.174', '142.250.185.238', '142.250.189.206', '142.250.203.142', '142.250.218.14', '142.250.27.90', '142.250.28.90', '142.250.30.90', '142.250.31.90', '142.250.4.90', '142.250.8.90', '142.250.9.90', '142.250.96.90', '142.250.97.90', '142.250.98.90', '142.251.10.138', '142.251.116.101', '142.251.40.174', '142.251.5.90', '142.251.9.90', '172.217.0.46', '172.217.13.142', '172.217.16.46', '172.217.192.90', '172.217.195.90', '172.217.203.90', '172.217.204.90', '172.217.214.90', '172.217.215.90', '172.217.222.90', '172.217.31.142', '172.253.112.90', '172.253.114.90', '172.253.115.90', '172.253.116.90', '172.253.122.90', '172.253.123.90', '172.253.124.90', '172.253.126.90', '172.253.62.90', '216.58.209.174', '216.58.214.14', '216.58.220.142']
else:
    try:
        with open(argv[1], 'r') as file:
            ips = list(map(str.strip, file))
    except Exception as e:
        print(f'Failed to open file {argv[1]}. Reason: {e}')

avaliable = []
for ip in ips:
    print(f'Checking {ip} ...', end=' ')
    stdout.flush()
    result = check_ip(ip)
    if isinstance(result, str):
        print('Error:', result)
    else:
        ms = round(result * 1000)
        print(f'{ms}ms')
        avaliable.append((ms, ip))

avaliable.sort()
top5 = avaliable[:5]

print('\nTop5 Fast IPs:')
for ms, ip in top5:
    print(f'{ip}:\t{ms}ms')

调用方法:

> check # 使用默认IP库
> check ips.txt # 使用ips.txt自定义库,格式为每行一个

本地运行结果(默认IP库):

Top5 Fast IPs:
142.250.107.90: 462ms
172.217.214.90: 501ms
142.250.28.90:  505ms
142.250.8.90:   509ms
142.250.30.90:  513ms
GoodCoder666 commented 1 year ago

checker.zip 如果没有python的可以先用这个打包的版本,其中ips.txt为来自https://www.v2ex.com/t/888970#r_12246970的IP库

GoodCoder666 commented 1 year ago

如果以后谷歌翻译真的彻底用不了了可以在聚合翻译这个网站上使用

wangp-blog commented 1 year ago

可以考虑使用百度或者腾讯翻译,英译汉没有什么影响,一般用户每个月100万字符是够用的。 正常情况下可以覆盖需求,如果有大量翻译需求,必须考虑其他完全免费的key。 image

另外谷歌翻译的ip检测没办法做到永久,本质上是国内服务器的关掉了。对于不能翻墙的用户来说,是一个大问题。

wangp-blog commented 1 year ago

这个网站提供接口吗?如果要复制到网页的话,就背离了划词翻译的初衷。

leidichen commented 1 year ago

不建议现在的解决方案,即如果方案。如果配置是时机,不会因为小失大。参考下面的方式: 主要是三步:

  1. 修改梯子侧代理规则
  2. 修改SwitchyOmega代理规则
  3. 修改“ 操作画词翻译”下面为具体过程

Windows10 v2rayN v5.36首先更新geo文件,然后额外配置代理规则图片 图片 图片

# 将下面地址粘贴至对应位置
domain:googleapis.cn,
domain:googleapis.com,
translate.google.cn,
translate.google.com,
translate.googleapis.cn,
translate.googleapis.com

然后“确定”翻译确定”、就配置好子、部署服务有关于切换的配置规则。下面,将模式中翻译的代理规则,删除删除的代理规则”“规划词”谷歌的版权(译文与国内也有版权,因为默认歌都是走代理)图片效果图:图片

感谢!我在clash for windows 里面修改了代理规则,添加DOMAIN-SUFFIX 后,网页翻译可用

此方法目前看最佳。IP不停被封锁,总是靠更新IP修改hosts已不适用。按照这个方案成功恢复谷歌翻译,翻译速度稳定。👍

note4 commented 1 year ago

@lmk123 那要不我打包一个exe?

可以考虑放到服务端,然后通过一个网址展现结果

wohenbushuang commented 1 year ago

@lmk123 我看repo开了discussion,其实可以在discussion里讨论Q&A的,issue只关注项目本身的问题,有的中文翻译叫”工单“我觉得挺合理的。我们前面定位到问题后其实一直没有更好的办法,我不会unsubscribe这个issue,因为我还在等着将来会有新进展,看到notification的小蓝点就点进来(我有点强迫症了)

@wohenbushuang 我也很纠结,但是有相当一部分划词翻译的用户不知道怎么用梯子,为了让他们能继续使用谷歌翻译,我只能不断寻找新的可用 IP 并贴在公告里 😂

新IP没有尽头呢……挂网站里吧要不,这里的访问一样也不是那么稳定

cloudpanl commented 1 year ago

可以考虑使用百度或者腾讯翻译,英译汉没有什么影响,一般用户每个月100万字符是够用的。 正常情况下可以覆盖需求,如果有大量翻译需求,必须考虑其他完全免费的key。 image

另外谷歌翻译的ip检测没办法做到永久,本质上是国内服务器的关掉了。对于不能翻墙的用户来说,是一个大问题。

百度的翻译还是没有谷歌的准确,还是谷歌好用

LYing8023 commented 1 year ago

请问如果本来IP就是国外的怎么处理呢?

ghost commented 1 year ago

自google翻译开始在国内地区失效后就开始出现一批互联网的妖魔鬼怪了。 首先要清楚一点,google翻译并不支持中国地区使用了!你要用的话,你首先要学会中国人上网的必备技能“翻墙”!! 很多人有梯子,但是chrome内置翻译不能使用是因为chrome内置的翻译是走的系统代理,除非你的梯子开系统代理,否则一切规则都没用!

至于划词翻译主页说的使用SwitchyOmega添加规则,其实原理上是行不通的(如果是要使用chrome内置的翻译的话是行不通的,因为走的是系统代理,但是如果要用划词翻译的google国外接口是行得通的。)

修改hosts文件是能用的,哪天不能用呢?哪天GFW把这些IP杀死后就不能用了 :) 方法还是很多,例如让chrome走代理,但是感觉多此一举(例如windows下的Proxifier软件,甚至网速会有影响。) 一劳永逸的办法是有的,服务器做个反代(使用nginx) 然后把电脑hosts文件添加一下 你的服务器IP translate.googleapis.com

就可以了,windows和linux同理。 前提你的服务器在国内可以ping通,地区无所谓,能通就可以了,当然了,延迟别太高。

原理就是让translate.googleapis.com走上代理即可。

至于怎么做反代,网速搜索一下还是很多教程的吧,可能很多都是妖魔鬼怪写的教程。 不过原理还是很简单的,这是绝对一劳永逸的办法~

对了,如果你做了反代还是不行? 同学,你要修改DNS了 :)

我是安全这方面的人员,我对安全要求很高。 或许后期会出现一些好人 提供他的服务器地址让人们去使用。 但是我建议还是自己动手吧,因为事实上你如果用了别人的服务器地址,你所有翻译的内容对方是知道的。 你如果从事的工作需要保密或者你在乎安全,自己动手搭建一下吧。 新手可能需要1天去学习以及搭建,但是1天的劳累你可以用很久很久~ 我只能提供个思路,因为我不是个好老师,我不会写教程。

lmk123 commented 1 year ago

@GoodCoder666 我现在手边没有 windows 电脑,没法测试你打的包 :joy: 估计得再过一个星期我才有 windows 电脑,或者你可以打一个 macOS 可以用的包吗?测试通过我就放到公告里去

@LYing8023 如果你人在国外,那么你无需做任何改动,直接使用即可。