You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过IP访问Google Translate API失败,如何解决SSL握手错误?

修复SSL握手失败问题

出现SSLV3_ALERT_HANDSHAKE_FAILURE错误的核心原因是Google Translate服务器要求**SNI(Server Name Indication)**支持,且默认的SSL上下文配置不兼容Google的安全协议要求。以下是具体修复步骤:

1. 配置兼容的SSL上下文

创建SSL上下文时,指定支持的TLS版本(优先TLS 1.2/1.3,Google已不再支持旧的SSL协议),并确保启用SNI:

from urllib.request import Request, urlopen
import ssl

ip = '142.250.1.90'

HOST = 'translate.googleapis.com'
URL_FORMAT = 'https://{}/translate_a/single?client=gtx&sl=en&tl=fr&q=a'

def _build_request(ip):
    url = URL_FORMAT.format(ip)
    request = Request(url)
    request.add_header('Host', HOST)
    return request

# 配置SSL上下文:指定TLS版本,启用SNI
context = ssl.create_default_context()
context.set_alpn_protocols(['http/1.1'])
# 禁用Google不支持的旧协议
context.options |= ssl.OP_NO_SSLv3 | ssl.OP_NO_TLSv1 | ssl.OP_NO_TLSv1_1
# 跳过主机名与证书匹配验证(因使用IP访问)
context.check_hostname = False
# 跳过证书验证(仅用于测试场景,生产环境不建议)
context.verify_mode = ssl.CERT_NONE

try:
    response = urlopen(_build_request(ip), timeout=2.5, context=context)
    print(response.read().decode('utf-8'))
    response.close()
except Exception as e:
    print(f"错误详情: {e}")

2. 关键修复点说明

  • 禁用旧协议:Google服务器已拒绝SSLv3、TLS1.0、TLS1.1的连接,通过OP_NO_SSLv3等选项强制禁用这些协议。
  • 确保SNI支持:显式配置set_alpn_protocols保证HTTP/1.1协议协商正常,新版本Python的ssl.create_default_context()默认已启用SNI,此配置可进一步确保兼容性。
  • 跳过证书验证:直接使用IP访问时,服务器返回的证书域名与IP不匹配,因此需要跳过验证(生产环境建议通过域名访问,避免安全风险)。

3. 额外注意事项

  • 你使用的IP142.250.1.90可能已失效或不在Google Translate的有效IP池内,可通过nslookup translate.googleapis.com获取最新可用IP。
  • Google Translate的gtx客户端接口是非正式未公开接口,随时可能被限制或修改,生产环境建议使用官方的Google Cloud Translation API。

内容的提问来源于stack exchange,提问作者GoodCoder666

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 01:12:13