http.cookiejar
— Cookiehantering för HTTP-klienter¶
Källkod: Lib/http/cookiejar.py
Modulen http.cookiejar
definierar klasser för automatisk hantering av HTTP-cookies. Den är användbar för att komma åt webbplatser som kräver att små bitar av data – cookies – sätts på klientmaskinen av ett HTTP-svar från en webbserver och sedan returneras till servern i senare HTTP-förfrågningar.
Både det vanliga Netscape-cookieprotokollet och det protokoll som definieras av RFC 2965 hanteras. RFC 2965-hanteringen är avstängd som standard. RFC 2109-cookies analyseras som Netscape-cookies och behandlas därefter antingen som Netscape- eller RFC 2965-cookies enligt gällande ”policy”. Observera att de allra flesta cookies på Internet är Netscape-cookies. http.cookiejar
försöker följa Netscapes de facto cookieprotokoll (som skiljer sig väsentligt från det som anges i den ursprungliga Netscape-specifikationen), inklusive att notera cookieattributen max-age
och port
som introducerades med RFC 2965.
Anteckning
De olika namngivna parametrarna som finns i Set-Cookie och Set-Cookie2 (t.ex. domain
och expires
) kallas konventionellt för attributes. För att skilja dem från Python-attribut använder dokumentationen för den här modulen termen cookie-attribut istället.
Modulen definierar följande undantag:
- exception http.cookiejar.LoadError¶
Instanser av
FileCookieJar
ger upphov till detta undantag om det inte går att ladda cookies från en fil.LoadError
är en underklass tillOSError
.
Följande klasser erbjuds:
- class http.cookiejar.CookieJar(policy=None)¶
policy är ett objekt som implementerar gränssnittet
CookiePolicy
.Klassen
CookieJar
lagrar HTTP-cookies. Den extraherar cookies från HTTP-förfrågningar och returnerar dem i HTTP-svar. Instanser avCookieJar
förfaller automatiskt när det behövs. Underklasser är också ansvariga för att lagra och hämta cookies från en fil eller databas.
- class http.cookiejar.FileCookieJar(filename=None, delayload=None, policy=None)¶
policy är ett objekt som implementerar gränssnittet
CookiePolicy
. För övriga argument, se dokumentationen för motsvarande attribut.En
CookieJar
som kan ladda cookies från, och kanske spara cookies till, en fil på disken. Kakor laddas INTE från den angivna filen förrän antingen metodenload()
ellerrevert()
anropas. Underklasser till denna klass finns dokumenterade i avsnitt FileCookieJar-underklasser och samarbete med webbläsare.Denna ska inte initieras direkt - använd istället dess underklasser nedan.
Ändrad i version 3.8: Filnamnsparametern stöder en path-like object.
- class http.cookiejar.CookiePolicy¶
Denna klass ansvarar för att avgöra om varje cookie ska accepteras från/returneras till servern.
- 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'))¶
Konstruktörsargument ska endast skickas som nyckelordsargument. blocked_domains är en sekvens av domännamn som vi aldrig accepterar cookies från eller returnerar cookies till. allowed_domains om inte
None
, är detta en sekvens av de enda domäner som vi accepterar och returnerar cookies för. secure_protocols är en sekvens av protokoll för vilka säkra cookies kan läggas till. Som standard anses https och wss (secure websocket) vara säkra protokoll. För alla andra argument, se dokumentationen för objektenCookiePolicy
ochDefaultCookiePolicy
.DefaultCookiePolicy
implementerar standardreglerna för att acceptera och avvisa cookies från Netscape och RFC 2965. Som standard behandlas RFC 2109 cookies (dvs. cookies som tas emot i en Set-Cookie header med en version cookie-attribut på 1) enligt RFC 2965-reglerna. Men om RFC 2965-hanteringen är avstängd eller omrfc2109_as_netscape
ärTrue
, ”nedgraderas” RFC 2109-cookies avCookieJar
-instansen till Netscape-cookies, genom att attributetversion
iCookie
-instansen sätts till 0.DefaultCookiePolicy
innehåller också några parametrar som gör det möjligt att finjustera policyn.
- class http.cookiejar.Cookie¶
Denna klass representerar Netscape, RFC 2109 och RFC 2965 cookies. Det förväntas inte att användare av
http.cookiejar
konstruerar sina egnaCookie
-instanser. Anropa istället, om nödvändigt,make_cookies()
på enCookieJar
-instans.
Se även
- Modulen
urllib.request
URL-öppning med automatisk cookiehantering.
- Modul
http.cookies
HTTP-cookieklasser, främst användbara för kod på serversidan. Modulerna
http.cookiejar
ochhttp.cookies
är inte beroende av varandra.- https://curl.se/rfc/cookie_spec.html
Specifikationen av det ursprungliga Netscape cookie-protokollet. Även om detta fortfarande är det dominerande protokollet, har ”Netscape cookie protocol” som implementeras av alla större webbläsare (och
http.cookiejar
) bara en flyktig likhet med det som skisseras icookie_spec.html
.- RFC 2109 - HTTP:s mekanism för tillståndshantering
Föråldrad av RFC 2965. Använder Set-Cookie med version=1.
- RFC 2965 - HTTP:s mekanism för tillståndshantering
Netscape-protokollet med rättade buggar. Använder Set-Cookie2 i stället för Set-Cookie. Används inte i någon större utsträckning.
- https://kristol.org/cookie/errata.html
Oavslutad errata till RFC 2965.
RFC 2964 - Användning av HTTP State Management
CookieJar- och FileCookieJar-objekten¶
CookieJar
-objekt stöder iterator-protokollet för iterering över ingående Cookie
-objekt.
CookieJar
har följande metoder:
- CookieJar.add_cookie_header(request)¶
Lägg till korrekt Cookie header i request.
Om policyn tillåter det (dvs. attributen
rfc2965
ochhide_cookie2
iCookieJar
:sCookiePolicy
-instans är true respektive false), läggs även rubriken Cookie2 till när så är lämpligt.Objektet request (vanligtvis en instans av
urllib.request.Request
) måste stödja metodernaget_full_url()
,has_header()
,get_header()
,header_items()
,add_unredirected_header()
och attributenhost
,type
,unverifiable
ochorigin_req_host
som dokumenteras avurllib.request
.Ändrad i version 3.3: request-objektet behöver attributet
origin_req_host
. Beroendet av en föråldrad metodget_origin_req_host()
har tagits bort.
- CookieJar.extract_cookies(response, request)¶
Extrahera cookies från HTTP svar och lagra dem i
CookieJar
, där det är tillåtet enligt policy.CookieJar
letar efter tillåtna Set-Cookie och Set-Cookie2-rubriker i argumentet response och lagrar cookies på lämpligt sätt (med förbehåll för godkännande av metodenCookiePolicy.set_ok()
).Objektet response (vanligtvis resultatet av ett anrop till
urllib.request.urlopen()
, eller liknande) bör stödja eninfo()
-metod, som returnerar enemail.message.Message
-instans.Objektet request (vanligtvis en instans av
urllib.request.Request
) måste stödja metodenget_full_url()
och attributenhost
,unverifiable
ochorigin_req_host
, enligt dokumentationen iurllib.request
. Begäran används för att ange standardvärden för cookie-attribut samt för att kontrollera att cookien får sättas.Ändrad i version 3.3: request-objektet behöver attributet
origin_req_host
. Beroendet av en föråldrad metodget_origin_req_host()
har tagits bort.
- CookieJar.set_policy(policy)¶
Ange vilken instans av
CookiePolicy
som ska användas.
- CookieJar.make_cookies(response, request)¶
Returnerar sekvens av
Cookie
-objekt extraherade från response-objektet.Se dokumentationen för
extract_cookies()
för de gränssnitt som krävs av argumenten response och request.
- CookieJar.set_cookie_if_ok(cookie, request)¶
Ange en
Cookie
om policyn säger att det är OK att göra det.
- CookieJar.set_cookie(cookie)¶
Ställ in en
Cookie
, utan att kontrollera med policyn om den ska ställas in eller inte.
- CookieJar.clear([domain[, path[, name]]])¶
Rensa några cookies.
Om den anropas utan argument rensas alla cookies. Om ett enda argument anges kommer endast cookies som tillhör den domänen att tas bort. Om två argument anges tas cookies som hör till den angivna domänen och URL-adressen sökväg bort. Om tre argument anges tas cookien med de angivna domän, sökväg och namn bort.
Utlöser
KeyError
om ingen matchande cookie finns.
- CookieJar.clear_session_cookies()¶
Kassera alla sessionscookies.
Slänger alla cookies som har attributet true
discard
(vanligtvis för att de antingen inte hade något cookie-attributmax-age
ellerexpires
, eller ett explicit cookie-attributdiscard
). För interaktiva webbläsare motsvarar slutet på en session vanligtvis att webbläsarfönstret stängs.Observera att metoden
save()
ändå inte sparar sessionskakor, såvida du inte begär något annat genom att ange ett sant ignore_discard-argument.
FileCookieJar
implementerar följande ytterligare metoder:
- FileCookieJar.save(filename=None, ignore_discard=False, ignore_expires=False)¶
Spara cookies till en fil.
Denna basklass ger upphov till
NotImplementedError
. Subklasser kan lämna denna metod oimplementerad.filename är namnet på den fil där cookies ska sparas. Om filename inte anges används
self.filename
(vars standard är det värde som skickas till konstruktören, om det finns något); omself.filename
ärNone
, uppstårValueError
.ignore_discard: sparar även cookies som är inställda på att kastas. ignore_expires: spara även cookies som har löpt ut
Filen skrivs över om den redan finns, vilket innebär att alla cookies som den innehåller raderas. Sparade cookies kan återställas senare med hjälp av metoderna
load()
ellerrevert()
.
- FileCookieJar.load(filename=None, ignore_discard=False, ignore_expires=False)¶
Ladda cookies från en fil.
Gamla cookies sparas om de inte skrivs över av nya cookies.
Argumenten är desamma som för
save()
.Den namngivna filen måste vara i det format som klassen förstår, annars kommer
LoadError
att visas. ÄvenOSError
kan visas, t.ex. om filen inte finns.
- FileCookieJar.revert(filename=None, ignore_discard=False, ignore_expires=False)¶
Rensa alla cookies och ladda om cookies från en sparad fil.
revert()
kan ge upphov till samma undantag somload()
. Om det blir ett misslyckande kommer objektets tillstånd inte att ändras.
FileCookieJar
-instanser har följande publika attribut:
- FileCookieJar.filename¶
Filnamn för standardfilen där cookies ska sparas. Detta attribut kan tilldelas till.
- FileCookieJar.delayload¶
Om true, ladda cookies från disken. Detta attribut bör inte tilldelas till. Det är bara en antydan, eftersom det bara påverkar prestanda, inte beteende (såvida inte kakorna på disken ändras). Ett
CookieJar
-objekt kan ignorera det. Ingen av klassernaFileCookieJar
som ingår i standardbiblioteket laddar cookies på ett lättsinnigt sätt.
FileCookieJar-underklasser och samarbete med webbläsare¶
Följande CookieJar
-subklasser finns för läsning och skrivning.
- class http.cookiejar.MozillaCookieJar(filename=None, delayload=None, policy=None)¶
En
FileCookieJar
som kan ladda från och spara cookies till disk i Mozillas filformatcookies.txt
(som också används av curl och webbläsarna Lynx och Netscape).Anteckning
Detta gör att information om RFC 2965-cookies försvinner, och även om nyare eller icke-standardiserade cookie-attribut som
port
.Varning
Säkerhetskopiera dina cookies innan du sparar om du har cookies vars förlust / korruption skulle vara obekvämt (det finns vissa subtiliteter som kan leda till små förändringar i filen under en laddning / spara tur och retur).
Observera också att cookies som sparas medan Mozilla körs kommer att bli överkörda av Mozilla.
- class http.cookiejar.LWPCookieJar(filename=None, delayload=None, policy=None)¶
En
FileCookieJar
som kan ladda från och spara cookies till disk i ett format som är kompatibelt med libwww-perl-biblioteketsSet-Cookie3
filformat. Detta är praktiskt om du vill lagra cookies i en fil som är läsbar för människor.Ändrad i version 3.8: Filnamnsparametern stöder en path-like object.
CookiePolicy-objekt¶
Objekt som implementerar gränssnittet CookiePolicy
har följande metoder:
- CookiePolicy.set_ok(cookie, request)¶
Returnerar ett booleskt värde som anger om cookien ska accepteras från servern.
cookie är en instans av
Cookie
. request är ett objekt som implementerar det gränssnitt som definieras av dokumentationen förCookieJar.extract_cookies()
.
- CookiePolicy.return_ok(cookie, request)¶
Returnerar ett booleskt värde som anger om cookien ska returneras till servern.
cookie är en instans av
Cookie
. request är ett objekt som implementerar det gränssnitt som definieras av dokumentationen förCookieJar.add_cookie_header()
.
- CookiePolicy.domain_return_ok(domain, request)¶
Returnerar
False
om cookies inte ska returneras, givet cookie-domän.Den här metoden är en optimering. Den tar bort behovet av att kontrollera varje cookie med en viss domän (vilket kan innebära att många filer måste läsas). Att returnera true från
domain_return_ok()
ochpath_return_ok()
lämnar allt arbete tillreturn_ok()
.Om
domain_return_ok()
returnerar true för cookiedomänen anropaspath_return_ok()
för cookie-sökvägen. Annars anropas aldrigpath_return_ok()
ochreturn_ok()
för den cookiedomänen. Ompath_return_ok()
returnerar true, anropasreturn_ok()
med självaCookie
-objektet för en fullständig kontroll. Annars anropas aldrigreturn_ok()
för den cookie-sökvägen.Observera att
domain_return_ok()
anropas för varje cookie-domän, inte bara för request-domänen. Funktionen kan till exempel anropas med både".example.com"
och"www.example.com"
om domänen för begäran är"www.example.com"
. Detsamma gäller förpath_return_ok()
.Argumentet request är som dokumenterat för
return_ok()
.
- CookiePolicy.path_return_ok(path, request)¶
Returnerar
False
om cookies inte ska returneras, givet cookie-sökväg.Se dokumentationen för
domain_return_ok()
.
Förutom att implementera metoderna ovan måste implementationer av CookiePolicy
-gränssnittet också tillhandahålla följande attribut, som anger vilka protokoll som skall användas och hur. Alla dessa attribut kan tilldelas till.
- CookiePolicy.netscape¶
Implementera Netscape-protokollet.
- CookiePolicy.hide_cookie2¶
Lägg inte till Cookie2 header till förfrågningar (närvaron av denna header indikerar för servern att vi förstår RFC 2965 cookies).
Det mest användbara sättet att definiera en CookiePolicy
-klass är genom att subklassa från DefaultCookiePolicy
och åsidosätta några eller alla metoder ovan. CookiePolicy
i sig kan användas som en ”nollpolicy” för att tillåta inställning och mottagning av alla cookies (detta är troligen inte användbart).
DefaultCookiePolicy-objekt¶
Implementerar standardreglerna för att acceptera och returnera cookies.
Både RFC 2965 och Netscape cookies omfattas. RFC 2965-hantering är avstängd som standard.
Det enklaste sättet att skapa en egen policy är att överskriva denna klass och anropa dess metoder i dina överskrivna implementationer innan du lägger till dina egna ytterligare kontroller:
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
Förutom de funktioner som krävs för att implementera CookiePolicy
-gränssnittet, kan du med den här klassen blockera och tillåta domäner från att sätta och ta emot cookies. Det finns också några strikthetsomkopplare som gör att du kan skärpa de ganska lösa Netscape-protokollreglerna lite grann (på bekostnad av att blockera vissa godartade cookies).
En blockeringslista och en tillåtelselista för domäner tillhandahålls (båda är avstängda som standard). Endast domäner som inte finns i blockeringslistan och som finns i tillåtelselistan (om tillåtelselistan är aktiv) deltar i inställning och returnering av cookies. Använd konstruktörsargumentet blocked_domains och metoderna blocked_domains()
och set_blocked_domains()
(och motsvarande argument och metoder för allowed_domains). Om du ställer in en tillåtelselista kan du stänga av den igen genom att ställa in den till None
.
Domäner i block- eller tillåt-listor som inte börjar med en punkt måste vara lika med cookiedomänen för att matchas. Till exempel matchar "example.com"
en post i blocklistan för "example.com"
, men "www.example.com"
gör det inte. Domäner som börjar med en punkt matchas också av mer specifika domäner. Till exempel matchar både "www.example.com"
och "www.coyote.example.com"
".example.com"
(men "example.com"
gör det inte). IP-adresser är ett undantag och måste matcha exakt. Om blocked_domains till exempel innehåller "192.168.1.2"
och ".168.1.2"
blockeras 192.168.1.2, men inte 193.168.1.2.
DefaultCookiePolicy
implementerar följande ytterligare metoder:
- DefaultCookiePolicy.blocked_domains()¶
Returnerar sekvensen av blockerade domäner (som en tupel).
- DefaultCookiePolicy.set_blocked_domains(blocked_domains)¶
Ange ordningsföljden för blockerade domäner.
- DefaultCookiePolicy.is_blocked(domain)¶
Returnerar
True
om domain finns på blocklistan för att ställa in eller ta emot cookies.
- DefaultCookiePolicy.allowed_domains()¶
Returnerar
None
, eller sekvensen av tillåtna domäner (som en tupel).
- DefaultCookiePolicy.set_allowed_domains(allowed_domains)¶
Ange sekvensen av tillåtna domäner, eller
None
.
- DefaultCookiePolicy.is_not_allowed(domain)¶
Returnerar
True
om domän inte finns med på listan över tillåtna cookies för inställning eller mottagning.
DefaultCookiePolicy
-instanser har följande attribut, som alla initialiseras från konstruktorargumenten med samma namn, och som alla kan tilldelas.
- DefaultCookiePolicy.rfc2109_as_netscape¶
Om true, begär att
CookieJar
-instansen nedgraderar RFC 2109-cookies (dvs. cookies som tas emot i en Set-Cookie-header med ett version cookie-attribut på 1) till Netscape-cookies genom att sätta version-attributet förCookie
-instansen till 0. Standardvärdet ärNone
, i vilket fall RFC 2109-cookies nedgraderas om och endast om RFC 2965-hanteringen är avstängd. Därför är RFC 2109-cookies nedgraderade som standard.
Allmänna strikthetsbrytare:
- DefaultCookiePolicy.strict_domain¶
Tillåt inte webbplatser att ställa in tvåkomponentsdomäner med toppdomäner med landskod som
.co.uk
,.gov.uk
,.co.nz
.etc. Detta är långt ifrån perfekt och det är inte garanterat att det fungerar!
RFC 2965 växlar för strikthet i protokoll:
- DefaultCookiePolicy.strict_rfc2965_unverifiable¶
Följ RFC 2965 regler för transaktioner som inte kan verifieras (vanligtvis är en transaktion som inte kan verifieras en transaktion som beror på en omdirigering eller en begäran om en bild som finns på en annan webbplats). Om detta är felaktigt blockeras cookies aldrig på grundval av verifierbarhet
Omkopplare för strikthet i Netscape-protokollet:
- DefaultCookiePolicy.strict_ns_unverifiable¶
Tillämpa RFC 2965 regler om overifierbara transaktioner även på Netscape cookies.
- DefaultCookiePolicy.strict_ns_domain¶
Flaggor som anger hur strikt man ska vara med reglerna för domänmatchning för Netscape-cookies. Se nedan för acceptabla värden.
- DefaultCookiePolicy.strict_ns_set_initial_dollar¶
Ignorera cookies i Set-Cookie: rubriker som har namn som börjar med
'$'
.
- DefaultCookiePolicy.strict_ns_set_path¶
Tillåt inte inställning av cookies vars sökväg inte matchar sökvägen för begäran URI.
strict_ns_domain
är en samling flaggor. Dess värde konstrueras genom att sätta ihop eller (t.ex. DomainStrictNoDots|DomainStrictNonDomain
betyder att båda flaggorna är inställda).
- DefaultCookiePolicy.DomainStrictNoDots¶
När du ställer in cookies får ”värdprefixet” inte innehålla en punkt (t.ex.
www.foo.bar.com
kan inte ställa in en cookie för.bar.com
, eftersomwww.foo
innehåller en punkt).
- DefaultCookiePolicy.DomainStrictNonDomain¶
Cookies som inte uttryckligen angav ett cookie-attribut
domän
kan endast returneras till en domän som är lika med den domän som satte cookien (t.ex. kommerspam.example.com
inte att returneras cookies frånexample.com
som inte hade något cookie-attributdomän
).
- DefaultCookiePolicy.DomainRFC2965Match¶
Vid inställning av cookies krävs en fullständig RFC 2965 domänmatchning.
Följande attribut tillhandahålls för enkelhetens skull och är de mest användbara kombinationerna av ovanstående flaggor:
- DefaultCookiePolicy.DomainLiberal¶
Motsvarar 0 (dvs. alla ovanstående flaggor för Netscape-domänens strikthet är avstängda).
- DefaultCookiePolicy.DomainStrict¶
Motsvarar
DomainStrictNoDots|DomainStrictNonDomain
.
Objekt för kakor¶
Cookie
-instanser har Python-attribut som i stort sett motsvarar de standardiserade cookie-attribut som anges i de olika cookie-standarderna. Korrespondensen är inte en-till-en, eftersom det finns komplicerade regler för tilldelning av standardvärden, eftersom cookie-attributen max-age
och expires
innehåller likvärdig information, och eftersom RFC 2109 cookies kan ”nedgraderas” av http.cookiejar
från version 1 till version 0 (Netscape) cookies.
Tilldelning till dessa attribut bör inte vara nödvändig annat än i sällsynta fall i en CookiePolicy
-metod. Klassen upprätthåller inte intern konsistens, så du bör veta vad du gör om du gör det.
- Cookie.version¶
Heltal eller
None
. Netscape-cookies harversion
0. RFC 2965 och RFC 2109 cookies har cookie-attributetversion
1. Observera dock atthttp.cookiejar
kan ’nedgradera’ RFC 2109 cookies till Netscape-cookies, i vilket fallversion
är 0.
- Cookie.name¶
Namnet på cookien (en sträng).
- Cookie.port¶
Sträng som representerar en port eller en uppsättning portar (t.ex. ’80’, eller ’80,8080’), eller
None
.
- Cookie.domain¶
Domän för cookie (en sträng).
- Cookie.path¶
Sökväg till cookie (en sträng, t.ex.
'/acme/rocket_launchers'
).
- Cookie.secure¶
True
om cookien endast ska returneras via en säker anslutning.
- Cookie.expires¶
Heltals utgångsdatum i sekunder sedan epoch, eller
None
. Se även metodenis_expired()
.
- Cookie.discard¶
True
om detta är en sessionscookie.
- Cookie.comment_url¶
URL som länkar till en kommentar från servern som förklarar funktionen hos denna cookie, eller
None
.
- Cookie.rfc2109¶
True
om denna cookie mottogs som en RFC 2109 cookie (dvs. cookien kom i en Set-Cookie header, och värdet på cookie-attributet Version i den headern var 1). Detta attribut tillhandahålls eftersomhttp.cookiejar
kan ’nedgradera’ RFC 2109-cookies till Netscape-cookies, i vilket fallversion
är 0.
- Cookie.port_specified¶
True
om en port eller en uppsättning portar uttryckligen har angetts av servern (i rubriken Set-Cookie / Set-Cookie2).
- Cookie.domain_specified¶
True
om en domän uttryckligen har angetts av servern.
- Cookie.domain_initial_dot¶
True
om den domän som uttryckligen anges av servern började med en punkt ('.'
).
Cookies kan ha ytterligare icke-standardiserade cookie-attribut. Dessa kan nås med hjälp av följande metoder:
- Cookie.has_nonstandard_attr(name)¶
Returnerar
True
om cookien har det angivna cookie-attributet.
- Cookie.get_nonstandard_attr(name, default=None)¶
Om cookien har det angivna cookie-attributet, returneras dess värde. Annars returneras default.
- Cookie.set_nonstandard_attr(name, value)¶
Ställ in värdet på det namngivna cookie-attributet.
Klassen Cookie
definierar också följande metod:
- Cookie.is_expired(now=None)¶
True
om cookien har passerat den tidpunkt då servern begärde att den skulle upphöra att gälla. Om now anges (i sekunder sedan epoken), returneras om cookien har löpt ut vid den angivna tidpunkten.
Exempel¶
Det första exemplet visar den vanligaste användningen av 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/")
Detta exempel visar hur du öppnar en URL med hjälp av dina Netscape-, Mozilla- eller Lynx-cookies (förutsätter Unix/Netscape-konvention för placering av cookie-filen):
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/")
Nästa exempel illustrerar användningen av DefaultCookiePolicy
. Aktivera RFC 2965-cookies, var mer strikt mot domäner när du ställer in och returnerar Netscape-cookies och blockera vissa domäner från att ställa in cookies eller få dem returnerade:
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/")