обычно мы запрашиваем URL-адрес для аутентификации с библиотекой python urllib2, как описано в этой странице , но это вызовет 2 запроса на сервер, первый ответ с ошибкой 401, а затем во-вторых, клиент кодирует имя пользователя / пароль в заголовок аутентификации и снова запрашивает. Но, если вы знаете сферу и (имя пользователя, пароль), вы можете получить прямой доступ к URL только один раз. Я могу сделать это путем кодирования информации аутентификации в заголовок запроса, и он запрашивает только один раз, но я не могу сделать это с HTTPPasswordMgrWithDefaultRealm и связанным классом.
только один раз код запроса:
import urllib2, base64
url = 'http://xxxx'
username = 'jpx'
passwd = 'jpx123'
b64str = base64.encodestring('%s:%s' % (username, passwd))
req = urllib2.Request(url)
auth = 'Basic %s' % b64str
req.add_header('Authorization', auth)
try:
opener = urllib2.urlopen(req)
except IOError, e:
print str(e)
print opener.read()