更新:基于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)
Run Code Online (Sandbox Code Playgroud)
不幸的是它仍然不会生成Authorization标题(每Wireshark):(
我在通过urllib2发送基本AUTH时遇到问题.我看了一下这篇文章,并按照这个例子.我的代码:
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()
Run Code Online (Sandbox Code Playgroud)
我通过wireshark在Wire上看到以下内容:
GET /v1/user HTTP/1.1
Host: api.foursquare.com
Connection: close
Accept-Encoding: gzip
User-Agent: Python-urllib/2.5
Run Code Online (Sandbox Code Playgroud)
您可以看到未通过curl发送请求时发送授权: curl -u user:password http://api.foursquare.com/v1/user …