Python HTTP Basic Auth 的机械化实现
Python mechanize implementation of HTTP Basic Auth
我可以使用请求使 HTTP 基本身份验证工作:
import requests
request = requests.post(url, auth=(user, pass), data={'a':'whatever'})
同时使用 urllib2 和 urllib:
import urllib2, urllib
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, user, pass)
auth_handler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
content = urllib2.urlopen(url, urllib.urlencode({'a': 'whatever'}))
问题是当我尝试使用 mechanize 做同样的事情时出现未经授权的错误:
import mechanize, urllib
from base64 import b64encode
browser = mechanize.Browser()
b64login = b64encode('%s:%s' % (user, pass))
browser.addheaders.append(('Authorization', 'Basic %s' % b64login ))
request = mechanize.Request(url)
response = mechanize.urlopen(request, data=urllib.urlencode({'a':'whatever}))
错误:
HTTPError: HTTP Error 401: UNAUTHORIZED
我尝试使用 mechanize 的代码可能会尝试以不同于其他两个代码片段的方式进行身份验证。所以问题是如何在 mechanize 中实现相同的身份验证过程。
我正在使用 python 2.7.12
header 应该添加到请求而不是浏览器。事实上,甚至不需要浏览器变量。
import mechanize, urllib
from base64 import b64encode
b64login = b64encode('%s:%s' % (user, pass))
request = mechanize.Request(url)
request.add_header('Authorization', 'Basic %s' % b64login )
response = mechanize.urlopen(request, data=urllib.urlencode({'a':'whatever'}))
我可以使用请求使 HTTP 基本身份验证工作:
import requests
request = requests.post(url, auth=(user, pass), data={'a':'whatever'})
同时使用 urllib2 和 urllib:
import urllib2, urllib
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, user, pass)
auth_handler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
content = urllib2.urlopen(url, urllib.urlencode({'a': 'whatever'}))
问题是当我尝试使用 mechanize 做同样的事情时出现未经授权的错误:
import mechanize, urllib
from base64 import b64encode
browser = mechanize.Browser()
b64login = b64encode('%s:%s' % (user, pass))
browser.addheaders.append(('Authorization', 'Basic %s' % b64login ))
request = mechanize.Request(url)
response = mechanize.urlopen(request, data=urllib.urlencode({'a':'whatever}))
错误:
HTTPError: HTTP Error 401: UNAUTHORIZED
我尝试使用 mechanize 的代码可能会尝试以不同于其他两个代码片段的方式进行身份验证。所以问题是如何在 mechanize 中实现相同的身份验证过程。 我正在使用 python 2.7.12
header 应该添加到请求而不是浏览器。事实上,甚至不需要浏览器变量。
import mechanize, urllib
from base64 import b64encode
b64login = b64encode('%s:%s' % (user, pass))
request = mechanize.Request(url)
request.add_header('Authorization', 'Basic %s' % b64login )
response = mechanize.urlopen(request, data=urllib.urlencode({'a':'whatever'}))