我从 PYTHON 调用 API 我收到响应 406 Not Acceptable

I Call API from PYTHON I get the response 406 Not Acceptable

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

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

这是 API 的 URL 参数: https://icassy.com/api/login.php?usuario_email=warles34%40gmail.com&usuario_clave=123

这是我用来从 Python

调用 API 的代码
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)

我得到:

<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 格式接收成功消息和 apikey,如下所示:

{"message":"Successful login.","apikey":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9leGFtcGxlLm9yZyIsImF1ZCI6Imh0dHA6XC9cL2ljYXNzeS5jb20iLCJpYXQiOjEzNTY5OTk1MjQsIm5iZiI6MTM1NzAwMDAwMCwiZGF0YSI6eyJ1c3VhcmlvX2lkIjoiMzQiLCJ1c3VhcmlvX25vbWJyZSI6IkNhcmxvcyIsInVzdWFyaW9fYXBlbGxpZG8iOiJQZXJleiIsInVzdWFyaW9fZW1haWwiOiJ3YXJsZXMzNEBnbWFpbC5jb20ifX0.bOhrC-vXhQEHtbbZGmhLByCxvJY7YxDrLhVOfy9zeFc"}

看起来服务器上有一个验证来检查请求是否来自某些浏览器。添加 user-agent header 应该可以 -

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)

This link 的用户代理将来可能会派上用场。

我发现我正在请求的服务托管在具有机器人管理器的 Akamai 上。它查看请求(它来自哪里),如果它确定它是一个机器人,您会收到 406 错误。

解决办法是要求将服务器 IP 列入白名单,或者向所有服务器通信发送一个特殊的 header。