
    !h                    6   S SK Jr  S SKrS SKJr  S SKJrJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  S S	KJr  S S
KJr  \(       a(  S SKJrJr  S SKJr  S SKJr  S SKJrJr  S SKJr  S SK J!r!  \RD                  " \#5      r$\	" SS9r%\&" 5       r'SS jr( " S S5      r)g)    )annotationsN)defaultdict)TYPE_CHECKINGAny)
TLDExtract)NotConfigured)Response)	CookieJar)urlparse_cached)
to_unicode)IterableSequence)Cookie)Self)RequestSpider)Crawler)VerboseCookieT)include_psl_private_domainsc                :    [        U 5      nUR                  (       + $ N)_split_domaindomain)r   partss     k/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/scrapy/downloadermiddlewares/cookies.py_is_public_domainr   "   s    &!E||    c                      \ rS rSrSrSSS jjr\SS j5       r        SS jr      SS jr	        SS jr
SS jrSS	 jrSS
 jr      SS jrSrg)CookiesMiddleware'   z<This middleware enables working with sites that need cookiesc                8    [        [        5      U l        Xl        g r   )r   r
   jarsdebug)selfr#   s     r   __init__CookiesMiddleware.__init__*   s    1<Y1G	 
r   c                    UR                   R                  S5      (       d  [        eU " UR                   R                  S5      5      $ )NCOOKIES_ENABLEDCOOKIES_DEBUG)settingsgetboolr   )clscrawlers     r   from_crawlerCookiesMiddleware.from_crawler.   s<    ''(9::7##++O<==r   c                  U H  nUR                   nUR                  S5      n[        U5      R                  nUc   eUR	                  5       nU(       a  [        U5      (       a  XW:w  a  Mh  Xtl         UR                  XC5        M     g )N.)r   removeprefixr   hostnamelowerr   set_cookie_if_ok)r$   cookiesjarrequestcookiecookie_domainr3   request_domains           r   _process_cookies"CookiesMiddleware._process_cookies4   sy     F"MMM)66s;M&w/88H'''%^^-N!2=!A!A 2 .  1 r   c                Z   UR                   R                  SS5      (       a  g UR                   R                  S5      nU R                  U   nU R                  XA5      nU R	                  XTUS9  UR
                  R                  SS 5        UR                  U5        U R                  X5        g )Ndont_merge_cookiesF	cookiejarr7   r8   r   )	metagetr"   _get_request_cookiesr<   headerspopadd_cookie_header_debug_cookie)r$   r8   spidercookiejarkeyr7   r6   s         r   process_request!CookiesMiddleware.process_requestF   s     <<0%88||''4ii%++C9g@ 	Hd+g&7+r   c                   UR                   R                  SS5      (       a  U$ UR                   R                  S5      nU R                  U   nUR                  X!5      nU R	                  XeUS9  U R                  X#5        U$ )Nr?   Fr@   rA   )rB   rC   r"   make_cookiesr<   _debug_set_cookie)r$   r8   responserI   rJ   r7   r6   s          r   process_response"CookiesMiddleware.process_responseW   s{     <<0%88O ||''4ii%""85g@x0r   c                   U R                   (       ar  UR                  R                  S5       Vs/ s H  n[        USS9PM     nnU(       a7  SR	                  S U 5       5      nSU SU 3n[
        R                  USU0S9  g g g s  snf )	Nr   replaceerrors
c              3  .   #    U  H  nS U S3v   M     g7f)zCookie: rW   N .0cs     r   	<genexpr>2CookiesMiddleware._debug_cookie.<locals>.<genexpr>n   s     #Abhqc$4b   zSending cookies to: rI   extrar#   rE   getlistr   joinlogger)r$   r8   rI   r\   clr6   msgs          r   rH   CookiesMiddleware._debug_cookieg   s    :: !00::A 1Y/:   ))#Ab#AA,WIRyAS6(:;     Bc                   U R                   (       ar  UR                  R                  S5       Vs/ s H  n[        USS9PM     nnU(       a7  SR	                  S U 5       5      nSU SU 3n[
        R                  USU0S9  g g g s  snf )	N
Set-CookierT   rU   rW   c              3  .   #    U  H  nS U S3v   M     g7f)zSet-Cookie: rW   NrY   rZ   s     r   r]   6CookiesMiddleware._debug_set_cookie.<locals>.<genexpr>y   s     #E"Ql1#R$8"r_   zReceived cookies from: rI   r`   rb   )r$   rP   rI   r\   rf   r6   rg   s          r   rO   #CookiesMiddleware._debug_set_cookier   s    :: "))11,??A 1Y/?   ))#E"#EE/zG9ES6(:;  ri   c                R   0 n[        5       nS H  nUR                  U5      nUc+  US;   a#  SU SU SU S3n[        R                  U5          gMB  [	        U[
        [        [        [        45      (       a  [        U5      X5'   Mv  [	        U[        5      (       d   e UR                  S5      X5'   M     S H<  nUR                  U[        5      nU[        L d  U(       d  M+  UR                  U5        M>     UR                  S5       SUR                  S5       3n	UR                  5        H  u  pVU	SUR!                  5        SU 3-  n	M      U H  nU	SUR!                  5        3-  n	M     U	$ ! [         a.    [        R                  S	UU5        UR                  S
SS9X5'    GM  f = f)zq
Given a dict consisting of cookie components, return its string representation.
Decode from bytes if necessary.
)namevaluepathr   Nrp   rq   z Invalid cookie found in request z: z ('z' is missing)utf8z0Non UTF-8 encoded cookie found in request %s: %slatin1rT   rU   )securerp   =rq   z; )setrC   re   warning
isinstanceboolfloatintstrbytesdecodeUnicodeDecodeError_UNSETaddrF   items
capitalize)
r$   r9   r8   decodedflagskeyrq   rg   flag
cookie_strs
             r   _format_cookie CookiesMiddleware._format_cookie}   s   
 6CJJsOE}++<WIRxsSVRWWdeCNN3'%$sC!899"5z!%////L#(<<#7GL 7*  DJJtV,EeIIdO	  
  F+,Agkk'.B-CD
!--/JCBs~~/0%99J *DBt0122J # * LNNJ
 $)<<<#KGLLs   E..3F&%F&c                  ^ ^ TR                   (       d  / $ [        TR                   [        5      (       a+  [        S TR                   R	                  5        5       5      nOTR                   nU H+  nUR                  S[        T5      R                  S:H  5        M-     [        SUU 4S jU 5       5      n[        TR                  SU0S9nUR                  UT5      $ )z4
Extract cookies from the Request.cookies attribute
c              3  .   #    U  H  u  pXS .v   M     g7f)rs   NrY   )r[   kvs      r   r]   9CookiesMiddleware._get_request_cookies.<locals>.<genexpr>   s     X@WQ3@Wr_   rv   httpsNc              3  H   >#    U  H  nTR                  UT5      v   M     g 7fr   )r   )r[   r\   r8   r$   s     r   r]   r      s!     !S7a$"5"5a"A"A7s   "rk   )rE   )r6   rz   dicttupler   
setdefaultr   schemefilterr	   urlrN   )r$   r7   r8   r6   r9   	formattedrP   s   ` `    r   rD   &CookiesMiddleware._get_request_cookies   s     Igoot,,X@U@U@WXXGooGFh(@(G(G7(RS 4!S7!ST	GKK,	1JK'22r   )r#   r"   N)F)r#   r{   )r-   r   returnr   )r6   zIterable[Cookie]r7   r
   r8   r   r   None)r8   r   rI   r   r   zRequest | Response | None)r8   r   rP   r	   rI   r   r   zRequest | Response)r8   r   rI   r   r   r   )rP   r	   rI   r   r   r   )r9   r   r8   r   r   z
str | None)r7   r
   r8   r   r   zSequence[Cookie])__name__
__module____qualname____firstlineno____doc__r%   classmethodr.   r<   rK   rQ   rH   rO   r   rD   __static_attributes__rY   r   r   r   r   '   s    F! > >
2'21:2EL2	2$(.	""*2<B	 	<	<&P33'.3	3r   r   )r   r~   r   r{   )*
__future__r   loggingcollectionsr   typingr   r   
tldextractr   scrapy.exceptionsr   scrapy.httpr	   scrapy.http.cookiesr
   scrapy.utils.httpobjr   scrapy.utils.pythonr   collections.abcr   r   http.cookiejarr   typing_extensionsr   scrapyr   r   scrapy.crawlerr   scrapy.http.requestr   	getLoggerr   re   r   objectr   r   r   rY   r   r   <module>r      sp    "  # % ! +   ) 0 *2% '&&1 
		8	$ t<	
O3 O3r   