gpt4 book ai didi

python - Curl 有效但 Python 请求无效

转载 作者:太空狗 更新时间:2023-10-29 18:24:23 25 4
gpt4 key购买 nike

我正在尝试从 http://erdos.sdslabs.co/users/shagun.json 获取 JSON 响应.使用浏览器/Python 的 Requests库导致身份验证错误,但 curl 似乎工作正常。

curl http://erdos.sdslabs.co/users/shagun.json 

返回 JSON 响应。

为什么 curl 请求可以工作,而普通浏览器或基于请求的请求会失败?

最佳答案

使用telnet查看:

$ telnet erdos.sdslabs.co 80
Trying 62.141.37.215...
Connected to erdos.sdslabs.co.
Escape character is '^]'.
GET http://erdos.sdslabs.co/users/shagun.json HTTP/1.0

HTTP/1.1 302 Found
Date: Sat, 26 Jul 2014 11:18:58 GMT
Server: Apache
Set-Cookie: PHPSESSID=juvg7vrg3vs4t00om3a95m4sc7; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: /login
Access-Control-Allow-Origin: http://erdos.sdslabs.co
X-Powered-By: PleskLin
Content-Length: 1449
Connection: close
Content-Type: application/json

{"email":"sshagun.sodhani@gmail.com","username":"shagun","name":"Shagun
[...]

我们看到 Web 服务器正在响应 302 - 重定向到 Location/login。请求和 web 浏览器遵守这一点,并到达登录提示。但是,我们看到 Web 服务器用您想要的 json 进行响应,而 curl(和 telnet)非常简单,只需接受该数据即可。

最佳做法是修复网络服务器,使其不需要您登录,或者在要求用户登录的同时不提供受密码保护的数据。

如果你不能改变网络服务器,你可以告诉请求模块忽略重定向:

import requests
result = requests.get('http://erdos.sdslabs.co/users/shagun.json', allow_redirects=False)
print result.content

关于python - Curl 有效但 Python 请求无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24970333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com