3 Õì2aE,ã@s&ddddddddgZdd lZdd lZdd lZdd lZdd lZdd lZy dd lZ Wne k rldd l Z YnXdd l Z dd lmZd Zd ad d „Zee jjƒZdZdd„ZdZdd„ZdddddddgZdddddd d!d"d#d$d%d&g ZgZxeD]Zejej ƒƒqîWdtd'd(„Z!dud)d*„Z"d d d d d+œZ#ej$d,ej%ƒZ&d-d.„Z'd/d0„Z(ej$d1ej%ƒZ)ej$d2ej*ej%BƒZ+ej$d3ej,ej%BƒZ-d4d5„Z.ej$d6ej,ej%BƒZ/d7d8„Z0d9d:„Z1ej$d;ƒZ2ej$d<ƒZ3ej$d=ƒZ4ej$d>ƒZ5d?d@„Z6ej$dAƒZ7dBdC„Z8dDdE„Z9dFdG„Z:ej$dHej%ƒZ;dIdJ„ZdOdP„Z?ej$dQej%ƒZ@dRdS„ZAdTdU„ZBdVdW„ZCdXdY„ZDdZZEej$d[ƒZFd\d]„ZGd^d_„ZHd`da„ZIdbdc„ZJGddd„dƒZKGded„dƒZLGdfd„deLƒZMdgdh„ZNdidj„ZOGdkdl„dlƒZPGdmd„dƒZQGdnd„deRƒZSGdod„deQƒZTdpdq„ZUGdrd„deTƒZVGdsd„deTƒZWd S)vÚCookieÚ CookieJarÚ CookiePolicyÚDefaultCookiePolicyÚ FileCookieJarÚ LWPCookieJarÚ LoadErrorÚMozillaCookieJaréN)ÚtimegmFcGs(tsdStsddl}|jdƒatj|ŽS)Nr zhttp.cookiejar)ÚdebugÚloggerÚloggingZ getLogger)Úargsr ©rú./opt/alt/python36/lib64/python3.6/cookiejar.pyÚ_debug.s  rzQa filename was not supplied (nor was the CookieJar instance initialised with one)cCsJddl}ddl}ddl}|jƒ}|jd|ƒ|jƒ}|jd|dd�dS)Nr zhttp.cookiejar bug! %sé)Ú stacklevel)ÚioÚwarningsÚ tracebackÚStringIOÚ print_excÚgetvalueÚwarn)rrrÚfÚmsgrrrÚ_warn_unhandled_exception<s  ri²cCs¨|dd…\}}}}}}|tkr d|ko2dknr d|koJdknr d|kobdknr d|kozdknr d|ko’dknr t|ƒSdSdS) Nééé ér éé;é=)Ú EPOCH_YEARr )ÚttÚyearÚmonthZmdayÚhourÚminÚsecrrrÚ_timegmKs 8Hr,ZMonZTueZWedZThuZFriZSatZSunZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDeccCs@|dkrtjjƒ}n tjj|ƒ}d|j|j|j|j|j|jfS)Nz%04d-%02d-%02d %02d:%02d:%02dZ) ÚdatetimeÚutcnowÚutcfromtimestampr'r(Údayr)ÚminuteÚsecond)ÚtÚdtrrrÚ time2isozYs   r5cCsR|dkrtjjƒ}n tjj|ƒ}dt|jƒ|jt|jd|j|j |j |j fS)Nz#%s, %02d-%s-%04d %02d:%02d:%02d GMTr) r-r.r/ÚDAYSZweekdayr0ÚMONTHSr(r'r)r1r2)r3r4rrrÚ time2netscapels   r8)ZGMTÚUTCZUTÚZz^([-+])?(\d\d?):?(\d\d)?$cCsjd}|tkrd}nTtj|ƒ}|rfdt|jdƒƒ}|jdƒrR|dt|jdƒƒ}|jdƒdkrf| }|S)Nr iréé<rú-)Ú UTC_ZONESÚ TIMEZONE_REÚsearchÚintÚgroup)ÚtzÚoffsetÚmrrrÚoffset_from_tz_stringƒs  rFc Csˆt|ƒ}|tjkrdSytj|jƒƒd}WnXtk r„y t|ƒ}Wntk r\dSXd|kopdknr||}ndSYnX|dkr’d}|dkržd}|dkrªd}t|ƒ}t|ƒ}t|ƒ}t|ƒ}|dk�r0tjtjƒƒd}|d} |} ||| }| | } t | ƒdk�r0| dk�r(|d}n|d}t |||||||fƒ} | dk �r„|dk�r^d}|j ƒ}t |ƒ} | dk�r|dS| | } | S)Nrr r ièédé2r9) rAr-ZMAXYEARÚ MONTHS_LOWERÚindexÚlowerÚ ValueErrorÚtimeZ localtimeÚabsr,ÚupperrF) r0ÚmonÚyrÚhrr*r+rCZimonZcur_yrrEZtmpr3rDrrrÚ _str2time‘sV         rSzV^[SMTWF][a-z][a-z], (\d\d) ([JFMASOND][a-z][a-z]) (\d\d\d\d) (\d\d):(\d\d):(\d\d) GMT$z+^(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)[a-z]*,?\s*aò^ (\d\d?) # day (?:\s+|[-\/]) (\w+) # month (?:\s+|[-\/]) (\d+) # year (?: (?:\s+|:) # separator before clock (\d\d?):(\d\d) # hour:min (?::(\d\d))? # optional seconds )? # optional clock \s* (?: ([-+]?\d{2,4}|(?![APap][Mm]\b)[A-Za-z]+) # timezone \s* )? (?: \(\w+\) # ASCII representation of timezone in parens. \s* )?$c CsÜtj|ƒ}|rl|jƒ}tj|djƒƒd}t|dƒ|t|dƒt|dƒt|dƒt|dƒf}t|ƒS|j ƒ}t j d|dƒ}dgd\}}}}}} } t j|ƒ}|dk rÄ|jƒ\}}}}}} } ndSt |||||| | ƒS) Nrrr r;ééÚé)ÚSTRICT_DATE_REr@ÚgroupsrIrJrKrAÚfloatr,ÚlstripÚ WEEKDAY_REÚsubÚLOOSE_HTTP_DATE_RErS) ÚtextrEÚgrPr&r0rQrRr*r+rCrrrÚ http2timeãs " raaÖ^ (\d{4}) # year [-\/]? (\d\d?) # numerical month [-\/]? (\d\d?) # day (?: (?:\s+|[-:Tt]) # separator before clock (\d\d?):?(\d\d) # hour:min (?::?(\d\d(?:\.\d*)?))? # optional seconds (and fractional) )? # optional clock \s* (?: ([-+]?\d\d?:?(:?\d\d)? |Z|z) # timezone (Z is "zero meridian", i.e. GMT) \s* )?$c Csd|jƒ}dgd\}}}}}}}tj|ƒ}|dk rL|jƒ\}}}}}}}} ndSt|||||||ƒS)NrW)r[Ú ISO_DATE_REr@rYrS) r_r0rPrQrRr*r+rCrEÚ_rrrÚiso2time-s  rdcCs*|jdƒ\}}|jd|…|j|d…S)Nr )ÚspanÚstring)ÚmatchÚstartÚendrrrÚ unmatchedNsrjz^\s*([^=\s;,]+)z&^\s*=\s*\"([^\"\\]*(?:\\.[^\"\\]*)*)\"z^\s*=\s*([^\s;,]*)z\\(.)c Cs g}�x|D]ø}|}g}xÜ|rôtj|ƒ}|rªt|ƒ}|jdƒ}tj|ƒ}|rlt|ƒ}|jdƒ}tjd|ƒ}n.tj|ƒ}|r–t|ƒ}|jdƒ}|jƒ}nd}|j ||fƒq|j ƒj dƒrÜ|j ƒdd…}|rÖ|j |ƒg}qt j dd|ƒ\}} |}qW|r |j |ƒq W|S)Nrz\1ú,z^[=\s;]*rV)ÚHEADER_TOKEN_REr@rjrBÚHEADER_QUOTED_VALUE_REÚHEADER_ESCAPE_REr]ÚHEADER_VALUE_REÚrstripÚappendr[Ú startswithÚreÚsubn) Z header_valuesÚresultr_Z orig_textÚpairsrEÚnameÚvalueZnon_junkZ nr_junk_charsrrrÚsplit_header_wordsWs>.         ryz([\"\\])cCs„g}xt|D]l}g}xN|D]F\}}|dk rTtjd|ƒsHtjd|ƒ}d|}d||f}|j|ƒqW|r |jdj|ƒƒq Wdj|ƒS)Nz^\w+$z\\\1z"%s"z%s=%sz; z, )rsr@ÚHEADER_JOIN_ESCAPE_REr]rqÚjoin)ZlistsÚheadersrvÚattrÚkÚvrrrÚjoin_header_words­s     r€cCs0|jdƒr|dd…}|jdƒr,|dd…}|S)Nú"réÿÿÿÿ)rrÚendswith)r_rrrÚ strip_quotesÆs     r„c Csd}g}xô|D]ì}g}d}xÀt|jd ƒƒD]®\}}|jƒ}|jd ƒ\}} } |jƒ}|sd|d kr*Pnq*| rp| jƒnd} |d krÊ|jƒ} | |kr�| }|dkr®| dk r¨t| ƒ} d }n|dkrÊ| dk rÊtt| ƒƒ} |j|| fƒq*W|r|�sð|jdƒ|j|ƒqW|S)NÚexpiresÚdomainÚpathÚsecureÚversionÚportúmax-ageFú;ú=r TÚ0)r…r†r‡rˆr‰rŠr‹)r‰rŽ)Ú enumerateÚsplitÚstripÚ partitionrKr„rarq) Z ns_headersZ known_attrsruZ ns_headerrvÚ version_setÚiiZparamÚkeyÚsepÚvalÚlcrrrÚparse_ns_headersÍs@   r™z\.\d+$cCs:tj|ƒrdS|dkrdS|ddks2|ddkr6dSdS)NFrVr Ú.rTr‚)ÚIPV4_REr@)r_rrrÚis_HDNs rœcCsl|jƒ}|jƒ}||krdSt|ƒs(dS|j|ƒ}|dksB|dkrFdS|jdƒsTdSt|dd…ƒshdSdS)NTFrr ršr‚)rKrœÚrfindrr)ÚAÚBÚirrrÚ domain_match!s  r¡cCstj|ƒrdSdS)NFT)r›r@)r_rrrÚliberal_is_HDNHs r¢cCsb|jƒ}|jƒ}t|ƒot|ƒs0||kr,dSdS|jdƒ}|rL|j|ƒrLdS| r^||kr^dSdS)NTFrš)rKr¢rrrƒ)ržrŸÚ initial_dotrrrÚuser_domain_matchRs r¤z:\d+$cCsB|jƒ}tjj|ƒd}|dkr,|jddƒ}tjd|dƒ}|jƒS)NrrVZHost)Ú get_full_urlÚurllibÚparseZurlparseZ get_headerÚ cut_port_rer]rK)ÚrequestÚurlÚhostrrrÚ request_hostgs  r¬cCs6t|ƒ}}|jdƒdkr.tj|ƒ r.|d}||fS)Nršrz.localr‚)r¬Úfindr›r@)r©ÚerhnÚreq_hostrrrÚeff_request_hostws r°cCs4|jƒ}tjj|ƒ}t|jƒ}|jdƒs0d|}|S)Nú/)r¥r¦r§ZurlsplitÚ escape_pathr‡rr)r©rªÚpartsr‡rrrÚ request_path‚s    r´c Cs^|j}|jdƒ}|dkrV||dd…}y t|ƒWqZtk rRtd|ƒdSXnt}|S)Nú:r rznonnumeric port: '%s')r«r­rArLrÚDEFAULT_HTTP_PORT)r©r«r rŠrrrÚ request_portŒs   r·z%/;:@&=+$,!~*'()z%([0-9a-fA-F][0-9a-fA-F])cCsd|jdƒjƒS)Nz%%%sr)rBrO)rgrrrÚuppercase_escaped_charžsr¸cCstjj|tƒ}tjt|ƒ}|S)N)r¦r§ZquoteÚHTTP_PATH_SAFEÚESCAPED_CHAR_REr]r¸)r‡rrrr² s  r²cCsP|jdƒ}|dkrL||dd…}|jdƒ}t|ƒrL|dksD|dkrLd|S|S)Nršr rZlocal)r­rœ)Úhr ÚbrrrÚreach®s  r½cCs$t|ƒ}t|t|jƒƒsdSdSdS)NTF)r¬r¡r½Zorigin_req_host)r©r¯rrrÚis_third_partyÑs r¾c@sJeZdZddd„Zdd„Zddd„Zd d „Zdd d „Zd d„Zdd„Z dS)rFcCs°|dk rt|ƒ}| dk r$tt| ƒƒ} |dkr<|dkr)rŠr†r‡rxrw)rÉÚpÚlimitZ namevaluerrrÚ__str__+s   zCookie.__str__cCspg}x,dD]$}t||ƒ}|jd|t|ƒfƒq W|jdt|jƒƒ|jdt|jƒƒd|jjdj|ƒfS)Nr‰rwrxrŠr¿r†rÀrÁr‡rÂrˆr…rÃrÄrÅz%s=%szrest=%sz rfc2109=%sz%s(%s)z, )r‰rwrxrŠr¿r†rÀrÁr‡rÂrˆr…rÃrÄrÅ)ÚgetattrrqÚreprrÈrÆÚ __class__Ú__name__r{)rÉrrwr}rrrÚ__repr__5s zCookie.__repr__)F)N)N) rÙÚ __module__Ú __qualname__rËrÌrÏrÐrÒrÕrÚrrrrrâs    c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) rcCs tƒ‚dS)N)ÚNotImplementedError)rÉÚcookier©rrrÚset_okMszCookiePolicy.set_okcCs tƒ‚dS)N)rÝ)rÉrÞr©rrrÚ return_okVszCookiePolicy.return_okcCsdS)NTr)rÉr†r©rrrÚdomain_return_okZszCookiePolicy.domain_return_okcCsdS)NTr)rÉr‡r©rrrÚpath_return_ok_szCookiePolicy.path_return_okN)rÙrÛrÜrßràrárârrrrrDs  c @söeZdZdZdZdZdZeeBZdddddddddeddf dd „Zd d „Z d d „Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„ZdS)6rrrrTr NTFc Csp||_||_||_||_||_||_| |_| |_| |_| |_ |dk rPt |ƒ|_ nf|_ |dk rft |ƒ}||_ dS)N) ÚnetscapeÚrfc2965Úrfc2109_as_netscapeÚ hide_cookie2Ú strict_domainÚstrict_rfc2965_unverifiableÚstrict_ns_unverifiableÚstrict_ns_domainÚstrict_ns_set_initial_dollarÚstrict_ns_set_pathÚtupleÚ_blocked_domainsÚ_allowed_domains) rÉÚblocked_domainsÚallowed_domainsrãrärårærçrèrérêrërìrrrrËos  zDefaultCookiePolicy.__init__cCs|jS)N)rî)rÉrrrrð�sz#DefaultCookiePolicy.blocked_domainscCst|ƒ|_dS)N)rírî)rÉrðrrrÚset_blocked_domains“sz'DefaultCookiePolicy.set_blocked_domainscCs"x|jD]}t||ƒrdSqWdS)NTF)rîr¤)rÉr†Zblocked_domainrrrÚ is_blocked—s  zDefaultCookiePolicy.is_blockedcCs|jS)N)rï)rÉrrrrñ�sz#DefaultCookiePolicy.allowed_domainscCs|dk rt|ƒ}||_dS)N)rírï)rÉrñrrrÚset_allowed_domains sz'DefaultCookiePolicy.set_allowed_domainscCs0|jdkrdSx|jD]}t||ƒrdSqWdS)NFT)rïr¤)rÉr†Zallowed_domainrrrÚis_not_allowed¦s    z"DefaultCookiePolicy.is_not_allowedcCsBtd|j|jƒx,d D]$}d|}t||ƒ}|||ƒsd SqWd S) Nz - checking cookie %s=%sr‰Ú verifiabilityrwr‡r†rŠZset_ok_FT)r‰rörwr‡r†rŠ)rrwrxrÖ)rÉrÞr©ÚnÚfn_nameÚfnrrrrß®s   zDefaultCookiePolicy.set_okcCs^|jdkrtd|j|jƒdS|jdkr<|j r third-party RFC 2965 cookie during unverifiable transactionFz> third-party Netscape cookie during unverifiable transactionT)Ú unverifiabler¾r‰rèrré)rÉrÞr©rrrÚset_ok_verifiabilityÐsz(DefaultCookiePolicy.set_ok_verifiabilitycCs0|jdkr,|jr,|jjdƒr,td|jƒdSdS)Nr ú$z' illegal name (starts with '$'): '%s'FT)r‰rërwrrr)rÉrÞr©rrrÚ set_ok_nameÜs   zDefaultCookiePolicy.set_ok_namecCsN|jrJt|ƒ}|jdks(|jdkrJ|jrJ|j|j|ƒ rJtd|j|ƒdSdS)Nr z7 path attribute %s is not a prefix of request path %sFT)rÂr´r‰rìrâr‡r)rÉrÞr©Úreq_pathrrrÚ set_ok_pathås  zDefaultCookiePolicy.set_ok_pathc Csö|j|jƒrtd|jƒdS|j|jƒr8td|jƒdS|j�ròt|ƒ\}}|j}|jrÌ|jdƒdkrÌ|jdƒ}|jdd|ƒ}|dkrÌ||dd…}||d|…} | j ƒd$krÌt |ƒdkrÌtd|ƒdS|j dƒ�ræ|dd…} n|} | j dƒdk} | �r|dk�rtd|ƒdS|j dk�rb|j|ƒ �rb|j dƒ �rbd|j|ƒ �rbtd ||ƒdS|j dk�s||j|j@�r˜t||ƒ�s˜td!||ƒdS|j dk�s²|j|j@�rò|dt |ƒ …} | j dƒdk�ròtj|ƒ �ròtd"| |ƒdSd#S)%Nz" domain %s is in user block-listFz& domain %s is not in user allow-listršrr rÚcoÚacÚcomÚeduÚorgÚnetÚgovÚmilrAÚaeroÚbizÚcatÚcoopÚinfoÚjobsÚmobiÚmuseumrwÚproÚtravelÚeuz& country-code second level domain %sz.localz/ non-local domain %s contains no embedded dotzO effective request-host %s (even with added initial dot) does not end with %sz5 effective request-host %s does not domain-match %sz. host prefix %s for domain %s contains a dotT)rrrrrrrrrAr r r r r rrrrwrrr)rór†rrõrÀr°rçÚcountr�rKÚlenrrr­r‰rƒrêÚDomainRFC2965Matchr¡ÚDomainStrictNoDotsr›r@) rÉrÞr©r¯r®r†r ÚjZtldZsldZundotted_domainZ embedded_dotsZ host_prefixrrrÚ set_ok_domainðsf            z!DefaultCookiePolicy.set_ok_domainc Cs†|jr‚t|ƒ}|dkrd}nt|ƒ}x\|jjdƒD]:}y t|ƒWntk r`td|ƒdSX||kr2Pq2Wtd||jƒdSdS)NÚ80rkz bad port %s (not numeric)Fz$ request port (%s) not found in %sT)r¿r·ÚstrrŠr�rArLr)rÉrÞr©Úreq_portrÓrrrÚ set_ok_port+s"   zDefaultCookiePolicy.set_ok_portcCsBtd|j|jƒx,d D]$}d|}t||ƒ}|||ƒsd SqWd S) Nz - checking cookie %s=%sr‰rörˆr…rŠr†Z return_ok_FT)r‰rörˆr…rŠr†)rrwrxrÖ)rÉrÞr©r÷rørùrrrrà@s    zDefaultCookiePolicy.return_okcCs@|jdkr|j rtdƒdS|jdkr<|j r third-party RFC 2965 cookie during unverifiable transactionFz> third-party Netscape cookie during unverifiable transactionT)rûr¾r‰rèrré)rÉrÞr©rrrÚreturn_ok_verifiability[sz+DefaultCookiePolicy.return_ok_verifiabilitycCs |jr|jdkrtdƒdSdS)NZhttpsz( secure cookie with non-secure requestFT)rˆÚtyper)rÉrÞr©rrrÚreturn_ok_securegsz$DefaultCookiePolicy.return_ok_securecCs|j|jƒrtdƒdSdS)Nz cookie expiredFT)rÒÚ_nowr)rÉrÞr©rrrÚreturn_ok_expiresms z%DefaultCookiePolicy.return_ok_expirescCsP|jrLt|ƒ}|dkrd}x0|jjdƒD]}||kr(Pq(Wtd||jƒdSdS)Nrrkz0 request port %s does not match cookie port %sFT)rŠr·r�r)rÉrÞr©rrÓrrrÚreturn_ok_portss z"DefaultCookiePolicy.return_ok_portcCs¶t|ƒ\}}|j}|r,|jdƒ r,d|}n|}|jdkrb|j|j@rb|j rb||krbtdƒdS|jdkrˆt||ƒ rˆtd||ƒdS|jdkr²d|j |ƒ r²td||ƒdSdS)Nršr zQ cookie with unspecified domain does not string-compare equal to request domainFzQ effective request-host name %s does not domain-match RFC 2965 cookie domain %sz; request-host %s does not match Netscape cookie domain %sT) r°r†rrr‰rêÚDomainStrictNonDomainrÀrr¡rƒ)rÉrÞr©r¯r®r†Ú dotdomainrrrÚreturn_ok_domain�s&    z$DefaultCookiePolicy.return_ok_domaincCsšt|ƒ\}}|jdƒsd|}|jdƒs0d|}|rJ|jdƒ rJd|}n|}|j|ƒp`|j|ƒsfdS|j|ƒr~td|ƒdS|j|ƒr–td|ƒdSdS)NršFz" domain %s is in user block-listz& domain %s is not in user allow-listT)r°rrrƒrórrõ)rÉr†r©r¯r®r&rrrráœs"        z$DefaultCookiePolicy.domain_return_okcCsbtd|ƒt|ƒ}t|ƒ}||kr&dS|j|ƒrR|jdƒsN|||d…dkrRdStd||ƒdS)Nz- checking cookie path=%sTr±rz %s does not path-match %sF)rr´rrrrƒ)rÉr‡r©rÿZpathlenrrrrâ¶s   z"DefaultCookiePolicy.path_return_ok)rÙrÛrÜrr%rZ DomainLiberalZ DomainStrictrËrðròrórñrôrõrßrúrürþrrrràrrr!r#r$r'rárârrrrresJ    ;  cCst|jƒƒ}t|j|ƒS)N)ÚsortedÚkeysÚmaprÍ)Zadictr)rrrÚvals_sorted_by_keyÃs r+c csZt|ƒ}xL|D]D}d}y |jWntk r4YnXd}t|ƒEdH|s|VqWdS)NFT)r+ÚitemsÚAttributeErrorÚ deepvalues)ÚmappingÚvaluesÚobjrrrr.Çs  r.c@s eZdZdS)ÚAbsentN)rÙrÛrÜrrrrr2Ùsr2c@søeZdZejdƒZejdƒZejdƒZejdƒZejdƒZ ejdej ƒZ d2dd „Z d d „Z d d „Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd3d$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Z dS)4rz\Wz([\"\\])z\.?[^.]*z[^.]*z^\.+z^\#LWP-Cookies-(\d+\.\d+)NcCs(|dkrtƒ}||_tjƒ|_i|_dS)N)rÚ_policyÚ _threadingÚRLockÚ _cookies_lockÚ_cookies)rÉÚpolicyrrrrËês  zCookieJar.__init__cCs ||_dS)N)r3)rÉr8rrrÚ set_policyòszCookieJar.set_policycCs”g}|jj||ƒsgStd|ƒ|j|}xd|jƒD]X}|jj||ƒsHq4||}x:|jƒD].}|jj||ƒsvtdƒqZtdƒ|j|ƒqZWq4W|S)Nz!Checking %s for cookies to returnz not returning cookiez it's a match) r3rárr7r)râr0ràrq)rÉr†r©ÚcookiesZcookies_by_pathr‡Zcookies_by_namerÞrrrÚ_cookies_for_domainõs   zCookieJar._cookies_for_domaincCs.g}x$|jjƒD]}|j|j||ƒƒqW|S)N)r7r)Úextendr;)rÉr©r:r†rrrÚ_cookies_for_requestszCookieJar._cookies_for_requestc CsF|jdd„dd�d}g}�x$|D�]}|j}|sLd}|dkrL|jd|ƒ|jdk r~|jj|jƒr~|dkr~|jjd|jƒ}n|j}|jdkrœ|j|jƒn|jd |j|fƒ|dkr"|j rÎ|jd |j ƒ|j j d ƒ�r|j }|j oò|j d ƒ�r|d d…}|jd |ƒ|jdk r"d}|j�r4|d|j}|j|ƒq"W|S)NcSs t|jƒS)N)rr‡)ÚarrrÚsz)CookieJar._cookie_attrs..T)r•ÚreverseFr z $Version=%sz\\\1z%s=%sz $Path="%s"ršrz $Domain="%s"z$Portz="%s")Úsortr‰rqrxÚ non_word_rer@Úquote_rer]rwrÂr‡r†rrrÁrŠr¿) rÉr:r“ÚattrsrÞr‰rxr†rÓrrrÚ _cookie_attrss>      zCookieJar._cookie_attrsc Cs¾tdƒ|jjƒz’ttjƒƒ|j_|_|j|ƒ}|j|ƒ}|r^|j dƒs^|j ddj |ƒƒ|jj r¢|jj r¢|j dƒ r¢x$|D]}|jdkr‚|j ddƒPq‚WWd|jjƒX|jƒdS)NÚadd_cookie_headerrz; ZCookie2rz $Version="1")rr6ÚacquirerArMr3r"r=rEZ has_headerZadd_unredirected_headerr{rärær‰ÚreleaseÚclear_expired_cookies)rÉr©r:rDrÞrrrrFIs$          zCookieJar.add_cookie_headercCs�g}d}d}�x||D�]r}|d \}}d }d } i} i} �x4|d d…D�]"\} } | jƒ}||ksh||krl|} | |kr€| dkr€d} | | krŠqF| dkr°| dkr¨tdƒd} P| jƒ} | dkrÐ|r¾qF| dkrÐtdƒqF| dk�rd}y t| ƒ} Wn$tk �rtdƒd} PYnXd} |j| } | |k�s2| |k�rb| dk�rX| dk�rXtd| ƒd} P| | | <qF| | | <qFW| �rvq|j||| | fƒqW|S)NrÃrˆr‰r…úmax-ager†r‡rŠrÄÚ commenturlr FrTz% missing value for domain attributezM missing or invalid value for expires attribute: treating as session cookiez? missing or invalid (non-numeric) value for max-age attributez! missing value for %s attribute)rÃrˆ)r‰r…rJr†r‡rŠrÄrK)rŠrÄrK)rKrrArLr"rq)rÉÚ attrs_setÚ cookie_tuplesÚ boolean_attrsÚ value_attrsZ cookie_attrsrwrxZ max_age_setZ bad_cookieÚstandardrÊr~rr˜rrrÚ_normalized_cookie_tuplesjsl          z#CookieJar._normalized_cookie_tuplesc!Cs$|\}}}}|jdtƒ}|jdtƒ}|jdtƒ} |jdtƒ} |jddƒ} | dk rry t| ƒ} Wntk rpdSX|jddƒ} |jddƒ} |jd dƒ}|jd dƒ}|tk rÀ|d krÀd }t|ƒ}nXd}t|ƒ}|jd ƒ}|dk�r| dkrö|d|…}n|d|d…}t|ƒdk�rd }|tk }d}|�r8t|j dƒƒ}|tk�rTt |ƒ\}}|}n|j dƒ�shd|}d}| tk �rž| dk�rŠt |ƒ} nd }t j dd | ƒ} nd} | tk�r¶d} d } nH| |jk�rþy|j|||ƒWntk �rêYnXtd|||ƒdSt| ||| ||||||| | | |||ƒS)Nr†r‡rŠr…r‰rˆFrÃrÄrKrVTr±rr ršz\s+z2Expiring cookie, domain='%s', path='%s', name='%s'r‚)rÍr2rArLr²r´r�rÚboolrrr°r·rsr]r"ÚclearÚKeyErrorrr)rÉÚtupr©rwrxrPrÊr†r‡rŠr…r‰rˆrÃrÄrÅrÂr rÀrÁr¯r®r¿rrrÚ_cookie_from_cookie_tupleËs‚                       z#CookieJar._cookie_from_cookie_tuplecCs:|j|ƒ}g}x&|D]}|j||ƒ}|r|j|ƒqW|S)N)rQrVrq)rÉrLr©rMr:rUrÞrrrÚ_cookies_from_attrs_set's   z!CookieJar._cookies_from_attrs_setcCsLt|jddƒ}|dkr |jj }x&|D]}|jdkr&d|_|r&d|_q&WdS)NrårTr )rÖr3rär‰rÆ)rÉr:Z rfc2109_as_nsrÞrrrÚ_process_rfc2109_cookies0s   z"CookieJar._process_rfc2109_cookiesc Cs6|jƒ}|jdgƒ}|jdgƒ}|jj}|jj}| r<| s`| rH| s`| rT| s`| rd| rdgSy|jt|ƒ|ƒ}Wntk r–tƒg}YnX|ož|�r2y|jt |ƒ|ƒ} Wntk rÔtƒg} YnX|j | ƒ|�r"i} x |D]} d| | j | j | j f<qðW| fdd„} t| | ƒ} | �r2|j| ƒ|S)Nz Set-Cookie2z Set-CookiecSs|j|j|jf}||kS)N)r†r‡rw)Z ns_cookieÚlookupr•rrrÚno_matching_rfc2965hsz3CookieJar.make_cookies..no_matching_rfc2965)r Zget_allr3rärãrWryÚ Exceptionrr™rXr†r‡rwÚfilterr<) rÉÚresponser©r|Z rfc2965_hdrsZns_hdrsrärãr:Z ns_cookiesrYrÞrZrrrÚ make_cookies<sB              zCookieJar.make_cookiesc CsN|jjƒz2ttjƒƒ|j_|_|jj||ƒr:|j|ƒWd|jjƒXdS)N) r6rGrArMr3r"rßÚ set_cookierH)rÉrÞr©rrrÚset_cookie_if_okrs  zCookieJar.set_cookie_if_okc Csl|j}|jjƒzJ|j|kr&i||j<||j}|j|krDi||j<||j}|||j<Wd|jjƒXdS)N)r7r6rGr†r‡rwrH)rÉrÞÚcZc2Zc3rrrr_s     zCookieJar.set_cookiec Cs|td|jƒƒ|jjƒzRttjƒƒ|j_|_x6|j||ƒD]&}|jj ||ƒr>td|ƒ|j |ƒq>WWd|jj ƒXdS)Nzextract_cookies: %sz setting cookie: %s) rr r6rGrArMr3r"r^rßr_rH)rÉr]r©rÞrrrÚextract_cookiesŒs  zCookieJar.extract_cookiescCst|dk r2|dks|dkr tdƒ‚|j|||=n>|dk rX|dkrJtdƒ‚|j||=n|dk rj|j|=ni|_dS)Nz8domain and path must be given to remove a cookie by namez.domain must be given to remove cookies by path)rLr7)rÉr†r‡rwrrrrSšs  zCookieJar.clearc CsH|jjƒz,x&|D]}|jr|j|j|j|jƒqWWd|jjƒXdS)N)r6rGrÃrSr†r‡rwrH)rÉrÞrrrÚclear_session_cookiesµs   zCookieJar.clear_session_cookiesc CsT|jjƒz8tjƒ}x*|D]"}|j|ƒr|j|j|j|jƒqWWd|jjƒXdS)N) r6rGrMrÒrSr†r‡rwrH)rÉrÑrÞrrrrIÄs   zCookieJar.clear_expired_cookiescCs t|jƒS)N)r.r7)rÉrrrÚ__iter__×szCookieJar.__iter__cCsd}x|D] }|d}q W|S)Nr rr)rÉr rÞrrrÚ__len__Ús zCookieJar.__len__cCs6g}x|D]}|jt|ƒƒq Wd|jjdj|ƒfS)Nz<%s[%s]>z, )rqr×rØrÙr{)rÉÚrrÞrrrrÚàs zCookieJar.__repr__cCs6g}x|D]}|jt|ƒƒq Wd|jjdj|ƒfS)Nz<%s[%s]>z, )rqrrØrÙr{)rÉrfrÞrrrrÕås zCookieJar.__str__)N)NNN)!rÙrÛrÜrsÚcompilerBrCZstrict_domain_reZ domain_reZdots_reÚASCIIÚmagic_rerËr9r;r=rErFrQrVrWrXr^r`r_rbrSrcrIrdrerÚrÕrrrrrÛs6      ;!a\  6   c@s eZdZdS)rN)rÙrÛrÜrrrrrìsc@s4eZdZd dd„Zd dd„Zd dd„Zdd d „ZdS)rNFc CsJtj||ƒ|dk r6y |dWntdƒ‚YnX||_t|ƒ|_dS)NrVzfilename must be string-like)rrËrLÚfilenamerRÚ delayload)rÉrjrkr8rrrrËñs  zFileCookieJar.__init__cCs tƒ‚dS)N)rÝ)rÉrjÚignore_discardÚignore_expiresrrrÚsaveszFileCookieJar.savec CsJ|dkr"|jdk r|j}nttƒ‚t|ƒ�}|j||||ƒWdQRXdS)N)rjrLÚMISSING_FILENAME_TEXTÚopenÚ _really_load)rÉrjrlrmrrrrÚloads   zFileCookieJar.loadcCs„|dkr"|jdk r|j}nttƒ‚|jjƒzFtj|jƒ}i|_y|j|||ƒWnt k rn||_‚YnXWd|jj ƒXdS)N) rjrLror6rGrÇÚdeepcopyr7rrÚOSErrorrH)rÉrjrlrmZ old_staterrrÚrevert s    zFileCookieJar.revert)NFN)NFF)NFF)NFF)rÙrÛrÜrËrnrrrurrrrrîs    cCs$|j|jfd|jfd|jfg}|jdk r8|jd|jfƒ|jrH|jd ƒ|jrX|jdƒ|jrh|jdƒ|j rx|jdƒ|j r–|jdt t |j ƒƒfƒ|j r¦|jdƒ|jr¼|jd |jfƒ|jrÒ|jd |jfƒt|jjƒƒ}x$|D]}|j|t|j|ƒfƒqæW|jd t|jƒfƒt|gƒS)Nr‡r†rŠÚ path_specÚ port_specÚ domain_dotrˆr…rÃrÄrKr‰)rvN)rwN)rxN)rˆN)rÃN)rwrxr‡r†rŠrqrÂr¿rÁrˆr…r5rZrÃrÄrÅr(rÈr)rr‰r€)rÞr»r)r~rrrÚlwp_cookie_str(s6         ryc@s(eZdZd dd„Zd dd„Zdd „ZdS) rTcCs\tjƒ}g}x>|D]6}| r$|jr$q| r6|j|ƒr6q|jdt|ƒƒqWdj|dgƒS)NzSet-Cookie3: %sÚ rV)rMrÃrÒrqryr{)rÉrlrmrÑrfrÞrrrÚ as_lwp_strQs  zLWPCookieJar.as_lwp_strNFc CsX|dkr"|jdk r|j}nttƒ‚t|dƒ�"}|jdƒ|j|j||ƒƒWdQRXdS)NÚwz#LWP-Cookies-2.0 )rjrLrorpÚwriter{)rÉrjrlrmrrrrrnas   zLWPCookieJar.savecCsL|jƒ}|jj|ƒs$d|}t|ƒ‚tjƒ}d}d} d} �yÊ�xÂ|jƒ} | dkrRP| j|ƒs^q@| t|ƒd…jƒ} �xˆt| gƒD�]x} | d\} }i}i}x| D] }d||<q Wx„| dd…D]t\}}|dk rØ|j ƒ}nd}|| k�sð|| k�rô|}|| k�r|dk�r d}|||<q¾|| k�r*|||<q¾|||<q¾W|j }|d ƒ}|dƒ}|dk �r^t |ƒ}|dk�rld}|d ƒ}|jdƒ}t |dƒ| ||d ƒ|dƒ|||dƒ|d ƒ|dƒ|dƒ|||d ƒ|dƒ|ƒ}| �rÚ|j �rÚq€| �rð|j|ƒ�rðq€|j|ƒq€Wq@WWnBtk �r‚Yn,tk �rFtƒtd|| fƒ‚YnXdS)Nz5%r does not look like a Set-Cookie3 (LWP) format filez Set-Cookie3:rwrvrxrˆrÃr‰rŠr‡r†r…rÄrKrVr FrTršz&invalid Set-Cookie3 format file %r: %r)rwrvrxrˆrÃ)r‰rŠr‡r†r…rÄrK)Úreadlinerir@rrMrrrr‘ryrKrÍrdrrÃrÒr_rtr[r)rÉrrjrlrmÚmagicrrÑÚheaderrNrOÚlineÚdatarwrxrPrÊr~rr˜r»r…rÃr†rÀrarrrrqmsŒ                   zLWPCookieJar._really_load)TT)NFF)rÙrÛrÜr{rnrqrrrrrDs  c@s,eZdZejdƒZdZdd„Zd dd„ZdS) rz#( Netscape)? HTTP Cookie Filezr# Netscape HTTP Cookie File # http://curl.haxx.se/rfc/cookie_spec.html # This is a generated file! Do not edit. cCsntjƒ}|jƒ}|jj|ƒs(td|ƒ‚�yüxö|jƒ}|dkr@P|jdƒrV|dd…}|jƒjdƒs.|jƒdkrrq.|jdƒ\}} } } } } }| dk} | dk} | dkrª|} d}|jd ƒ}d }| dkrÈd} d }t d | |dd || || d | | |ddiƒ}| �r|j �rq.| �r|j |ƒ�rq.|j |ƒq.WWnBt k �r>‚Yn,tk �rhtƒtd ||fƒ‚YnXdS)Nz4%r does not look like a Netscape format cookies filerVrzrú#rýú ÚTRUEršFTr z+invalid Netscape format cookies file %r: %rr‚)rƒrý)rMr~rir@rrƒr‘rrr�rrÃrÒr_rtr[r)rÉrrjrlrmrÑrr�r†rÀr‡rˆr…rwrxr£rÃrarrrrqãs`    zMozillaCookieJar._really_loadNFc Cs|dkr"|jdk r|j}nttƒ‚t|dƒ�Ð}|j|jƒtjƒ}x´|D]¬}| rZ|jrZqH| rl|j|ƒrlqH|j rxd}nd}|j j dƒrŽd}nd}|j dk r¨t |j ƒ} nd} |jdkrÂd} |j} n |j} |j} |jdj|j ||j|| | | gƒdƒqHWWdQRXdS)Nr|r…ZFALSEršrVr„rz)rjrLrorpr}r€rMrÃrÒrˆr†rrr…rrxrwr{r‡) rÉrjrlrmrrÑrÞrˆr£r…rwrxrrrrn$s<          zMozillaCookieJar.save)NFF) rÙrÛrÜrsrgrir€rqrnrrrrr¼s A)N)N)XÚ__all__rÇr-rsrMZ urllib.parser¦Zurllib.requestZ threadingr4Ú ImportErrorZdummy_threadingZ http.clientZhttpZcalendarr r r rrZclientZ HTTP_PORTr¶rorr%r,r6r7rIr(rqrKr5r8r>rgrhr?rFrSrXÚIr\ÚXr^rarbrdrjrlrmrornryrzr€r„r™r›rœr¡r¢r¤r¨r¬r°r´r·r¹rºr¸r²r½r¾rrrr+r.r2rrtrrryrrrrrrÚs®        88!    U D'    #b!`:x