PyCurl 7.19.0: получать файлы cookie с помощью getinfo (pycurl.COOKIELIST)

Я хотел бы получить Cookies, которые были перенесены с ответом (Set-Cookie: name=value;...).

При передаче константы информации и ссылки пустого списка:

set_cookies = []
c.getinfo(c.COOKIELIST, set_cookies)

Я получаю следующую ошибку:

TypeError: c.getinfo() takes exactly 1 argument (2 given)

Это было просто.

Я также пробовал эту подпись:

set_cookies = c.getinfo(c.COOKIELIST)

Я получаю эту ошибку:

ValueError: invalid argument to getinfo

Однако это немного расплывчато.

Получение кода состояния HTTP с помощью getinfo() работает нормально.

c.setopt(pycurl.VERBOSE, 1) я получаю 200 OK и заголовки Set-Cookie (отладка с c.setopt(pycurl.VERBOSE, 1)).

Конечно, я читал

За очень немногими исключениями константы PycURL производятся из констант libcurl, удаляя префикс CURLINFO_.

Может быть, это исключение?

На мой взгляд, документация довольно плохая и не содержит никакой информации о том, как отправлять файлы cookie с помощью Set-Cookie.

Рекомендации:

1 ответ

Нет способа получить ответные куки после вызова perform(). Заголовки, отправленные сервером, могут быть записаны с использованием функции обратного вызова, переданной экземпляру PyCurl, при настройке с помощью setopt():

CURLOPT_HEADERFUNCTION

<pre class="prettyprint linenums"> Callback for writing received headers. See CURLOPT_HEADERFUNCTION </pre>

Пример фрагмента кода:

set_cookies = []

 # closure to capture Set-Cookie
 def _write_header(header):
 match = re.match("^Set-Cookie: (.*)$", header)

 if match:
 set_cookies.append(match.group(1))

 # use closure to collect cookies sent from the server
 c.setopt(pycurl.HEADERFUNCTION, _write_header)

Рекомендации:

licensed under cc by-sa 3.0 with attribution.