.oO SearXNG Developer Documentation Oo.
Loading...
Searching...
No Matches
ahmia_filter.py
Go to the documentation of this file.
1# SPDX-License-Identifier: AGPL-3.0-or-later
2# pylint: disable=missing-module-docstring
3
4from __future__ import annotations
5from hashlib import md5
6
7import flask
8
9from searx.data import ahmia_blacklist_loader
10from searx import get_setting
11
12
13name = "Ahmia blacklist"
14description = "Filter out onion results that appear in Ahmia's blacklist. (See https://ahmia.fi/blacklist)"
15default_on = True
16preference_section = 'onions'
17
18ahmia_blacklist: list = []
19
20
21def on_result(_request, _search, result) -> bool:
22 if not getattr(result, 'is_onion', None) or not getattr(result, 'parsed_url', None):
23 return True
24 result_hash = md5(result['parsed_url'].hostname.encode()).hexdigest()
25 return result_hash not in ahmia_blacklist
26
27
28def init(app=flask.Flask) -> bool: # pylint: disable=unused-argument
29 global ahmia_blacklist # pylint: disable=global-statement
30 if not get_setting("outgoing.using_tor_proxy"):
31 # disable the plugin
32 return False
33 ahmia_blacklist = ahmia_blacklist_loader()
34 return True
bool init(app=flask.Flask)
bool on_result(_request, _search, result)
get_setting(name, default=_unset)
Definition __init__.py:69