
    vKg                         S SK r S SKrS SKJr  S SKJr  S SKJrJrJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  \ R"                  " \5      r " S	 S
5      rg)    N)datetime)har)RequestResponseWebSocketMessage)HTTPResponse)
websockets)Headers)is_list_alikec                   X    \ rS rSrSrS rS rS rS rS r	S r
SS
 jrS rS rS rSrg	)InterceptRequestHandler   zLMitmproxy add-on which is responsible for request modification
and capture.
c                     Xl         g Nproxy)selfr   s     T/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/seleniumwire/handler.py__init__ InterceptRequestHandler.__init__   s    
    c                 h    U R                  UR                  5      (       a  SUR                  l        g g NF)in_scoperequeststreamr   flows     r   requestheaders&InterceptRequestHandler.requestheaders   s&    ==&&"'DLL 'r   c                 z   UR                   R                  (       a{  UR                   R                  R                  U R                  R                  R
                  R                  R                  R                  :w  a  UR                  R                  5         g U R                  R                  R                  UR                  SS9  U R                  U5      nU R                  U5      (       d,  [        R!                  SUR"                  UR$                  5        g U R                  R&                  Gb[  U R                  R'                  U5        UR(                  (       a  [*        R,                  " [/        UR(                  R0                  5      UR(                  R2                  UR(                  R4                  R7                  5        VVs/ sH'  u  p4UR9                  S5      UR9                  S5      4PM)     snnS9Ul        OUR"                  UR                  l        UR$                  R;                  SSS5      UR                  l        U R=                  UR4                  5      UR                  l        UR2                  UR                  l        [        RA                  S	UR$                  5        U R                  RB                  RE                  U5        URF                  b  URF                  UR                  l#        UR(                  (       a:  U R                  RB                  RI                  URF                  UR(                  5        U R                  RJ                  RM                  S
5      SL a  SUR                  R4                  S'   SUR                  R4                  ;   a  UR                  R4                  S	 g g s  snnf )Nraw_content)bodyattrzNot capturing %s request: %sutf-8)status_codecontentheaderswss://https://   zCapturing request: %sdisable_encodingTidentityzAccept-EncodingzProxy-Connection)'server_connviaaddressr   masterserverconfigupstream_serverclient_connfinishmodifiermodify_requestr   _create_requestr   logdebugmethodurlrequest_interceptorresponser   makeintr%   bodyr'   itemsencodereplace_to_headers_objr"   infostoragesave_requestidsave_responseoptionsget)r   r   r   kvs        r   r   InterceptRequestHandler.request   s   ##++tzz/@/@/G/G/N/N/^/^/f/ff   '') 	

**4<<-*P &&t,}}W%%II4gnngkkR ::))5JJ**73 , 1 1 #G$4$4$@$@ A#,,11PWP`P`PhPhPnPnPpqPpahhw/'1BCPpq! '.nn##*;;#6#6xQ#O '+';';GOO'L$+2<<(('++6

''0::!%jjDLLOJJ,,WZZ9I9IJ ::!!"45=6@DLL  !23 !5!55$$%78 61 rs   -N7c                 6   UR                   U R                  R                  R                  SS/5      ;   a  gU R                  R                  nU(       d  g[        U5      (       d  U/nU H,  n[        R                  " X1R                  5      nU(       d  M,    g   g)Nignore_http_methodsOPTIONSFT)	r;   r   rK   rL   scopesr   researchr<   )r   r   rS   scopematchs        r   r    InterceptRequestHandler.in_scopeT   s{    >>TZZ//334II;WW""v&&XFEIIe[[1Eu 
 r   c                 h    U R                  UR                  5      (       a  SUR                  l        g g r   )r   r   r>   r   r   s     r   responseheaders'InterceptRequestHandler.responseheadersf   s&    ==&&#(DMM  'r   c                 4   U R                   R                  R                  UR                  UR                  5        [        UR                  S5      (       d  g U R                  U5      nU R                   R                  b  U R                   R                  U R                  X5      U5        UR                  UR                  l	        UR                  UR                  l
        U R                  UR                  5      UR                  l        UR                  UR                  l        [        R!                  SUR                  R"                  UR                  UR                  5        U R                   R$                  R'                  UR                  R(                  U5        U R                   R*                  R-                  SS5      (       aO  U R                   R$                  R/                  UR                  R(                  [0        R2                  " U5      5        g g )NrI   zCapturing response: %s %s %s
enable_harF)r   r6   modify_responser>   r   hasattr_create_responseresponse_interceptorr8   r%   reasonrE   r'   rA   r"   r9   rF   r<   rG   rJ   rI   rK   rL   save_har_entryr   create_har_entry)r   r   r>   s      r   r>    InterceptRequestHandler.responsek   si    	

++DMM4<<Ht||T** ((. ::**6JJ++D,@,@,PRZ[(0(<(<DMM%#+??DMM $($8$89I9I$JDMM!(0DMM%/1A1A8CWCWYaYhYhi

(((C::!!,66JJ--dlloos?S?STX?YZ 7r   Nc           
         [        UR                  R                  UR                  R                  UR                  R                  R                  5        VVs/ sH  u  p4X44PM
     snnUR                  R                  S9n[        R                  " UR                  5      (       aG  [        R                  " UR                  5      (       a"  UR                  R                  SSS5      Ul        X%l        U$ s  snnf )N)r;   r<   r'   rA   r)   r(   r*   )r   r   r;   r<   r'   rB   r"   r	   check_handshakecheck_client_versionrD   r>   )r   r   r>   rM   rN   r   s         r   r8   'InterceptRequestHandler._create_request   s    <<&&  (,(<(<(B(B(DE(DaV(DE))	
 %%goo66:;Z;Z[b[j[j;k;k!++--j(AFGK# Fs   C4c                 h   [        UR                  R                  UR                  R                  UR                  R                  R                  SS9 VVs/ sH  u  p#X#4PM
     snnUR                  R                  S9nUR                  R                  nUb  [        UR                  UR                  UR                  UR                  R                  5       UR                  UR                   UR"                  UR$                  UR&                  UR(                  UR*                  S9Ul        U$ s  snnf )NT)multi)r%   rb   r'   rA   )subjectserialkeysignature_algorithmexpiredissuer	notbeforenotafterorganizationcnaltnames)r   r>   r%   rb   r'   rB   r"   r-   certdictrl   rm   keyinfox509get_signature_algorithmhas_expiredrq   rr   rs   rt   ru   rv   )r   r   rM   rN   r>   rw   s         r   r`   (InterceptRequestHandler._create_response   s    11==''(,(=(=(C(C$(C(OP(OaV(OP**	
 $$ {{LL$(II$E$E$G(({{..!..77HM ) Qs   D.c           
          [        UR                  5        VVs/ sH0  u  p#UR                  S5      [        U5      R                  S5      4PM2     snn5      $ s  snnf )Nr$   )r
   rB   rC   str)r   r'   rM   rN   s       r   rE   'InterceptRequestHandler._to_headers_obj   sH    PWP]P]P_`P_'*CFMM',BCP_`aa`s   6A
c                    [        UR                  R                  S5      (       a  UR                  S   n[	        UR
                  UR                  [        R                  " UR                  5      S9nU R                  R                  R                  UR                  R                  R                  U5        UR
                  (       a  SnOSn[        R                  SXC5        g g )NrI   )from_clientr&   datez(client -> server)z(server -> client)z"Capturing websocket message %s: %s)r_   handshake_flowr   messagesr   r   r&   r   fromtimestamp	timestampr   rG   save_ws_messagerI   r9   r:   )r   r   message
ws_message	directions        r   websocket_message)InterceptRequestHandler.websocket_message   s    4&&..55mmB'G)#//++G,=,=>J JJ..t/B/B/J/J/M/MzZ""0	0	II:IR 6r   r   r   )__name__
__module____qualname____firstlineno____doc__r   r   r   r   rZ   r>   r8   r`   rE   r   __static_attributes__ r   r   r   r      s=    (
69p$)
[8"4bSr   r   )loggingrT   r   seleniumwirer   seleniumwire.requestr   r   r   &seleniumwire.thirdparty.mitmproxy.httpr   %seleniumwire.thirdparty.mitmproxy.netr	   2seleniumwire.thirdparty.mitmproxy.net.http.headersr
   seleniumwire.utilsr   	getLoggerr   r9   r   r   r   r   <module>r      sA     	   D D ? < F ,!vS vSr   