Как заставить Pycurl отправлять куки, но не сохранять их в файл? - PullRequest
2 голосов
/ 02 декабря 2010

Мне нужен pycurl, чтобы сохранить файлы cookie из опубликованной формы, а затем использовать эти файлы cookie в следующем URL-адресе, который находится в том же домене. Кажется, это не происходит автоматически.

Я прочитал опции COOKIEFILE и COOKIEJAR, но я не хочу сохранять эти куки в файл. Так есть ли другой способ включить куки с помощью curl / pycurl без сохранения их в файл?

Ответы [ 2 ]

4 голосов
/ 04 мая 2012

Хорошо, документация libcurl гласит:

CURLOPT_COOKIEFILE

Дан пустой или несуществующий файл или передана пустая строка (""), эта опция активирует куки для этой ручки скручивания, заставляя ее понимать и анализировать полученные куки, а затем использовать совпадающие куки в будущих запросах.

Только что попробовал сам, и он работает блестяще, просто используйте ту же самую локонobject.

Пример

import pycurl
curl = pycurl.Curl()

# Turn on cookies
curl.setopt(pycurl.COOKIEFILE, "")

# Login
curl.setopt(pycurl.URL, "http://www.example.com/login.php")
curl.setopt(pycurl.POST, 1)
curl.setopt(pycurl.HTTPPOST, [('user', 'myuser'), ('pass', 'mypass'), ('submit', 'login')])
curl.perform()

# Now let's get us some members only page
curl.setopt(pycurl.POST, 0) 
curl.setopt(pycurl.URL, "http://www.example.com/members_only.php")
curl.perform()

Я пропустил весь ответ StringIO, чтобы мы могли оставаться в теме.

1 голос
/ 02 декабря 2010

Согласно сайту PycURL, настоящая документация - это C API.C API CURLOPT_COOKIE и CURLOPT_COOKIELIST, которые при беглом взгляде выглядят так, как вам нужно .

...