
    g                         d dl Z d dlZd dlmZ d dlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ d d	lmZ  G d
 de      Ze G d d             Zy)    N)	dataclass)FakeHttpHeader   )HeaderProperties)NavigatorProperties)ViewportProperties)WebGlProperties)Enumc                       e Zd ZdZdZdZy)BrowserTypechromefirefoxsafariN)__name__
__module____qualname__CHROMEFIREFOXSAFARI     ^/var/www/openai/venv/lib/python3.12/site-packages/playwright_stealth/properties/_properties.pyr   r      s    FGFr   r   c                       e Zd ZU eed<   eed<   eed<   eed<   eed<   e	j                  fde	fdZdded	ed
efdZd
efdZd
efdZy)
Propertiesheader	navigatorviewportwebglrunOnInsecureOriginsbrowser_typec                    t        d|j                        }| j                  |j                  |j                        }| j	                         }t        d|||t        j                  ud|j                         | _	        t        d||d|j                         | _        t               | _        t               | _        d | _        y )Ncom)domain_codebrowser)r$   )brandsdntclient_hint_headers_enabled)r%   r&   r   )r   value_generate_brands
user_agent_generate_dntr   r   r   as_header_dictr   r   r   r   r   r	   r   r   )selfr    spoofed_headersr%   r&   s        r   __init__zProperties.__init__   s    (ULDVDVW &&'A'A<K]K]&^  " ' 
(4&&)'

 ,,.
 - 
s
&5&D&D&F
 +,$&
$(!r   r*   r$   returnc                    dddgddddgdddd	gdd
}||   }|d   }t        j                  ||      }|j                  d      }t        |j	                  d      d         }g dg dg dg dg dg dg|dz     }	g d}
|
|	d       d|
|	d       d|
|	d       d}i i i g}|dd||	d   <   |d   d   |d||	d   <   |d   d   |d||	d   <   |S )z*Generates the brands based on the referer.zChrome/(\d+)ChromiumzGoogle Chrome)regexr%   zFirefox/(\d+)FirefoxzSafari/(\d+)SafarizApple WebKit)r   r   r   r3   r   .r   )r   r      )r   r7   r   )r   r   r7   )r   r7   r   )r7   r   r   )r7   r   r      ) r9   ;NotAr7   Brand99)brandversionr%   )researchgroupintsplit)r-   r*   r$   configsconfigpatternbrowser_with_versionr@   seedorderescaped_charsgreasey_brandgreased_brand_version_lists                r   r)   zProperties._generate_brands1   sq   
 )%7
 *$i0
 )#^4
 !/!yy*=&,,Q/7==%a() 
 ( ( U1X&'s=q+B*C1]SXYZS[E\D]]bc 	 ')"b\" #0
"58, H%a(0
"58, H%a(0
"58,
 *)r   c                 @    t        t        j                  dd            S )zRandomly generates a 0 or 1.r   r   )strrandomrandintr-   s    r   r+   zProperties._generate_dntl   s     6>>!Q'((r   c                     | j                   j                         | j                  j                         | j                  j                         | j                  j                         dS )z'Returns the properties as a dictionary.)r   r   r   r   )r   as_dictr   r   r   rS   s    r   rU   zProperties.as_dictq   sN     kk))+--///1ZZ'')	
 	
r   N)r   )r   r   r   r   __annotations__r   r   r	   boolr   r   r/   rP   r)   r+   dictrU   r   r   r   r   r      sj     ""  3>3E3E )[ ),9*3 9* 9*C 9*v)s )

 
r   r   )rA   rQ   dataclassesr   fake_http_headerr   _header_propertiesr   _navigator_propertiesr   _viewport_propertiesr   _webgl_propertiesr	   enumr
   r   r   r   r   r   <module>r`      sH    	  ! + 0 6 4 . $  f
 f
 f
r   