Сохранение сеанса в python при выполнении HTTP-запросов

Мне нужно написать скрипт python, который делает несколько HTTP-запросов одним и тем же сайтом. Если я не ошибаюсь (и, возможно, очень хорошо), urllib повторно проверяет подлинность для каждого запроса. По причинам, по которым я не буду входить, мне нужно иметь возможность аутентифицироваться один раз, а затем использовать этот сеанс для остальных моих запросов.

Я использую python 2.3.4

  • Самый эффективный способ поиска последних x строк файла в python
  • Как добавить текстуры к моим барам и клиньям?
  • исключение python не распознано; как обращаться с исключением?
  • Редактирование книг с расширенным текстом в openpyxl
  • Как отправить запрос POST?
  • Как отображать номера строк в ячейке кода ноутбука IPython по умолчанию
  • Нарисуйте карту определенной страны с картофелем?
  • Отображение прикрепленного изображения в сообщении HTML
  • 3 Solutions collect form web for “Сохранение сеанса в python при выполнении HTTP-запросов”

    Если вы хотите сохранить аутентификацию, вам нужно повторно использовать файл cookie. Я не уверен, что urllib2 доступен в python 2.3.4, но вот пример того, как это сделать:

    req1 = urllib2.Request(url1) response = urllib2.urlopen(req1) cookie = response.headers.get('Set-Cookie') # Use the cookie is subsequent requests req2 = urllib2.Request(url2) req2.add_header('cookie', cookie) response = urllib2.urlopen(req2) 

    Используйте библиотеку запросов . Из http://docs.python-requests.org/en/latest/user/advanced/#session-objects :

    Объект Session позволяет вам сохранять определенные параметры во всех запросах. Он также сохраняет файлы cookie во всех запросах, сделанных из экземпляра сеанса.

     s = requests.session() s.get('http://httpbin.org/cookies/set/sessioncookie/123456789') r = s.get("http://httpbin.org/cookies") print r.text # '{"cookies": {"sessioncookie": "123456789"}}' 

    Python 2

    Если это проверка подлинности на основе файлов cookie, используйте HTTPCookieProcessor :

     import cookielib, urllib2 cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) r = opener.open("http://example.com/") 

    Если это HTTP-аутентификация, используйте базовый или дайджест AuthHandler :

     import urllib2 # Create an OpenerDirector with support for Basic HTTP Authentication... auth_handler = urllib2.HTTPBasicAuthHandler() auth_handler.add_password(realm='PDQ Application', uri='https://mahler:8092/site-updates.py', user='klem', passwd='kadidd!ehopper') opener = urllib2.build_opener(auth_handler) # ...and install it globally so it can be used with urlopen. urllib2.install_opener(opener) urllib2.urlopen('http://www.example.com/login.html') 

    … и использовать один и тот же нож для каждого запроса.

    Python 3

    В Python3 urllib2 может cookielib перемещаться в http.request и http.cookiejar соответственно.

    Python - лучший язык программирования в мире.