3 öLÖjr+ã@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ú&/usr/lib64/python3.6/http/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Ú unmatchedHsrjz^\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_wordsQs>.         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_setZiiZparamÚkeyÚsepÚvalÚlcrrrÚparse_ns_headersÇs@   r˜z\.\d+$cCs:tj|ƒrdS|dkrdS|ddks2|ddkr6dSdS)NFrVr Ú.rTr‚)ÚIPV4_REr@)r_rrrÚis_HDN s r›cCsl|jƒ}|jƒ}||krdSt|ƒs(dS|j|ƒ}|dksB|dkrFdS|jdƒsTdSt|dd…ƒshdSdS)NTFrr r™r‚)rKr›Úrfindrr)ÚAÚBÚirrrÚ domain_matchs  r cCstj|ƒrdSdS)NFT)ršr@)r_rrrÚliberal_is_HDNBs 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_matchLs 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_hostas  r«cCs6t|ƒ}}|jdƒdkr.tj|ƒ r.|d}||fS)Nr™rz.localr‚)r«Úfindršr@)r¨ÚerhnÚreq_hostrrrÚeff_request_hostqs 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__/s 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_okGszCookiePolicy.set_okcCs tƒ‚dS)N)rÜ)rÈrÝr¨rrrÚ return_okPszCookiePolicy.return_okcCsdS)NTr)rÈr†r¨rrrÚdomain_return_okTszCookiePolicy.domain_return_okcCsdS)NTr)rÈr‡r¨rrrÚpath_return_okYszCookiePolicy.path_return_okN)rØrÚrÛrÞrßràrárrrrr>s  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Êis  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_namecCsL|jrHt|ƒ}|jdks(|jdkrH|jrH|j|jƒ rHtd|j|ƒdSdS)Nr z7 path attribute %s is not a prefix of request path %sFT)rÁr³r‰rërrr‡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)rrrrrrrrrArr r r r r rrrwrrr)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_verifiabilityUsz+DefaultCookiePolicy.return_ok_verifiabilitycCs |jr|jdkrtdƒdSdS)NZhttpsz( secure cookie with non-secure requestFT)rˆÚtyper)rÈrÝr¨rrrÚreturn_ok_secureasz$DefaultCookiePolicy.return_ok_securecCs|j|jƒrtdƒdSdS)Nz cookie expiredFT)rÑÚ_nowr)rÈrÝr¨rrrÚreturn_ok_expiresgs 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_portms 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_okcCs0td|ƒt|ƒ}|j|ƒs,td||ƒdSdS)Nz- checking cookie path=%sz %s does not path-match %sFT)rr³rr)rÈr‡r¨rþrrrrá°s    z"DefaultCookiePolicy.path_return_ok)rØrÚrÛrr$rZ DomainLiberalZ DomainStrictrÊrïrñròrðrórôrÞrùrûrýrÿrrrßrrr r"r#r&ràrárrrrr_sJ    ;  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Ûrrrrr1Ïsr1c@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)r2)rÈr7rrrÚ 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) r2ràrr6r(rár/rß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)r6r(Úextendr:)rÈr¨r9r†rrrÚ_cookies_for_requestýszCookieJar._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Èr9r“Ú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")rr5ÚacquirerArMr2r!r<rDZ has_headerZadd_unredirected_headerr{rãrår‰ÚreleaseÚclear_expired_cookies)rÈr¨r9rCrÝrrrrE?s$          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…rIr†r‡rŠrÃrJ)rŠrÃrJ)rKrrArLr!rq)rÈÚ attrs_setÚ cookie_tuplesÚ boolean_attrsÚ value_attrsZ cookie_attrsrwrxZ max_age_setZ bad_cookieÚstandardrÉr~rr—rrrÚ_normalized_cookie_tuples`sl          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ÃrJrVTr°rr r™z\s+z2Expiring cookie, domain='%s', path='%s', name='%s'r‚)rÌr1rArLr±r³rœrÚboolrrr¯r¶rsr]r!ÚclearÚKeyErrorrr)rÈÚtupr¨rwrxrOrÉ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)rPrUrq)rÈrKr¨rLr9rTrÝrrrÚ_cookies_from_attrs_sets   z!CookieJar._cookies_from_attrs_setcCsLt|jddƒ}|dkr |jj }x&|D]}|jdkr&d|_|r&d|_q&WdS)NrärTr )rÕr2rãr‰rÅ)rÈr9Z rfc2109_as_nsrÝrrrÚ_process_rfc2109_cookies&s   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_rfc2965^sz3CookieJar.make_cookies..no_matching_rfc2965)r Zget_allr2rãrârVryÚ Exceptionrr˜rWr†r‡rwÚfilterr;) rÈÚresponser¨r|Z rfc2965_hdrsZns_hdrsrãrâr9Z ns_cookiesrXrÝrYrrrÚ make_cookies2sB              zCookieJar.make_cookiesc CsN|jjƒz2ttjƒƒ|j_|_|jj||ƒr:|j|ƒWd|jjƒXdS)N) r5rFrArMr2r!rÞÚ set_cookierG)rÈrÝr¨rrrÚset_cookie_if_okhs  zCookieJar.set_cookie_if_okc Csl|j}|jjƒzJ|j|kr&i||j<||j}|j|krDi||j<||j}|||j<Wd|jjƒXdS)N)r6r5rFr†r‡rwrG)rÈrÝÚcZc2Zc3rrrr^us     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 r5rFrArMr2r!r]rÞr^rG)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)rLr6)rÈr†r‡rwrrrrR�s  zCookieJar.clearc CsH|jjƒz,x&|D]}|jr|j|j|j|jƒqWWd|jjƒXdS)N)r5rFrÂrRr†r‡rwrG)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) r5rFrMrÑrRr†r‡rwrG)rÈrÐrÝrrrrHºs   zCookieJar.clear_expired_cookiescCs t|jƒS)N)r-r6)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ÈrerÝrrrrÔÛs zCookieJar.__str__)N)NNN)!rØrÚrÛrsÚcompilerArBZstrict_domain_reZ domain_reZdots_reÚASCIIÚmagic_rerÊr8r:r<rDrErPrUrVrWr]r_r^rarRrbrHrcrdrÙ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ÚfilenamerQÚ delayload)rÈrirjr7rrrrÊçs  zFileCookieJar.__init__cCs tƒ‚dS)N)rÜ)rÈriÚignore_discardÚignore_expiresrrrÚsaveöszFileCookieJar.savec CsJ|dkr"|jdk r|j}nttƒ‚t|ƒ�}|j||||ƒWdQRXdS)N)rirLÚMISSING_FILENAME_TEXTÚopenÚ _really_load)rÈrirkrlrrrrÚloadús   zFileCookieJar.loadcCs„|dkr"|jdk r|j}nttƒ‚|jjƒzFtj|jƒ}i|_y|j|||ƒWnt k rn||_‚YnXWd|jj ƒXdS)N) rirLrnr5rFrÆÚdeepcopyr6rqÚOSErrorrG)rÈrirkrlZ old_staterrrÚreverts    zFileCookieJar.revert)NFN)NFF)NFF)NFF)rØrÚrÛrÊrmrqrtrrrrrä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ÃrJr‰)ruN)rvN)rwN)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_strs6         rxc@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Ñrqrxr{)rÈrkrlrÐrerÝrrrÚ as_lwp_strGs  zLWPCookieJar.as_lwp_strNFc CsX|dkr"|jdk r|j}nttƒ‚t|dƒ�"}|jdƒ|j|j||ƒƒWdQRXdS)NÚwz#LWP-Cookies-2.0 )rirLrnroÚwriterz)rÈrirkrlrrrrrmWs   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:rvrurwrˆrÂr‰rŠr‡r†r…rÃrJrVr FrTr™z&invalid Set-Cookie3 format file %r: %r)rvrurwrˆrÂ)r‰rŠr‡r†r…rÃrJ)Úreadlinerhr@rrMrrrr‘ryrKrÌrdrrÂrÑr^rsrZr)rÈrrirkrlÚmagicrrÐÚheaderrMrNÚlineÚdatarwrxrOrÉr~rr—rºr…rÂr†r¿r`rrrrpcsŒ                   zLWPCookieJar._really_load)TT)NFF)rØrÚrÛrzrmrprrrrr:s  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 filerVryrú#rüú ÚTRUEr™FTr z+invalid Netscape format cookies file %r: %rr‚)r‚rü)rMr}rhr@rrƒr‘rrr�rrÂrÑr^rsrZr)rÈrrirkrlrÐr~r€r†r¿r‡rˆr…rwrxr¢rÂr`rrrrpÙ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ƒry)rirLrnror|rrMrÂrÑrˆr†rrr…rrxrwr{r‡) rÈrirkrlrrÐrÝrˆr¢r…rwrxrrrrms<          zMozillaCookieJar.save)NFF) rØrÚrÛrsrfrhrrprmrrrrr²s A)N)N)XÚ__all__rÆr-rsrMZ urllib.parser¥Zurllib.requestZ threadingr3Ú ImportErrorZdummy_threadingZ http.clientZhttpZcalendarr r r rrZclientZ HTTP_PORTrµrnrr%r,r6r7rIr(rqrKr5r8r>rfrgr?rFrSrXÚIr\ÚXr^rarbrdrjrlrmrornryrzr€r„r˜ršr›r r¡r£r§r«r¯r³r¶r¸r¹r·r±r¼r½rrrr*r-r1rrsrrrxrrrrrrÚs®        88!    U D'    #b!\:x