Как открыть 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'
Это никогда не подводило меня
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
Пожалуйста, прочтите о менеджере паролей urllib2 и базовом обработчике аутентификации, а также обработчике дайджест-аутентификации.
http://docs.python.org/library/urllib2.html#abstractbasicauthhandler-objects
http://docs.python.org/library/urllib2.html#httpdigestauthhandler-objects
Ваш скрипт urllib2 должен фактически предоставить достаточно информации для выполнения HTTP-аутентификации. Имена пользователей, пароли, домены и т. Д.
Если вы хотите передать информацию об имени пользователя и пароле в urllib2, вам необходимо использовать HTTPBasicAuthHandler.
urllib2
HTTPBasicAuthHandler
Вот учебник, показывающий, как это сделать.
Вы не можете таким образом передавать учетные данные urllib2.open. В вашем случае user интерпретируется как имя домена, а password@domain.com - как номер порта.
urllib2.open
user
password@domain.com