gpt4 book ai didi

Python urllib2 基本认证问题

转载 作者:IT老高 更新时间:2023-10-28 21:12:17 26 4
gpt4 key购买 nike

更新:根据 Lee 的评论,我决定将我的代码压缩为一个非常简单的脚本并从命令行运行它:

import urllib2
import sys

username = sys.argv[1]
password = sys.argv[2]
url = sys.argv[3]
print("calling %s with %s:%s\n" % (url, username, password))

passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, username, password)
urllib2.install_opener(urllib2.build_opener(urllib2.HTTPBasicAuthHandler(passman)))

req = urllib2.Request(url)
f = urllib2.urlopen(req)
data = f.read()
print(data)

不幸的是,它仍然不会生成 Authorization header (每个 Wireshark):(

我在通过 urllib2 发送基本 AUTH 时遇到问题。我看了一下this article ,并按照示例进行操作。我的代码:

passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, "api.foursquare.com", username, password)
urllib2.install_opener(urllib2.build_opener(urllib2.HTTPBasicAuthHandler(passman)))

req = urllib2.Request("http://api.foursquare.com/v1/user")
f = urllib2.urlopen(req)
data = f.read()

我通过 wireshark 在 Wire 上看到以下内容:

GET /v1/user HTTP/1.1
Host: api.foursquare.com
Connection: close
Accept-Encoding: gzip
User-Agent: Python-urllib/2.5

你可以看到授权没有发送,而不是当我通过 curl 发送请求时:curl -u user:password http://api.foursquare.com/v1/user

GET /v1/user HTTP/1.1
Authorization: Basic =SNIP=
User-Agent: curl/7.19.4 (universal-apple-darwin10.0) libcurl/7.19.4 OpenSSL/0.9.8k zlib/1.2.3
Host: api.foursquare.com
Accept: */*

由于某种原因,我的代码似乎没有发送身份验证 - 有人看到我遗漏了什么吗?

谢谢

-西蒙

最佳答案

问题可能是 Python 库,根据 HTTP 标准,首先发送未经身份验证的请求,然后只有当它通过 401 重试得到响应时,才会发送正确的凭据。如果 Foursquare 服务器不进行“完全标准的身份验证”,那么这些库将无法工作。

尝试使用 header 进行身份验证:

import urllib2, base64

request = urllib2.Request("http://api.foursquare.com/v1/user")
base64string = base64.b64encode('%s:%s' % (username, password))
request.add_header("Authorization", "Basic %s" % base64string)
result = urllib2.urlopen(request)

和你有同样的问题,从这个帖子找到了解决方案:http://forums.shopify.com/categories/9/posts/27662

关于Python urllib2 基本认证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2407126/

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