)
クッキー
何かを自動化する
は、あなたは、多くの場合、「ログイン」するために、サーバとのセッション/状態のいくつかの並べ替えを維持する必要があります。これは、フォームベースの認証とCookieで実現されることもあります。サーバーにフォームを送信すると、受信HTTPヘッダーのCookieが返されます。その後の状態の維持やセッションを維持するために、このクッキーをサーバーに戻す必要があります。
ここでは、HTTPポストを行う際にクッキーを処理する方法の例を示します。
import urllib
import httplib2
は今、私たちが必要とするデータを定義することができます:まず
は、我々が使用するモジュールをインポートすることができます。この例では、ユーザー名とパスワードを表す2つのフィールドを持つフォームポストを実行しています。
url = 'http://www.example.com/login'
body = {'USERNAME': 'foo', 'PASSWORD': 'bar'}
headers = {'Content-type': 'application/x-www-form-urlencoded'}
今、私たちはHTTPリクエスト送信することができます。この時点で
http = httplib2.Http()
response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body))
を、私たちの「応答」変数は、サーバーから返されたHTTPヘッダフィールドの辞書が含まれています。クッキーが返された場合は、クッキー値を含む "set-cookie"フィールドが表示されます。私たちは、この値を取り、私たちのその後の要求のための発信HTTPヘッダーに入れたい:
headers['Cookie'] = response['set-cookie']
今、私たちは、このヘッダーを使用して要求を送信することができ、それがクッキーを含んでいますので、サーバーが私たちを認識することができます。
これは、スクリプト内のすべてのことです。私たちは、サイトにログインし、我々は、受信したクッキーを使用して別の要求を行います。
#!/usr/bin/env python
import urllib
import httplib2
http = httplib2.Http()
url = 'http://www.example.com/login'
body = {'USERNAME': 'foo', 'PASSWORD': 'bar'}
headers = {'Content-type': 'application/x-www-form-urlencoded'}
response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body))
headers = {'Cookie': response['set-cookie']}
url = 'http://www.example.com/home'
response, content = http.request(url, 'GET', headers=headers)