
    i              	           d Z ddlZddlmZmZ ddlZddlZddlmZ ddl	m
Z
 d ej                  d      z   d	z   d
z   Z	 dad Zdeez  dej                  dej                   dej"                  dz  fdZy)a8  
Method ``http_user_agent``
--------------------------

The ``http_user_agent`` method evaluates a request as the request of a bot if
the User-Agent_ header is unset or matches the regular expression
:py:obj:`USER_AGENT`.

.. _User-Agent:
   https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent

    N)IPv4NetworkIPv6Network   )config)too_many_requestsa  (unknown|[Cc][Uu][Rr][Ll]|[wW]get|Scrapy|splash|JavaFX|FeedFetcher|python-requests|Go-http-client|Java|Jakarta|okhttp|HttpClient|Jersey|Python|libwww-perl|Ruby|SynHttpClient|UniversalFeedParser|Googlebot|GoogleImageProxy|bingbot|Baiduspider|yacybot|YandexMobileBot|YandexBot|Yahoo! Slurp|MJ12bot|AhrefsBot|archive.org_bot|msnbot|MJ12bot|SeznamBot|linkdexbot|Netvibes|SMTBot|zgrab|James BOT|Sogou|Abonti|Pixray|Spinn3r|SemrushBot|Exabot|ZmEu|BLEXBot|bitlybot|HeadlessChrome|z>Mozilla/5.0 (compatible; Farside/0.1.0; +https://farside.link)z|.*PetalBot.*)c                  L    t         st        j                  t              a t         S )N)_regexprecompile
USER_AGENT     3/root/searxng/searx/botdetection/http_user_agent.pyregexp_user_agentr   1   s    **Z(Nr   networkrequestcfgreturnc                     |j                   j                  dd      }t               j                  |      rt	        | d|       S y )Nz
User-Agentunknownz&bot detected, HTTP header User-Agent: )headersgetr   matchr   )r   r   r   
user_agents       r   filter_requestr   8   sE     $$\9=J  , ,RS]R^*_``r   )__doc__r   	ipaddressr   r   werkzeugflask r   _helpersr   escaper   r
   r   RequestConfigResponser   r   r   r   <module>r'      s    

    ' biiQR	S    G
	;&	]]	 
	 		r   