| 
    .oO SearXNG Developer Documentation Oo.
    
   | 
 
Classes | |
| class | AsyncHTTPTransportNoHttp | 
| class | AsyncProxyTransportFixed | 
Functions | |
| shuffle_ciphers (SSLContext ssl_context) | |
| SSLContext | get_sslcontexts (str|None proxy_url=None, CertTypes|None cert=None, bool verify=True, bool trust_env=True) | 
| get_transport_for_socks_proxy (bool verify, bool http2, str local_address, str proxy_url, httpx.Limits limit, int retries) | |
| get_transport (bool verify, bool http2, str local_address, str|None proxy_url, httpx.Limits limit, int retries) | |
| httpx.AsyncClient | new_client (bool enable_http, bool verify, bool enable_http2, int max_connections, int max_keepalive_connections, float keepalive_expiry, dict[str, str] proxies, str local_address, int retries, int max_redirects, t.Callable[..., t.Any]|None hook_log_response) | 
| asyncio.AbstractEventLoop | get_loop () | 
| init () | |
Variables | |
| CertTypes = str | tuple[str, str] | tuple[str, str, str] | |
| SslContextKeyType = tuple[str | None, CertTypes | None, bool, bool] | |
| logger = logger.getChild('searx.network.client') | |
| asyncio | LOOP = None | 
| dict | SSLCONTEXTS = {} | 
| asyncio.AbstractEventLoop searx.network.client.get_loop | ( | ) | 
Definition at line 209 of file client.py.
Referenced by get_transport_for_socks_proxy().
| SSLContext searx.network.client.get_sslcontexts | ( | str | None | proxy_url = None, | 
| CertTypes | None | cert = None, | ||
| bool | verify = True, | ||
| bool | trust_env = True ) | 
Definition at line 51 of file client.py.
References shuffle_ciphers().
Referenced by get_transport(), and get_transport_for_socks_proxy().
| searx.network.client.get_transport | ( | bool | verify, | 
| bool | http2, | ||
| str | local_address, | ||
| str | None | proxy_url, | ||
| httpx.Limits | limit, | ||
| int | retries ) | 
Definition at line 145 of file client.py.
References get_sslcontexts().
Referenced by new_client().
| searx.network.client.get_transport_for_socks_proxy | ( | bool | verify, | 
| bool | http2, | ||
| str | local_address, | ||
| str | proxy_url, | ||
| httpx.Limits | limit, | ||
| int | retries ) | 
Definition at line 114 of file client.py.
References get_loop(), and get_sslcontexts().
Referenced by new_client().
| searx.network.client.init | ( | ) | 
Definition at line 213 of file client.py.
References init().
Referenced by init().
| httpx.AsyncClient searx.network.client.new_client | ( | bool | enable_http, | 
| bool | verify, | ||
| bool | enable_http2, | ||
| int | max_connections, | ||
| int | max_keepalive_connections, | ||
| float | keepalive_expiry, | ||
| dict[str, str] | proxies, | ||
| str | local_address, | ||
| int | retries, | ||
| int | max_redirects, | ||
| t.Callable[..., t.Any] | None | hook_log_response ) | 
Definition at line 160 of file client.py.
References get_transport(), and get_transport_for_socks_proxy().
| searx.network.client.shuffle_ciphers | ( | SSLContext | ssl_context | ) | 
Shuffle httpx's default ciphers of a SSL context randomly. From `What Is TLS Fingerprint and How to Bypass It`_ > When implementing TLS fingerprinting, servers can't operate based on a > locked-in whitelist database of fingerprints. New fingerprints appear > when web clients or TLS libraries release new versions. So, they have to > live off a blocklist database instead. > ... > It's safe to leave the first three as is but shuffle the remaining ciphers > and you can bypass the TLS fingerprint check. .. _What Is TLS Fingerprint and How to Bypass It: https://www.zenrows.com/blog/what-is-tls-fingerprint#how-to-bypass-tls-fingerprinting
Definition at line 28 of file client.py.
Referenced by get_sslcontexts().
| searx.network.client.CertTypes = str | tuple[str, str] | tuple[str, str, str] | 
| searx.network.client.logger = logger.getChild('searx.network.client') | 
| searx.network.client.SslContextKeyType = tuple[str | None, CertTypes | None, bool, bool] |