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

TextBlob调用translate翻译文本时报HTTP 400 Bad Request错误如何解决

问题原因

TextBlob的translate()方法底层依赖谷歌已经废弃的公开无密钥翻译接口,2023年之后谷歌完全下线了该接口的无认证调用支持,所以所有直接调用TextBlob原生翻译方法的请求都会返回HTTP Error 400: Bad request错误,和你的VSCode运行环境、代码本身没有关联。

适配证书限制场景的解决方案
  • 方案1:修改TextBlob底层翻译调用逻辑,适配谷歌云翻译新版API
    如果你所在工作场景允许申请谷歌云服务密钥,可以优先选择该方案,原有业务代码不需要改动:
    1. 进入Python环境依赖安装目录,找到textblob模块下的translate.py文件
    2. 将原有旧版谷歌翻译请求地址、参数逻辑替换为新版谷歌云翻译API的调用逻辑,在请求参数中加入你申请到的有效API密钥
    3. 工作场景如果有自定义证书校验要求,可在请求方法中新增verify参数指定内部证书路径即可
  • 方案2:调用国内翻译厂商开放API自行封装翻译方法
    如果无法申请谷歌云相关权限,可申请百度、有道等国内翻译厂商的开放API服务,自行封装和原有TextBlob翻译方法调用逻辑一致的工具函数,示例代码如下:
    import requests
    import hashlib
    import random
    
    # 自行申请对应翻译厂商的APPID和密钥后填入
    APP_ID = "你的应用ID"
    APP_SECRET = "你的应用密钥"
    # 如需配置内部证书,在此处指定证书文件路径
    CERT_PATH = "你的内部证书路径"
    
    def text_translate(content, target_lang):
        salt = str(random.randint(32768, 65536))
        sign_content = APP_ID + content + salt + APP_SECRET
        sign = hashlib.md5(sign_content.encode("utf-8")).hexdigest()
        req_params = {
            "q": content,
            "from": "auto",
            "to": target_lang,
            "appid": APP_ID,
            "salt": salt,
            "sign": sign
        }
        resp = requests.get(
            url="对应翻译厂商的API请求地址",
            params=req_params,
            verify=CERT_PATH
        )
        resp_data = resp.json()
        return " ".join([item["dst"] for item in resp_data["trans_result"]])
    
    # 调用方式和原有TextBlob方法基本一致
    res = text_translate("The weather is beautiful today. Tomorrow looks like bad weather.", "spa")
    print(res)
    
  • 方案3:使用离线翻译模型本地运行
    如果工作场景完全不允许调用公网API,可使用transformers等开源库加载本地离线翻译模型,完全不需要网络请求,自然不会触发证书限制问题。

内容的提问来源于stack exchange,提问作者Roney Wesley Galan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:27:04