首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我从PYTHON调用API,得到的响应406是不可接受的

我从PYTHON调用API,得到的响应406是不可接受的
EN

Stack Overflow用户
提问于 2019-08-08 17:21:29
回答 2查看 6.4K关注 0票数 5

我在我的站点中创建了一个API,我试图从python调用一个API,但是我总是得到406作为响应,但是如果我将url与参数放在浏览器中,我可以看到正确的答案。

我已经在页面中做了一些测试,您可以在其中测试您自己的API,我在浏览器中测试它并正常工作。我已经跟进了一本手册,它解释了如何从python调用API,但是我没有得到正确的响应:

这是API的URL和params:clave=123

这是我用来从Python调用API的代码

代码语言:javascript
复制
import requests
urlLogin = "https://icassy.com/api/login.php"
params = {'usuario_email': 'warles34@gmail.com', 'usuario_clave': '123'}
r = requests.get(url=urlLogin, data=params)
print(r)
print(r.content)

我得到了:

代码语言:javascript
复制
<Response [406]>
b'<head><title>Not Acceptable!</title></head><body><h1>Not Acceptable!</h1><p>An appropriate representation of the requested resource could not be found on this server. This error was generated by Mod_Security.</p></body></html>'

我应该以JSON格式接收成功消息,并收到类似于此的每个like:

{“消息”:“成功登录”,"apikey":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9leGFtcGxlLm9yZyIsImF1ZCI6Imh0dHA6XC9cL2ljYXNzeS5jb20iLCJpYXQiOjEzNTY5OTk1MjQsIm5iZiI6MTM1NzAwMDAwMCwiZGF0YSI6eyJ1c3VhcmlvX2lkIjoiMzQiLCJ1c3VhcmlvX25vbWJyZSI6IkNhcmxvcyIsInVzdWFyaW9fYXBlbGxpZG8iOiJQZXJleiIsInVzdWFyaW9fZW1haWwiOiJ3YXJsZXMzNEBnbWFpbC5jb20ifX0.bOhrC-vXhQEHtbbZGmhLByCxvJY7YxDrLhVOfy9zeFc"}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-08 17:40:07

看起来服务器上有一个验证来检查请求是否是从某个浏览器发出的。添加一个用户代理头应该可以-

代码语言:javascript
复制
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
r = requests.get(url=urlLogin, params=params, headers=headers)

用户代理的链接将来可能会派上用场。

票数 17
EN

Stack Overflow用户

发布于 2021-08-19 12:25:46

我发现我所做的服务是托管在Akamai上的,它有一个bot管理器。它查看请求(它来自何处),如果它确定它是一个bot,则会得到一个406错误。

解决方案是要求将服务器IP白名单,或者向所有服务器通信发送一个特殊的报头。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57417799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档