Какой самый чистый способ сделать HTTP POST с базовой аутентификацией в Python? - PullRequest
27 голосов
/ 06 июня 2011

Какой самый чистый способ сделать HTTP POST с Basic Auth в Python?

Использование только основных библиотек Python.

Ответы [ 3 ]

55 голосов
/ 06 июня 2011

Серьезно, просто используйте requests:

import requests
resp = requests.post(url, data={}, auth=('user', 'pass'))

Это чистая библиотека Python, установка так же проста, как easy_install requests или pip install requests. У него очень простой и удобный API, и он исправляет ошибки в urllib2, поэтому вам не нужно этого делать. Не усложняйте свою жизнь из-за глупых навязанных им требований. * * 1010

8 голосов
/ 07 августа 2015

Обходное решение для взлома:

urllib.urlopen("https://username:password@hostname/path", data) 

Многие люди не понимают, что старый синтаксис для указания имени пользователя и пароля в URL работает в urllib.urlopen.Похоже, что имя пользователя или пароль не требуют какой-либо кодировки, за исключением случаев, когда пароль содержит символ «@».

5 голосов
/ 06 июня 2011

если вы определяете URL, имя пользователя, пароль и некоторые пост-данные, это должно работать в Python2 ...

import urllib2

passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, username, password)
auth_handler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
content = urllib2.urlopen(url, post_data)

пример из официальных документов Python, показывающих Basic Auth в urllib2: * http://docs.python.org/release/2.6/howto/urllib2.html

полное руководство по базовой аутентификации с использованием urllib2: * http://www.voidspace.org.uk/python/articles/authentication.shtml

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