http.cookiejar — HTTPクライアントのCookie処理—Pythonドキュメント
目次
http.cookiejar —HTTPクライアントのCookie処理
ソースコード: :source: `Lib / http / cookiejar.py`
http.cookiejar モジュールは、HTTPCookieを自動処理するためのクラスを定義します。 cookies などの小さなデータをWebサーバーからのHTTP応答によってクライアントマシンに設定し、その後のHTTP要求でサーバーに返す必要があるWebサイトにアクセスする場合に便利です。
通常のNetscapeCookieプロトコルと RFC 2965 で定義されたプロトコルの両方が処理されます。 RFC 2965の処理は、デフォルトでオフになっています。 RFC 2109 CookieはNetscapeCookieとして解析され、その後、有効な「ポリシー」に従ってNetscapeまたはRFC2965Cookieとして扱われます。 インターネット上のCookieの大部分はNetscapeCookieであることに注意してください。 http.cookiejar は、max-age
および [に注意することを含め、事実上のNetscape Cookieプロトコル(元のNetscape仕様で設定されたものとは大幅に異なります)に従おうとします。 X216X] Cookie-RFC2965で導入された属性。
ノート
Set-Cookie および Set-Cookie2 ヘッダーにあるさまざまな名前付きパラメーター(例: domain
およびexpires
)は、従来、属性と呼ばれていました。 これらをPython属性と区別するために、このモジュールのドキュメントでは、代わりに cookie-attribute という用語を使用しています。
モジュールは次の例外を定義します:
- exception http.cookiejar.LoadError
FileCookieJar のインスタンスは、ファイルからCookieをロードできない場合に、この例外を発生させます。 LoadError は、 OSError のサブクラスです。
次のクラスが提供されています。
- class http.cookiejar.CookieJar(policy=None)
policy は、 CookiePolicy インターフェースを実装するオブジェクトです。
CookieJar クラスはHTTPCookieを格納します。 HTTPリクエストからCookieを抽出し、HTTPレスポンスで返します。 CookieJar インスタンスは、必要に応じて、含まれているCookieを自動的に期限切れにします。 サブクラスは、ファイルまたはデータベースからのCookieの保存と取得も担当します。
- class http.cookiejar.FileCookieJar(filename, delayload=None, policy=None)
policy は、 CookiePolicy インターフェースを実装するオブジェクトです。 その他の引数については、対応する属性のドキュメントを参照してください。
CookieJar は、ディスク上のファイルからCookieをロードし、場合によってはCookieを保存することができます。 load()または revert()メソッドが呼び出されるまで、Cookieは指定されたファイルから NOT ロードされます。 このクラスのサブクラスは、セクション FileCookieJarサブクラスおよびWebブラウザーとの連携に記載されています。
バージョン3.8で変更: filenameパラメーターはパスのようなオブジェクトをサポートします。
- class http.cookiejar.CookiePolicy
- このクラスは、各Cookieをサーバーから受け入れるかサーバーに返すかを決定する役割を果たします。
- class http.cookiejar.DefaultCookiePolicy(blocked_domains=None, allowed_domains=None, netscape=True, rfc2965=False, rfc2109_as_netscape=None, hide_cookie2=False, strict_domain=False, strict_rfc2965_unverifiable=True, strict_ns_unverifiable=False, strict_ns_domain=DefaultCookiePolicy.DomainLiberal, strict_ns_set_initial_dollar=False, strict_ns_set_path=False, secure_protocols=('https', 'wss'))
コンストラクター引数は、キーワード引数としてのみ渡す必要があります。 blocked_domains は、Cookieを受け入れたり、Cookieを返したりすることのない一連のドメイン名です。 allowed_domains None でない場合、これは、Cookieを受け入れて返す唯一のドメインのシーケンスです。 secure_protocols は、セキュアCookieを追加できる一連のプロトコルです。 デフォルトでは、 https および wss (安全なWebSocket)は安全なプロトコルと見なされます。 他のすべての引数については、 CookiePolicy および DefaultCookiePolicy オブジェクトのドキュメントを参照してください。
DefaultCookiePolicy は、Netscapeおよび RFC 2965 Cookieの標準の承認/拒否ルールを実装します。 デフォルトでは、 RFC 2109 Cookie(つまり、 バージョンcookie-attributeが1)の Set-Cookie ヘッダーで受信されたcookieは、RFC2965ルールに従って処理されます。 ただし、RFC 2965の処理がオフになっている場合、または rfc2109_as_netscape が
True
の場合、RFC 2109 Cookieは、 CookieJar インスタンスによってNetscapeCookieに「ダウングレード」されます。 Cookie インスタンスのX195X] 属性を0に設定します。 DefaultCookiePolicy は、ポリシーの微調整を可能にするいくつかのパラメーターも提供します。
- class http.cookiejar.Cookie
- このクラスは、Netscape、 RFC 2109 および RFC 2965 Cookieを表します。 http.cookiejar のユーザーが独自の Cookie インスタンスを作成することは想定されていません。 代わりに、必要に応じて、 CookieJar インスタンスで
make_cookies()
を呼び出します。
も参照してください
- モジュール urllib.request
- 自動Cookie処理によるURLオープニング。
- モジュール http.cookies
- HTTP cookieクラス。主に、サーバー側のコードに役立ちます。 http.cookiejar モジュールと http.cookies モジュールは相互に依存していません。
- https://curl.haxx.se/rfc/cookie_spec.html
- オリジナルのNetscapeCookieプロトコルの仕様。 これは依然として主要なプロトコルですが、すべての主要なブラウザ(および http.cookiejar )によって実装された「Netscapecookieプロトコル」は、
cookie_spec.html
でスケッチされたものと非常に似ています。 - RFC 2109 -HTTP状態管理メカニズム
- RFC 2965 によって廃止されました。 version = 1で Set-Cookie を使用します。
- RFC 2965 -HTTP状態管理メカニズム
- バグが修正されたNetscapeプロトコル。 Set-Cookie の代わりに Set-Cookie2 を使用します。 広く使用されていません。
- http://kristol.org/cookie/errata.html
- RFC 2965 への未完成のエラッタ。
RFC 2964 -HTTP状態管理の使用
CookieJarおよびFileCookieJarオブジェクト
CookieJar オブジェクトは、含まれている Cookie オブジェクトを反復処理するための iterator プロトコルをサポートします。
CookieJar には次のメソッドがあります。
- CookieJar.add_cookie_header(request)
正しい Cookie ヘッダーを request に追加します。
ポリシーで許可されている場合(つまり、 CookieJar の CookiePolicy インスタンスの
rfc2965
属性とhide_cookie2
属性はそれぞれtrueとfalse)、 Cookie2 ヘッダー必要に応じて追加されます。request オブジェクト(通常は urllib.request.Request インスタンス)は、メソッド
get_full_url()
、get_host()
、get_type()
、unverifiable()
、has_header()
、get_header()
、header_items()
、add_unredirected_header()
、およびorigin_req_host
属性( urllibに記載)。リクエスト。バージョン3.3で変更: request オブジェクトには
origin_req_host
属性が必要です。 非推奨のメソッドget_origin_req_host()
への依存関係は削除されました。
- CookieJar.extract_cookies(response, request)
HTTP response からCookieを抽出し、ポリシーで許可されている場合は CookieJar に保存します。
CookieJar は、 response 引数で許可される Set-Cookie および Set-Cookie2 ヘッダーを探し、必要に応じてCookieを保存します(件名 CookiePolicy.set_ok()メソッドの承認に)。
response オブジェクト(通常は urllib.request.urlopen()などの呼び出しの結果)は、を返す
info()
メソッドをサポートする必要があります。 ] email.message.Message インスタンス。request オブジェクト(通常は urllib.request.Request インスタンス)は、メソッド
get_full_url()
、get_host()
、unverifiable()
、 urllib.request に記載されているように、origin_req_host
属性。 このリクエストは、Cookie属性のデフォルト値を設定するため、およびCookieの設定が許可されていることを確認するために使用されます。バージョン3.3で変更: request オブジェクトには
origin_req_host
属性が必要です。 非推奨のメソッドget_origin_req_host()
への依存関係は削除されました。
- CookieJar.set_policy(policy)
- 使用する CookiePolicy インスタンスを設定します。
- CookieJar.make_cookies(response, request)
response オブジェクトから抽出された Cookie オブジェクトのシーケンスを返します。
response および request 引数に必要なインターフェースについては、 extract_cookies()のドキュメントを参照してください。
- CookieJar.set_cookie_if_ok(cookie, request)
- ポリシーで問題がないと表示されている場合は、 Cookie を設定します。
- CookieJar.set_cookie(cookie)
- Cookie を設定します。ポリシーを確認せずに、設定する必要があるかどうかを確認します。
- CookieJar.clear([domain[, path[, name]]])
いくつかのクッキーをクリアします。
引数なしで呼び出された場合は、すべてのCookieをクリアします。 引数を1つ指定すると、そのドメインに属するCookieのみが削除されます。 2つの引数を指定すると、指定したドメインとURL パスに属するCookieが削除されます。 3つの引数を指定すると、ドメイン、パス、および名前が指定されたCookieが削除されます。
一致するCookieが存在しない場合、 KeyError を発生させます。
- CookieJar.clear_session_cookies()
すべてのセッションCookieを破棄します。
真の
discard
属性を持つすべての含まれているCookieを破棄します(通常、max-age
またはexpires
cookie属性がないか、明示的なdiscard
cookieがないためです-属性)。 インタラクティブブラウザの場合、セッションの終了は通常、ブラウザウィンドウを閉じることに対応します。save()
メソッドは、真の ignore_discard 引数を渡して別の方法で要求しない限り、セッションCookieを保存しないことに注意してください。
FileCookieJar は、次の追加メソッドを実装します。
- FileCookieJar.save(filename=None, ignore_discard=False, ignore_expires=False)
Cookieをファイルに保存します。
この基本クラスは NotImplementedError を発生させます。 サブクラスは、このメソッドを実装しないままにする場合があります。
filename は、Cookieを保存するファイルの名前です。 filename が指定されていない場合は、
self.filename
が使用されます(デフォルトはコンストラクターに渡される値です)。self.filename
が None の場合、 ValueError が発生します。ignore_discard :破棄されるように設定されたCookieも保存します。 ignore_expires :期限切れのCookieも保存します
ファイルがすでに存在する場合は上書きされるため、ファイルに含まれるすべてのCookieが消去されます。 保存されたCookieは、 load()または revert()メソッドを使用して後で復元できます。
- FileCookieJar.load(filename=None, ignore_discard=False, ignore_expires=False)
ファイルからCookieをロードします。
古いCookieは、新しくロードされたCookieによって上書きされない限り保持されます。
引数は save()と同じです。
名前付きファイルは、クラスが理解できる形式である必要があります。そうでない場合、 LoadError が発生します。 また、ファイルが存在しない場合など、 OSError が発生する場合があります。
- FileCookieJar.revert(filename=None, ignore_discard=False, ignore_expires=False)
保存したファイルからすべてのCookieをクリアし、Cookieを再読み込みします。
revert()は、 load()と同じ例外を発生させる可能性があります。 障害が発生した場合、オブジェクトの状態は変更されません。
FileCookieJar インスタンスには、次のパブリック属性があります。
- FileCookieJar.filename
- Cookieを保持するデフォルトファイルのファイル名。 この属性はに割り当てることができます。
- FileCookieJar.delayload
- trueの場合、ディスクからCookieを遅延ロードします。 この属性はに割り当てないでください。 これはパフォーマンスにのみ影響し、動作には影響しないため(ディスク上のCookieが変更されていない限り)、これはヒントにすぎません。 CookieJar オブジェクトはそれを無視する場合があります。 標準ライブラリに含まれている FileCookieJar クラスはどれもCookieを遅延ロードしません。
FileCookieJarサブクラスとWebブラウザとの連携
次の CookieJar サブクラスは、読み取りと書き込み用に提供されています。
- class http.cookiejar.MozillaCookieJar(filename, delayload=None, policy=None)
FileCookieJar は、Mozilla
cookies.txt
ファイル形式(LynxおよびNetscapeブラウザーでも使用されます)でCookieをディスクにロードおよび保存できます。ノート
これにより、 RFC 2965 Cookieに関する情報、および
port
などの新しいまたは非標準のCookie属性に関する情報が失われます。警告
紛失/破損が不便なCookieがある場合は、保存する前にCookieをバックアップしてください(ロード/保存のラウンドトリップでファイルにわずかな変更が生じる可能性のある微妙な点がいくつかあります)。
また、Mozillaの実行中に保存されたCookieは、Mozillaによって破壊されることに注意してください。
- class http.cookiejar.LWPCookieJar(filename, delayload=None, policy=None)
libwww-perlライブラリの
Set-Cookie3
ファイル形式と互換性のある形式でCookieをディスクにロードおよび保存できる FileCookieJar 。 これは、人間が読めるファイルにCookieを保存する場合に便利です。バージョン3.8で変更: filenameパラメーターはパスのようなオブジェクトをサポートします。
CookiePolicyオブジェクト
CookiePolicy インターフェースを実装するオブジェクトには、次のメソッドがあります。
- CookiePolicy.set_ok(cookie, request)
サーバーからCookieを受け入れるかどうかを示すブール値を返します。
cookie は Cookie インスタンスです。 request は、 CookieJar.extract_cookies()のドキュメントで定義されているインターフェースを実装するオブジェクトです。
- CookiePolicy.return_ok(cookie, request)
Cookieをサーバーに返す必要があるかどうかを示すブール値を返します。
cookie は Cookie インスタンスです。 request は、 CookieJar.add_cookie_header()のドキュメントで定義されているインターフェースを実装するオブジェクトです。
- CookiePolicy.domain_return_ok(domain, request)
Cookieドメインを指定して、Cookieを返送しない場合は、
False
を返します。この方法は最適化です。 これにより、特定のドメインを持つすべてのCookieをチェックする必要がなくなります(多くのファイルの読み取りが必要になる場合があります)。 domain_return_ok()および path_return_ok()からtrueを返すと、すべての作業が return_ok()に委ねられます。
domain_return_ok()がCookieドメインに対してtrueを返す場合、 path_return_ok()がCookieパスに対して呼び出されます。 それ以外の場合、 path_return_ok()および return_ok()がそのCookieドメインに対して呼び出されることはありません。 path_return_ok()がtrueを返す場合、 return_ok()は、完全なチェックのために Cookie オブジェクト自体で呼び出されます。 それ以外の場合、 return_ok()がそのCookieパスに対して呼び出されることはありません。
domain_return_ok()は、 request ドメインだけでなく、すべての cookie ドメインに対して呼び出されることに注意してください。 たとえば、リクエストドメインが
"www.example.com"
の場合、関数は".example.com"
と"www.example.com"
の両方で呼び出される可能性があります。 path_return_ok()についても同じことが言えます。request 引数は、 return_ok()に記載されているとおりです。
- CookiePolicy.path_return_ok(path, request)
Cookieのパスを指定して、Cookieを返さない場合は、
False
を返します。domain_return_ok()のドキュメントを参照してください。
上記のメソッドの実装に加えて、 CookiePolicy インターフェースの実装では、使用するプロトコルとその方法を示す次の属性も提供する必要があります。 これらの属性はすべてに割り当てることができます。
- CookiePolicy.netscape
- Netscapeプロトコルを実装します。
- CookiePolicy.rfc2965
- RFC 2965 プロトコルを実装します。
- CookiePolicy.hide_cookie2
- Cookie2 ヘッダーをリクエストに追加しないでください(このヘッダーの存在は、 RFC 2965 Cookieを理解していることをサーバーに示します)。
CookiePolicy クラスを定義する最も便利な方法は、 DefaultCookiePolicy からサブクラス化し、上記のメソッドの一部またはすべてをオーバーライドすることです。 CookiePolicy 自体を「nullポリシー」として使用して、すべてのCookieの設定と受信を許可することができます(これが役立つ可能性は低いです)。
DefaultCookiePolicyオブジェクト
Cookieを受け入れて返すための標準ルールを実装します。
RFC 2965 とNetscapeCookieの両方がカバーされています。 RFC 2965の処理は、デフォルトでオフになっています。
独自のポリシーを提供する最も簡単な方法は、このクラスをオーバーライドし、オーバーライドされた実装でそのメソッドを呼び出してから、独自のチェックを追加することです。
import http.cookiejar
class MyCookiePolicy(http.cookiejar.DefaultCookiePolicy):
def set_ok(self, cookie, request):
if not http.cookiejar.DefaultCookiePolicy.set_ok(self, cookie, request):
return False
if i_dont_want_to_store_this_cookie(cookie):
return False
return True
CookiePolicy インターフェースの実装に必要な機能に加えて、このクラスを使用すると、ドメインによるCookieの設定と受信をブロックおよび許可できます。 かなり緩いNetscapeプロトコルルールを少し厳しくすることを可能にするいくつかの厳密スイッチもあります(いくつかの良性のCookieをブロックするという犠牲を払って)。
ドメインのブラックリストとホワイトリストが提供されます(デフォルトでは両方ともオフになっています)。 ブラックリストに含まれておらず、ホワイトリストに存在するドメイン(ホワイトリストがアクティブな場合)のみがCookieの設定と返却に参加します。 blocked_domains コンストラクター引数、blocked_domains()
およびset_blocked_domains()
メソッド(および allowed_domains の対応する引数とメソッド)を使用します。 ホワイトリストを設定した場合は、なしに設定することで再度オフにすることができます。
ドットで始まらないブロックまたは許可リスト内のドメインは、一致するCookieドメインと同じである必要があります。 たとえば、"example.com"
は"example.com"
のブラックリストエントリと一致しますが、"www.example.com"
は一致しません。 ドットで始まるドメインは、より具体的なドメインとも一致します。 たとえば、"www.example.com"
と"www.coyote.example.com"
の両方が".example.com"
と一致します(ただし、"example.com"
自体は一致しません)。 IPアドレスは例外であり、完全に一致する必要があります。 たとえば、blocked_domainsに"192.168.1.2"
と".168.1.2"
が含まれている場合、192.168.1.2はブロックされますが、193.168.1.2はブロックされません。
DefaultCookiePolicy は、次の追加メソッドを実装します。
- DefaultCookiePolicy.blocked_domains()
- ブロックされたドメインのシーケンスを(タプルとして)返します。
- DefaultCookiePolicy.set_blocked_domains(blocked_domains)
- ブロックされたドメインのシーケンスを設定します。
- DefaultCookiePolicy.is_blocked(domain)
- ドメインがCookieを設定または受信するためのブラックリストに含まれているかどうかを返します。
- DefaultCookiePolicy.allowed_domains()
- None 、または許可されたドメインのシーケンス(タプルとして)を返します。
- DefaultCookiePolicy.set_allowed_domains(allowed_domains)
- 許可されるドメインの順序、またはなしを設定します。
- DefaultCookiePolicy.is_not_allowed(domain)
- ドメインがCookieを設定または受信するためのホワイトリストに含まれていないかどうかを返します。
DefaultCookiePolicy インスタンスには次の属性があります。これらはすべて同じ名前のコンストラクター引数から初期化され、すべてに割り当てることができます。
- DefaultCookiePolicy.rfc2109_as_netscape
- trueの場合、 CookieJar インスタンスが RFC 2109 Cookieをダウングレードするように要求します(つまり、 Cookie インスタンスのバージョン属性を0に設定することにより、バージョンcookie属性が1)の Set-Cookie ヘッダーで受信したCookieをNetscapeCookieに設定します。 デフォルト値は None です。この場合、RFC 2109 Cookieは、 RFC 2965 処理がオフになっている場合にのみダウングレードされます。 したがって、RFC2109Cookieはデフォルトでダウングレードされます。
一般的な厳密性スイッチ:
- DefaultCookiePolicy.strict_domain
- サイトが
.co.uk
、.gov.uk
、.co.nz
などの国コードトップレベルドメインで2コンポーネントドメインを設定することを許可しないでください。 これは完璧にはほど遠いため、動作が保証されていません。
RFC 2965 プロトコル厳密性スイッチ:
- DefaultCookiePolicy.strict_rfc2965_unverifiable
- 検証不可能なトランザクションに関する RFC 2965 ルールに従います(通常、検証不可能なトランザクションは、リダイレクトまたは別のサイトでホストされているイメージの要求から生じるトランザクションです)。 これがfalseの場合、検証可能性に基づいてCookieがブロックされることはありません
Netscapeプロトコルの厳密性スイッチ:
- DefaultCookiePolicy.strict_ns_unverifiable
- Netscape Cookieに対しても、検証不可能なトランザクションに RFC 2965 ルールを適用します。
- DefaultCookiePolicy.strict_ns_domain
- NetscapeCookieのドメインマッチングルールをどの程度厳しくするかを示すフラグ。 許容値については、以下を参照してください。
- DefaultCookiePolicy.strict_ns_set_initial_dollar
'$'
で始まる名前のSet-Cookie:ヘッダーのCookieを無視します。
- DefaultCookiePolicy.strict_ns_set_path
- パスがリクエストURIとパス一致しないCookieの設定を許可しないでください。
strict_ns_domain
はフラグのコレクションです。 その値は、or-を一緒に使用して作成されます(たとえば、DomainStrictNoDots|DomainStrictNonDomain
は、両方のフラグが設定されていることを意味します)。
- DefaultCookiePolicy.DomainStrictNoDots
- Cookieを設定する場合、「ホストプレフィックス」にドットを含めることはできません(例:
www.foo.bar.com
は.bar.com
のCookieを設定できません。
- DefaultCookiePolicy.DomainStrictNonDomain
domain
cookie-attributeを明示的に指定しなかったCookieは、Cookieを設定したドメインと同じドメインにのみ返されます(例:spam.example.com
は、domain
cookie属性を持たないexample.com
からcookieを返しません。
- DefaultCookiePolicy.DomainRFC2965Match
- Cookieを設定するときは、 RFC 2965 ドメインの完全一致が必要です。
以下の属性は便宜上提供されており、上記のフラグの最も有用な組み合わせです。
- DefaultCookiePolicy.DomainLiberal
- 0に相当します(つまり、 上記のNetscapeドメインの厳密性フラグはすべてオフになっています)。
- DefaultCookiePolicy.DomainStrict
DomainStrictNoDots|DomainStrictNonDomain
と同等です。
クッキーオブジェクト
Cookie インスタンスには、さまざまなCookie標準で指定されている標準のCookie属性にほぼ対応するPython属性があります。 max-age
とexpires
のCookie属性には同等の情報が含まれているため、 のため、デフォルト値の割り当てには複雑なルールがあるため、対応は1対1ではありません。 RFC 2109 Cookieは、 http.cookiejar によってバージョン1からバージョン0(Netscape)のCookieに「ダウングレード」される場合があります。
CookiePolicy メソッドでのまれな状況を除いて、これらの属性への割り当ては必要ありません。 クラスは内部整合性を強制しないので、そうする場合は何をしているのかを知っておく必要があります。
- Cookie.version
- 整数またはなし。 NetscapeCookieにはバージョン 0があります。 RFC 2965 および RFC 2109 Cookieには、
version
cookie属性が1です。 ただし、 http.cookiejar はRFC2109CookieをNetscapeCookieに「ダウングレード」する場合があることに注意してください。この場合、 version は0です。
- Cookie.name
- クッキー名(文字列)。
- Cookie.value
- Cookie値(文字列)、またはなし。
- Cookie.port
- ポートまたはポートのセットを表す文字列(例: '80'、または'80、8080 ')、またはなし。
- Cookie.path
- Cookieパス(文字列、例:
'/acme/rocket_launchers'
)。
- Cookie.secure
True
Cookieは安全な接続を介してのみ返される必要がある場合。
- Cookie.expires
- エポックからの秒単位の整数有効期限、またはなし。 is_expired()メソッドも参照してください。
- Cookie.discard
True
これがセッションCookieの場合。
- Cookie.comment
- このCookieの機能を説明するサーバーからの文字列コメント、または None 。
- Cookie.comment_url
- このCookieの機能を説明するサーバーからのコメントにリンクするURL、またはなし。
- Cookie.rfc2109
True
このCookieが RFC 2109 Cookieとして受信された場合(つまり、 Cookieは Set-Cookie ヘッダーに到着し、そのヘッダーのVersion cookie-attributeの値は1)でした。 この属性が提供されるのは、 http.cookiejar がRFC2109CookieをNetscapeCookieに「ダウングレード」する可能性があるためです。この場合、 version は0です。
- Cookie.port_specified
True
ポートまたはポートのセットがサーバーによって明示的に指定された場合( Set-Cookie / Set-Cookie2 ヘッダー内)。
- Cookie.domain_specified
True
ドメインがサーバーによって明示的に指定された場合。
- Cookie.domain_initial_dot
True
サーバーによって明示的に指定されたドメインがドットで始まっている場合('.'
)。
Cookieには、追加の非標準Cookie属性が含まれる場合があります。 これらには、次の方法を使用してアクセスできます。
- Cookie.has_nonstandard_attr(name)
- cookieに名前付きcookie属性がある場合は、
True
を返します。
- Cookie.get_nonstandard_attr(name, default=None)
- cookieに名前付きcookie-attributeがある場合は、その値を返します。 それ以外の場合は、 default を返します。
- Cookie.set_nonstandard_attr(name, value)
- 名前付きcookie属性の値を設定します。
Cookie クラスは、次のメソッドも定義します。
- Cookie.is_expired(now=None)
True
Cookieがサーバーから要求された時間を経過した場合は、有効期限が切れます。 now が指定されている場合(エポックからの秒数)、指定された時間にCookieの有効期限が切れているかどうかを返します。
例
最初の例は、 http.cookiejar の最も一般的な使用法を示しています。
import http.cookiejar, urllib.request
cj = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")
この例は、Netscape、Mozilla、またはLynx Cookieを使用してURLを開く方法を示しています(Cookieファイルの場所についてはUnix / Netscapeの規則を前提としています)。
import os, http.cookiejar, urllib.request
cj = http.cookiejar.MozillaCookieJar()
cj.load(os.path.join(os.path.expanduser("~"), ".netscape", "cookies.txt"))
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")
次の例は、 DefaultCookiePolicy の使用法を示しています。 RFC 2965 Cookieをオンにし、Netscape Cookieを設定および返すときにドメインをより厳密にし、一部のドメインがCookieを設定したり返されたりしないようにブロックします。
import urllib.request
from http.cookiejar import CookieJar, DefaultCookiePolicy
policy = DefaultCookiePolicy(
rfc2965=True, strict_ns_domain=Policy.DomainStrict,
blocked_domains=["ads.net", ".ads.net"])
cj = CookieJar(policy)
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")