Hostnames plugin

In addition to rewriting/replace reslut URLs, the hoostnames plugin offers other features.

Attention

The ‘Hostnames plugin’ from PR-3463 is a rewrite of the ‘Hostname replace’ plugin. Backwards compatibility is guaranteed for a transitional period, but this will end soon.

To maintainers of SearXNG instances, please modify your old plugin config to the new.

  • hostnames.replace: A mapping of regular expressions to hostnames to be replaced by other hostnames.

    hostnames:
      replace:
        '(.*\.)?youtube\.com$': 'invidious.example.com'
        '(.*\.)?youtu\.be$': 'invidious.example.com'
        ...
    
  • hostnames.remove: A list of regular expressions of the hostnames whose results should be taken from the results list.

    hostnames:
      remove:
        - '(.*\.)?facebook.com$'
        - ...
    
  • hostnames.high_priority: A list of regular expressions for hostnames whose result should be given higher priority. The results from these hosts are arranged higher in the results list.

    hostnames:
      high_priority:
        - '(.*\.)?wikipedia.org$'
        - ...
    
  • hostnames.lower_priority: A list of regular expressions for hostnames whose result should be given lower priority. The results from these hosts are arranged lower in the results list.

    hostnames:
      low_priority:
        - '(.*\.)?google(\..*)?$'
        - ...
    

If the URL matches the pattern of high_priority AND low_priority, the higher priority wins over the lower priority.

Alternatively, you can also specify a file name for the mappings or lists to load these from an external file:

hostnames:
  replace: 'rewrite-hosts.yml'
  remove:
    - '(.*\.)?facebook.com$'
    - ...
  low_priority:
    - '(.*\.)?google(\..*)?$'
    - ...
  high_priority:
    - '(.*\.)?wikipedia.org$'
    - ...

The rewrite-hosts.yml from the example above must be in the folder in which the settings.yml file is already located (/etc/searxng). The file then only contains the lists or the mapping tables without further information on the namespaces. In the example above, this would be a mapping table that looks something like this:

'(.*\.)?youtube\.com$': 'invidious.example.com'
'(.*\.)?youtu\.be$': 'invidious.example.com'