Принять Cookies в Python

Как я могу принимать файлы cookie в python script?

Ответ 1

Попробуйте следующее:

import urllib2 
import cookielib

jar = cookielib.FileCookieJar("cookies")
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))

print "Currently have %d cookies" % len(jar)
print "Getting page"
response = opener.open("http://google.com")
print response.headers
print "Got page"
print "Currently have %d cookies" % len(jar)
print jar

Он должен печатать

Currently have 0 cookies
...
Currently have 2 cookies

(Google всегда устанавливает файл cookie). Вам это действительно не нужно, если вы не хотите сохранять свои файлы cookie на диск и использовать их позже. Вы должны найти, что

urllib2.build_opener(HTTPCookieProcessor).open(url)

берет на себя большую часть того, что вы хотите.

Подробнее здесь:

Ответ 2

Возможно, вы захотите посмотреть cookielib.

Ответ 3

Самый простой способ - использовать requests библиотеку.

import requests
url = 'http://www.google.com/doodles/'
r = requests.get(url)
print r.cookies

Ответ 4

Я считаю, что вы имеете в виду Python script, который пытается говорить HTTP. Я предлагаю вам использовать библиотеку высокого уровня, которая автоматически обрабатывает файлы cookie. pycurl, mechanize, twill - вы выбираете.

Для Нихиля Челье:

Я не понимаю, что здесь неясно.

Принятие cookie происходит на стороне клиента. Сервер может установить файл cookie.

Ответ 5

Неясно, хотите ли вы клиентскую или серверную версию.

Для клиентской стороны cookielib будет работать нормально. Этот ответ и несколько веб-руководств предлагают более подробные объяснения.

Если это проблема на стороне сервера, вы должны использовать фреймворк, который заботится обо всех шаблонах. Мне очень нравится, как CherryPy и web.py обрабатывать их, но API довольно прост в любой библиотеке.

Ответ 6

Там библиотека cookielib. Вы также можете реализовать свое хранилище и политики для файлов cookie, куки файлы находятся в заголовке ответа set-cookie (Set-Cookie: name = value), после чего вы отправляете обратно сервер на один или несколько заголовков Cookie в request (Cookie: name = value).