summaryrefslogtreecommitdiff
path: root/searx/botdetection/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'searx/botdetection/__init__.py')
-rw-r--r--searx/botdetection/__init__.py47
1 files changed, 13 insertions, 34 deletions
diff --git a/searx/botdetection/__init__.py b/searx/botdetection/__init__.py
index 74f6c4263..d5716bcc8 100644
--- a/searx/botdetection/__init__.py
+++ b/searx/botdetection/__init__.py
@@ -2,43 +2,22 @@
# lint: pylint
""".. _botdetection src:
-The :ref:`limiter <limiter src>` implements several methods to block bots:
-
-a. Analysis of the HTTP header in the request / can be easily bypassed.
-
-b. Block and pass lists in which IPs are listed / difficult to maintain, since
- the IPs of bots are not all known and change over the time.
-
-c. Detection of bots based on the behavior of the requests and blocking and, if
- necessary, unblocking of the IPs via a dynamically changeable IP block list.
-
-For dynamically changeable IP lists a Redis database is needed and for any kind
-of IP list the determination of the IP of the client is essential. The IP of
-the client is determined via the X-Forwarded-For_ HTTP header
-
-.. _X-Forwarded-For:
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For
-
-X-Forwarded-For
-===============
-
-.. attention::
-
- A correct setup of the HTTP request headers ``X-Forwarded-For`` and
- ``X-Real-IP`` is essential to be able to assign a request to an IP correctly:
-
- - `NGINX RequestHeader`_
- - `Apache RequestHeader`_
-
-.. _NGINX RequestHeader:
- https://docs.searxng.org/admin/installation-nginx.html#nginx-s-searxng-site
-.. _Apache RequestHeader:
- https://docs.searxng.org/admin/installation-apache.html#apache-s-searxng-site
-
-.. autofunction:: searx.botdetection.get_real_ip
+Implementations used for bot detection.
"""
from ._helpers import dump_request
from ._helpers import get_real_ip
+from ._helpers import get_network
from ._helpers import too_many_requests
+
+__all__ = ['dump_request', 'get_network', 'get_real_ip', 'too_many_requests']
+
+redis_client = None
+cfg = None
+
+
+def init(_cfg, _redis_client):
+ global redis_client, cfg # pylint: disable=global-statement
+ redis_client = _redis_client
+ cfg = _cfg