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

Python调用BridgeDB /moat/fetch接口请求obfs4网桥失败

解决BridgeDB MOAT接口返回415 Unsupported Media Type错误

你的请求返回415错误的核心原因是Content-Type请求头不符合MOAT接口的要求——该接口不接受通用的application/json或application/x-www-form-urlencoded,必须使用自定义媒体类型application/vnd.moat+json。

修正后的Python代码

import requests

MOAT_SERVER_URL = "https://bridges.torproject.org"

def request_bridges():
    transports = ["obfs4"]
    payload = {
        "data": [{
            "version": "0.1.0",
            "type": "client-transports",
            "supported": transports,
        }]
    }

    # 关键修改:替换为MOAT接口要求的Content-Type
    headers = {
        "Content-Type": "application/vnd.moat+json"
    }

    try:
        response = requests.post(f"{MOAT_SERVER_URL}/moat/fetch", json=payload, headers=headers)
        response.raise_for_status()
        json_data = response.json()
        
        if "data" in json_data and json_data["data"]:
            moat_data = json_data["data"][0]
            if "challenge" in moat_data:
                # 这里添加验证码处理逻辑,比如解析验证码图片、获取用户输入
                print("需要验证码验证,挑战信息:", moat_data["challenge"])
            else:
                print("成功获取网桥:", moat_data)
        elif "errors" in json_data:
            print("接口返回错误:", json_data["errors"])
    except requests.exceptions.RequestException as e:
        print("请求失败:", str(e))

request_bridges()

修正后的Curl命令

curl -X POST -H "Content-Type: application/vnd.moat+json" -d '{"data": [{"version": "0.1.0", "type": "client-transports", "supported": ["obfs4"]}]}' https://bridges.torproject.org/moat/fetch

补充说明

  • MOAT接口使用自定义媒体类型是为了过滤非标准客户端请求,确保只有符合Tor网桥申请规范的请求能被处理。
  • 修正后请求会返回包含验证码挑战的响应,后续你需要实现验证码提交逻辑:将用户输入的验证码和challenge中的相关参数一起提交到MOAT接口,才能获取到obfs4网桥地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:15:44