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

通过POST请求从Interactive Brokers获取代码遇400错误求助

解决Interactive Brokers产品搜索API 400错误的方案

你的问题出在请求格式和必要请求头的缺失上,以下是修正后的实现:

问题分析

  • 该API接口要求接收JSON格式的请求体,你用表单编码方式传递payload,导致服务器无法解析请求。
  • 缺少关键请求头,比如指定内容类型的Content-Type、验证请求来源的Referer,这会触发服务器的合法性校验。

修正后的代码

import requests

url = "https://www.interactivebrokers.co.uk/IBSales/servlet/exchange?apiPath=getProductsByFilters"
payload = {
    "pageNumber": 1,
    "pageSize": 100,  # 改为数字类型,原字符串可能不被接口接受
    "sortField": "symbol",
    "sortDirection": "ASC",
    "product_country": ["GB"],
    "product_symbol": "",
    "new_product": "all",
    "product_type": ["STK"],
    "domain": "uk"
}
headers = {
    'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
    'Content-Type': 'application/json',
    'Referer': 'https://www.interactivebrokers.co.uk/en/trading/products-exchanges.php'
}

response = requests.post(url, json=payload, headers=headers)
print(response.status_code)
print(response.json())

关键修改点

  • 替换data=payload为json=payload:requests会自动序列化payload为JSON字符串并设置Content-Type为application/json,匹配接口的格式要求。
  • 补充Referer头:模拟浏览器从产品搜索页面发起请求,避免被服务器拦截。
  • 调整pageSize为数字类型:原代码中是字符串"100",接口可能期望整数参数。

如果仍然报错,可以尝试更新user-agent为当前主流浏览器的标识,或者先GET产品页面获取会话Cookie后再发起POST请求(部分网站会验证会话合法性)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:10:19