调用LogicManager REST API时出现「请使用现代浏览器」错误求助
解决LogicManager API请求被识别为IE的问题
核心说明
你的本地浏览器设置(默认Chrome、VS Code Live Preview配置)和requests模块的HTTP请求完全无关,requests是独立发送HTTP请求,不受这些设置影响。问题出在请求本身的参数或服务器的响应逻辑上,以下是针对性解决方案:
- 修正认证头字段名
你代码中用的Authentication字段是错误的,标准HTTP Basic认证的头字段应该是Authorization。服务器可能因为认证失败,返回了网页版的提示页面(而非API响应),这个页面的JS逻辑误判了UA。修改代码中的头字段:
api_headers = { 'Content-Type' : 'application/json', 'Authorization' : 'Basic...' , # 把Authentication改成Authorization 'api-key' : 'thekey', 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36', 'Accept': 'application/json' # 新增Accept头,明确要求API响应格式 }
- 验证实际发送的请求头
在请求后添加代码,打印实际发送的请求头,确认User-Agent和其他字段是否正确传递:
print(response.request.headers)
如果输出中User-Agent不是你设置的内容,检查是否有其他代码或库覆盖了请求头。
- 排查证书问题
虽然你已经指定了PEM证书,但可能存在证书链不完整的情况。可以临时将verify设为False(仅用于测试,生产环境禁用),看是否能得到正确的API响应:
response = requests.get(url=api_url, headers=api_headers, verify=False)
如果这样能正常响应,说明你的PEM证书缺少中间证书,需要重新导出完整的证书链。
- 用curl验证请求有效性
在命令行中用curl模拟相同请求,排除Python代码的影响:
curl -H "Authorization: Basic..." ^ -H "api-key: thekey" ^ -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" ^ -H "Accept: application/json" ^ --cacert localpathto.pem ^ https://mycompany.logicmanager.com/v1/plans
如果curl能正常返回JSON响应,说明Python代码中还有其他细节问题;如果curl也返回同样的IE提示,联系LogicManager支持团队确认API端点是否正确,或是否有额外的访问限制。
内容的提问来源于stack exchange,提问作者lem
相关产品推荐
相关产品推荐

