Для аутентификации на основе пользователей и сертификатов, я хочу использовать urllib, urllib2 или curl? - PullRequest
1 голос
/ 21 октября 2010

Несколько месяцев назад я спешно собрал программу на Python, которая поразила API веб-сервисов моей компании.Он работал в трех разных режимах:

1) HTTP без аутентификации
2) HTTP с аутентификацией по имени пользователя и паролю
3) HTTPS с аутентификацией сертификата клиента

Я получил 1) для работы с urllib, но столкнулся с проблемами с 2) и 3).Вместо того чтобы выяснить это, я в итоге вычислил правильные параметры командной строки для curl и выполнил его через os.system ().

Теперь я переписываю эту программу с опытом,и я не уверен, стоит ли мне использовать urllib, urllib2 или просто придерживаться curl.

В документации по urllib упоминается:

When performing basic authentication, a FancyURLopener instance 
calls its prompt_user_passwd() method. The default implementation 
asks the users for the required     information on the controlling 
terminal. A subclass may override this method to support 
more appropriate behavior if needed.

Также упоминается аргумент ** x509 для urllib.URLopener ():

Additional keyword parameters, collected in x509, may be used for 
authentication of the client when using the https: scheme. The 
keywords key_file and cert_file are supported to provide an SSL 
key and certificate; both are needed to support client 
authentication.

Но urllib2 больше, чем urllib, поэтому, естественно, я хочу использовать его вместо этого.Документация urllib2 полна информации об обработчиках аутентификации, которые, кажется, предназначены для 2) выше, но не упоминает о клиентских сертификатах.

Мой вопрос: хочу ли я использовать urllib, потому что он, кажется, поддерживаетвсе, что мне нужно для достижения?Или мне просто придерживаться локона?

Спасибо.

Редактировать: Возможно, мой вопрос недостаточно конкретен, так что вот еще один снимок.Могу ли я достичь того, что я хочу сделать с urllib?Или с urllib2?Или я вынужден использовать локон по необходимости?

1 Ответ

0 голосов
/ 22 октября 2010

Я считаю, что mechanize - это модуль, который вам нужен.

РЕДАКТИРОВАТЬ: mechanize объекты имеют этот метод для аутентификации: add_password(self, url, user, password, realm=None)

...