【发布时间】:2011-06-06 18:00:26
【问题描述】:
在 Python 中使用 Basic Auth 进行 HTTP POST 最简洁的方法是什么?
仅使用 Python 核心库。
【问题讨论】:
标签: python http basic-authentication
在 Python 中使用 Basic Auth 进行 HTTP POST 最简洁的方法是什么?
仅使用 Python 核心库。
【问题讨论】:
标签: python http basic-authentication
说真的,只需使用requests:
import requests
resp = requests.post(url, data={}, auth=('user', 'pass'))
这是一个纯python库,安装就像easy_install requests或pip install requests一样简单。它有一个非常简单易用的 API,它修复了 urllib2 中的错误,因此您不必这样做。不要因为愚蠢的自我强加要求而让你的生活变得更艰难。
【讨论】:
Hackish 变通方法有效:
urllib.urlopen("https://username:password@hostname/path", data)
很多人没有意识到在 URL 中指定用户名和密码的旧语法在 urllib.urlopen 中有效。用户名或密码似乎不需要任何编码,除非密码包含“@”符号。
【讨论】:
如果你定义了一个 url、用户名、密码和一些 post-data,这应该可以在 Python2 中工作......
import urllib2
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, username, password)
auth_handler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
content = urllib2.urlopen(url, post_data)
来自官方 Python 文档的示例显示 urllib2 中的基本身份验证: * http://docs.python.org/release/2.6/howto/urllib2.html
使用 urllib2 进行基本身份验证的完整教程: * http://www.voidspace.org.uk/python/articles/authentication.shtml
【讨论】: