Прочитайте https URL из Python с базовой аутентификацией - PullRequest
4 голосов
/ 15 декабря 2009

Как открыть https URL в Python?

import urllib2

url = "https://user:password@domain.com/path/
f = urllib2.urlopen(url)
print f.read()

дает:

httplib.InvalidURL: nonnumeric port: 'password@domain.com'

Ответы [ 4 ]

11 голосов
/ 15 декабря 2009

Это никогда не подводило меня

import urllib2, base64
username = 'foo'
password = 'bar'
auth_encoded = base64.encodestring('%s:%s' % (username, password))[:-1]

req = urllib2.Request('https://somewebsite.com')
req.add_header('Authorization', 'Basic %s' % auth_encoded)
try:
    response = urllib2.urlopen(req)
except urllib2.HTTPError, http_e:
    # etc...
    pass
5 голосов
/ 15 декабря 2009

Пожалуйста, прочтите о менеджере паролей urllib2 и базовом обработчике аутентификации, а также обработчике дайджест-аутентификации.

http://docs.python.org/library/urllib2.html#abstractbasicauthhandler-objects

http://docs.python.org/library/urllib2.html#httpdigestauthhandler-objects

Ваш скрипт urllib2 должен фактически предоставить достаточно информации для выполнения HTTP-аутентификации. Имена пользователей, пароли, домены и т. Д.

3 голосов
/ 15 декабря 2009

Если вы хотите передать информацию об имени пользователя и пароле в urllib2, вам необходимо использовать HTTPBasicAuthHandler.

Вот учебник, показывающий, как это сделать.

2 голосов
/ 15 декабря 2009

Вы не можете таким образом передавать учетные данные urllib2.open. В вашем случае user интерпретируется как имя домена, а password@domain.com - как номер порта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...