投稿されたフォームから Cookie を保存し、同じドメインにある次の URL でそれらの Cookie を使用するには、pycurl が必要です。これは自動的には行われないようです。
COOKIEFILE および COOKIEJAR オプションを読みましたが、これらの Cookie をファイルに保存したくありません。ファイルに保存せずにcurl/pycurlでCookieを有効にする他の方法はありますか?
まあ、libcurl docs は次のように述べています:
CURLOPT_COOKIEFILE
空または存在しないファイルを指定するか、空の文字列 ("") を渡すことにより、このオプションはこの curl ハンドルの Cookie を有効にし、受信した Cookie を理解して解析し、今後の要求で一致する Cookie を使用します。
自分で試してみたところ、同じcurlオブジェクトを使用するだけで見事に機能します。
例
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 応答全体をスキップしました。
PycURLサイトによると、実際のドキュメントはCAPIです。C API CURLOPT_COOKIEおよびCURLOPT_COOKIELISTは、大雑把に言えば、必要なもののように見えます。