带令牌的Python HTTP请求
怎样用哪个Python库来发送一个带有用户名和密码或者令牌的HTTPS请求呢?
这基本上相当于在命令行中输入 curl -u user:pwd https://www.mysite.com/
的效果。
谢谢!
4 个回答
1
如果你需要安全地进行多线程请求,可以使用 pycurl
(这是 Python 对 curl 的接口):
import pycurl
from StringIO import StringIO
response_buffer = StringIO()
curl = pycurl.Curl()
curl.setopt(curl.URL, "https://www.yoursite.com/")
# Setup the base HTTP Authentication.
curl.setopt(curl.USERPWD, '%s:%s' % ('youruser', 'yourpassword'))
curl.setopt(curl.WRITEFUNCTION, response_buffer.write)
curl.perform()
curl.close()
response_value = response_buffer.getvalue()
否则,可以使用 urllib2
(想了解更多信息可以看看其他回答),因为它是内置的,使用起来更简单明了。
4
使用 Python 的 requests 库:让网络请求变得简单
import requests
requests.get("https://www.mysite.com/", auth=('username','pwd'))
你还可以使用摘要认证...
0
class urllib2.HTTPSHandler 这是一个用来处理打开HTTPS网址的类。
21.6.7. HTTPPasswordMgr对象 这些方法可以在HTTPPasswordMgr和HTTPPasswordMgrWithDefaultRealm对象上使用。
HTTPPasswordMgr.add_password(realm, uri, user, passwd) 这里的uri可以是一个单独的网址,也可以是一系列的网址。realm、user和passwd必须是字符串。这段代码的作用是,当需要验证某个realm和给定网址的超级网址时,会使用(user, passwd)作为认证信息。 HTTPPasswordMgr.find_user_password(realm, authuri) 这个方法用来获取给定realm和网址的用户名和密码,如果有的话。如果没有找到匹配的用户名和密码,这个方法会返回(None, None)。
对于HTTPPasswordMgrWithDefaultRealm对象,如果给定的realm没有匹配的用户名和密码,它会去查找realm为None的情况。