ahmia_filter.py 944 B

12345678910111213141516171819202122232425262728293031323334
  1. '''
  2. SPDX-License-Identifier: AGPL-3.0-or-later
  3. '''
  4. from hashlib import md5
  5. from searx.data import ahmia_blacklist_loader
  6. name = "Ahmia blacklist"
  7. description = "Filter out onion results that appear in Ahmia's blacklist. (See https://ahmia.fi/blacklist)"
  8. default_on = True
  9. preference_section = 'onions'
  10. ahmia_blacklist = None
  11. def get_ahmia_blacklist():
  12. global ahmia_blacklist
  13. if not ahmia_blacklist:
  14. ahmia_blacklist = ahmia_blacklist_loader()
  15. return ahmia_blacklist
  16. def not_blacklisted(result):
  17. if not result.get('is_onion') or not result.get('parsed_url'):
  18. return True
  19. result_hash = md5(result['parsed_url'].hostname.encode()).hexdigest()
  20. return result_hash not in get_ahmia_blacklist()
  21. def post_search(request, search):
  22. filtered_results = list(filter(not_blacklisted, search.result_container._merged_results))
  23. search.result_container._merged_results = filtered_results
  24. return True