docker项目-搭建个人搜索引擎SearXNG
SearXNG是一个免费的互联网元搜索引擎,它汇总了来自更多 超过 70 个搜索服务。
·
docker项目-搭建个人搜索引擎SearXNG
SearXNG简介
SearXNG是一个免费的互联网元搜索引擎,它汇总了来自更多 超过 70 个搜索服务。
文档地址:https://docs.searxng.org/
github地址:https://github.com/searxng/searxng
Dokcer仓库:https://github.com/searxng/searxng-docker
演示Dome:https://searx.space/#
部署需求
Vps:一台,建议国外vps
系统:任意linux发行版,本文采用rocky
容器:docker
个人域名,带ssl证书
搭建过程
安装docker
yum install -y yum-utils
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce -y
启动docker
systemctl enable docker --now
安装docker-compose
curl -L https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose
Git SearXNG项目
安装git
yum install git -y
建立项目目录
mkdir /data
克隆项目
cd /data
git clone https://github.com/searxng/searxng-docker.git
配置docker-compose
本次安装不采用caddy容器做代理,采用本地nginx做代理,因此注释掉caddy容器内容。
version: '3.7'
services:
# caddy:
# container_name: caddy
# image: caddy:2-alpine
# network_mode: host
# volumes:
# - ./Caddyfile:/etc/caddy/Caddyfile:ro
# - caddy-data:/data:rw
# - caddy-config:/config:rw
# environment:
# - SEARXNG_HOSTNAME=${SEARXNG_HOSTNAME:-http://localhost:80}
# - SEARXNG_TLS=${LETSENCRYPT_EMAIL:-internal}
# cap_drop:
# - ALL
# cap_add:
# - NET_BIND_SERVICE
# - DAC_OVERRIDE
redis:
container_name: redis
image: "redis:alpine"
command: redis-server --save "" --appendonly "no"
networks:
- searxng
tmpfs:
- /var/lib/redis
cap_drop:
- ALL
cap_add:
- SETGID
- SETUID
- DAC_OVERRIDE
searxng:
container_name: searxng
image: searxng/searxng:latest
networks:
- searxng
ports:
- "127.0.0.1:8080:8080"
volumes:
- ./searxng:/etc/searxng:rw
environment:
- SEARXNG_BASE_URL=https://${SEARXNG_HOSTNAME:-localhost}/
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
- DAC_OVERRIDE
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
networks:
searxng:
ipam:
driver: default
volumes:
caddy-data:
caddy-config:
配置env文件
cd /data/searxng-docker
vim .env
/data/searxng-docker
[root@racknerd-944314 searxng-docker]# cat .env
# By default listen on https://localhost
# To change this:
# * uncomment SEARXNG_HOSTNAME, and replace <host> by the SearXNG hostname
# * uncomment LETSENCRYPT_EMAIL, and replace <email> by your email (require to create a Let's Encrypt certificate)
SEARXNG_HOSTNAME=www.xxx.xx
# LETSENCRYPT_EMAIL=<email>
将SEARXNG_HOSTNAME修改为域名
配置settings.yml文件
cd /data/searxng-docker/searxng
生成secret_key秘钥
sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng/settings.yml
解决打开域名“too many requests”
limiter: false
添加engines配置,解决google引擎 “too many requests”
engines:
- name: google
engine: google
shortcut: go
use_mobile_ui: true
- name: google images
engine: google_images
use_mobile_ui: true
- name: google news
engine: google_news
use_mobile_ui: true
- name: google videos
engine: google_videos
use_mobile_ui: true
- name: google scholar
engine: google_scholar
use_mobile_ui: true
- name: google play apps
engine: google_play_apps
use_mobile_ui: true
完整settings.yml文件配置
# see https://docs.searxng.org/admin/engines/settings.html#use-default-settings
use_default_settings: true
server:
# base_url is defined in the SEARXNG_BASE_URL environment variable, see .env and docker-compose.yml
secret_key: "3af379c948a8dfc252bc57f115c08c2f1ef7eaeab44a079082a9edd92d3d34ae" # change this!
limiter: false # can be disabled for a private instance
image_proxy: true
ui:
static_use_hash: true
redis:
url: redis://redis:6379/0
engines:
- name: google
engine: google
shortcut: go
use_mobile_ui: true
- name: google images
engine: google_images
use_mobile_ui: true
- name: google news
engine: google_news
use_mobile_ui: true
- name: google videos
engine: google_videos
use_mobile_ui: true
- name: google scholar
engine: google_scholar
use_mobile_ui: true
- name: google play apps
engine: google_play_apps
use_mobile_ui: true
根据docker-compose生成容器
cd /data/searxng-docker/
docker-compose up -d
配置Nginx代理
安装nginx
通过二进制或者yum安装,本文采用二进制安装。
配置nginx
将https的443端口,代理转发到searxng容器的8080端口
vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 443 ssl;
server_name www.xxx.xx; #你的域名
ssl_certificate xxx.xx.pem; #域名证书
ssl_certificate_key xxx.xx.key; #域名秘钥
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!eNULL;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_redirect off;
proxy_pass http://127.0.0.1:8080;
}
}
}
访问域名验证
访问域名https://www.xxx.xx
更新和卸载
更新
#进入项目目录
cd /data/searxng-docker
#拉取最新镜像
docker-compose pull
#更新
docker-compose up -d
卸载
#进入项目
cd /data/searxng-docker
#停止容器,不会删除本地映射数据
docker-compose down
#完全删除本地数据
rm -rf /data/searxng-docker
官方settings.yaml配置模板
general:
# Debug mode, only for development
debug: false
# displayed name
instance_name: "SearXNG"
# For example: https://example.com/privacy
privacypolicy_url: false
# use true to use your own donation page written in searx/info/en/donate.md
# use false to disable the donation link
donation_url: https://docs.searxng.org/donate.html
# mailto:contact@example.com
contact_url: false
# record stats
enable_metrics: true
brand:
new_issue_url: https://github.com/searxng/searxng/issues/new
docs_url: https://docs.searxng.org/
public_instances: https://searx.space
wiki_url: https://github.com/searxng/searxng/wiki
issue_url: https://github.com/searxng/searxng/issues
search:
# Filter results. 0: None, 1: Moderate, 2: Strict
safe_search: 0
# Existing autocomplete backends: "dbpedia", "duckduckgo", "google", "yandex",
# "seznam", "startpage", "swisscows", "qwant", "wikipedia" - leave blank to turn it off
# by default.
autocomplete: ""
# minimun characters to type before autocompleter starts
autocomplete_min: 4
# Default search language - leave blank to detect from browser information or
# use codes from 'languages.py'
default_lang: ""
# Available languages
# languages:
# - all
# - en
# - en-US
# - de
# - it-IT
# - fr
# - fr-BE
# ban time in seconds after engine errors
ban_time_on_fail: 5
# max ban time in seconds after engine errors
max_ban_time_on_fail: 120
# remove format to deny access, use lower case.
# formats: [html, csv, json, rss]
formats:
- html
server:
# If you change port, bind_address or base_url don't forget to rebuild
# instance's environment (make buildenv)
port: 8888
bind_address: "127.0.0.1"
base_url: false # Possible values: false or "https://example.org/location".
limiter: false # rate limit the number of request on the instance, block some bots
# If your instance owns a /etc/searxng/settings.yml file, then set the following
# values there.
secret_key: "ultrasecretkey" # change this!
# Proxying image results through searx
image_proxy: false
# 1.0 and 1.1 are supported
http_protocol_version: "1.0"
# POST queries are more secure as they don't show up in history but may cause
# problems when using Firefox containers
method: "POST"
default_http_headers:
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Download-Options: noopen
X-Robots-Tag: noindex, nofollow
Referrer-Policy: no-referrer
redis:
# https://redis-py.readthedocs.io/en/stable/connections.html#redis.client.Redis.from_url
url: false
ui:
# Custom static path - leave it blank if you didn't change
static_path: ""
static_use_hash: false
# Custom templates path - leave it blank if you didn't change
templates_path: ""
# query_in_title: When true, the result page's titles contains the query
# it decreases the privacy, since the browser can records the page titles.
query_in_title: false
# infinite_scroll: When true, automatically loads the next page when scrolling to bottom of the current page.
infinite_scroll: false
# ui theme
default_theme: simple
# center the results ?
center_alignment: false
# URL prefix of the internet archive, don't forgett trailing slash (if needed).
# cache_url: "https://webcache.googleusercontent.com/search?q=cache:"
# Default interface locale - leave blank to detect from browser information or
# use codes from the 'locales' config section
default_locale: ""
# Open result links in a new tab by default
# results_on_new_tab: false
theme_args:
# style of simple theme: auto, light, dark
simple_style: auto
# Lock arbitrary settings on the preferences page. To find the ID of the user
# setting you want to lock, check the ID of the form on the page "preferences".
#
# preferences:
# lock:
# - language
# - autocomplete
# - method
# - query_in_title
# searx supports result proxification using an external service:
# https://github.com/asciimoo/morty uncomment below section if you have running
# morty proxy the key is base64 encoded (keep the !!binary notation)
# Note: since commit af77ec3, morty accepts a base64 encoded key.
#
# result_proxy:
# url: http://127.0.0.1:3000/
# # the key is a base64 encoded string, the YAML !!binary prefix is optional
# key: !!binary "your_morty_proxy_key"
# # [true|false] enable the "proxy" button next to each result
# proxify_results: true
# communication with search engines
#
outgoing:
# default timeout in seconds, can be override by engine
request_timeout: 3.0
# the maximum timeout in seconds
# max_request_timeout: 10.0
# suffix of searx_useragent, could contain information like an email address
# to the administrator
useragent_suffix: ""
# The maximum number of concurrent connections that may be established.
pool_connections: 100
# Allow the connection pool to maintain keep-alive connections below this
# point.
pool_maxsize: 20
# See https://www.python-httpx.org/http2/
enable_http2: true
# uncomment below section if you want to use a custom server certificate
# see https://www.python-httpx.org/advanced/#changing-the-verification-defaults
# and https://www.python-httpx.org/compatibility/#ssl-configuration
# verify: ~/.mitmproxy/mitmproxy-ca-cert.cer
#
# uncomment below section if you want to use a proxyq see: SOCKS proxies
# https://2.python-requests.org/en/latest/user/advanced/#proxies
# are also supported: see
# https://2.python-requests.org/en/latest/user/advanced/#socks
#
# proxies:
# all://:
# - http://proxy1:8080
# - http://proxy2:8080
#
# using_tor_proxy: true
#
# Extra seconds to add in order to account for the time taken by the proxy
#
# extra_proxy_timeout: 10.0
#
# uncomment below section only if you have more than one network interface
# which can be the source of outgoing search requests
#
# source_ips:
# - 1.1.1.1
# - 1.1.1.2
# - fe80::/126
# External plugin configuration, for more details see
# https://docs.searxng.org/dev/plugins.html
#
# plugins:
# - plugin1
# - plugin2
# - ...
# Comment or un-comment plugin to activate / deactivate by default.
#
# enabled_plugins:
# # these plugins are enabled if nothing is configured ..
# - 'Hash plugin'
# - 'Search on category select'
# - 'Self Information'
# - 'Tracker URL remover'
# - 'Ahmia blacklist' # activation depends on outgoing.using_tor_proxy
# # these plugins are disabled if nothing is configured ..
# - 'Hostname replace' # see hostname_replace configuration below
# - 'Open Access DOI rewrite'
# - 'Vim-like hotkeys'
# - 'Tor check plugin'
# Configuration of the "Hostname replace" plugin:
#
# hostname_replace:
# '(.*\.)?youtube\.com$': 'invidious.example.com'
# '(.*\.)?youtu\.be$': 'invidious.example.com'
# '(.*\.)?youtube-noocookie\.com$': 'yotter.example.com'
# '(.*\.)?reddit\.com$': 'teddit.example.com'
# '(.*\.)?redd\.it$': 'teddit.example.com'
# '(www\.)?twitter\.com$': 'nitter.example.com'
# # to remove matching host names from result list, set value to false
# 'spam\.example\.com': false
checker:
# disable checker when in debug mode
off_when_debug: true
# use "scheduling: false" to disable scheduling
# scheduling: interval or int
# to activate the scheduler:
# * uncomment "scheduling" section
# * add "cache2 = name=searxngcache,items=2000,blocks=2000,blocksize=4096,bitmap=1"
# to your uwsgi.ini
# scheduling:
# start_after: [300, 1800] # delay to start the first run of the checker
# every: [86400, 90000] # how often the checker runs
# additional tests: only for the YAML anchors (see the engines section)
#
additional_tests:
rosebud: &test_rosebud
matrix:
query: rosebud
lang: en
result_container:
- not_empty
- ['one_title_contains', 'citizen kane']
test:
- unique_results
android: &test_android
matrix:
query: ['android']
lang: ['en', 'de', 'fr', 'zh-CN']
result_container:
- not_empty
- ['one_title_contains', 'google']
test:
- unique_results
# tests: only for the YAML anchors (see the engines section)
tests:
infobox: &tests_infobox
infobox:
matrix:
query: ["linux", "new york", "bbc"]
result_container:
- has_infobox
categories_as_tabs:
general:
images:
videos:
news:
map:
music:
it:
science:
files:
social media:
engines:
- name: 9gag
engine: 9gag
shortcut: 9g
disabled: true
- name: apk mirror
engine: apkmirror
timeout: 4.0
shortcut: apkm
disabled: true
- name: apple app store
engine: apple_app_store
shortcut: aps
disabled: true
# Requires Tor
- name: ahmia
engine: ahmia
categories: onions
enable_http: true
shortcut: ah
- name: arch linux wiki
engine: archlinux
shortcut: al
- name: archive is
engine: xpath
search_url: https://archive.is/search/?q={query}
url_xpath: (//div[@class="TEXT-BLOCK"]/a)/@href
title_xpath: (//div[@class="TEXT-BLOCK"]/a)
content_xpath: //div[@class="TEXT-BLOCK"]/ul/li
categories: general
timeout: 7.0
disabled: true
shortcut: ai
soft_max_redirects: 1
about:
website: https://archive.is/
wikidata_id: Q13515725
official_api_documentation: https://mementoweb.org/depot/native/archiveis/
use_official_api: false
require_api_key: false
results: HTML
- name: artic
engine: artic
shortcut: arc
timeout: 4.0
- name: arxiv
engine: arxiv
shortcut: arx
timeout: 4.0
# tmp suspended: dh key too small
# - name: base
# engine: base
# shortcut: bs
- name: bandcamp
engine: bandcamp
shortcut: bc
categories: music
- name: wikipedia
engine: wikipedia
shortcut: wp
base_url: 'https://{language}.wikipedia.org/'
- name: bing
engine: bing
shortcut: bi
disabled: true
- name: bing images
engine: bing_images
shortcut: bii
- name: bing news
engine: bing_news
shortcut: bin
- name: bing videos
engine: bing_videos
shortcut: biv
- name: bitbucket
engine: xpath
paging: true
search_url: https://bitbucket.org/repo/all/{pageno}?name={query}
url_xpath: //article[@class="repo-summary"]//a[@class="repo-link"]/@href
title_xpath: //article[@class="repo-summary"]//a[@class="repo-link"]
content_xpath: //article[@class="repo-summary"]/p
categories: [it, repos]
timeout: 4.0
disabled: true
shortcut: bb
about:
website: https://bitbucket.org/
wikidata_id: Q2493781
official_api_documentation: https://developer.atlassian.com/bitbucket
use_official_api: false
require_api_key: false
results: HTML
- name: btdigg
engine: btdigg
shortcut: bt
- name: ccc-tv
engine: xpath
paging: false
search_url: https://media.ccc.de/search/?q={query}
url_xpath: //div[@class="caption"]/h3/a/@href
title_xpath: //div[@class="caption"]/h3/a/text()
content_xpath: //div[@class="caption"]/h4/@title
categories: videos
disabled: true
shortcut: c3tv
about:
website: https://media.ccc.de/
wikidata_id: Q80729951
official_api_documentation: https://github.com/voc/voctoweb
use_official_api: false
require_api_key: false
results: HTML
# We don't set language: de here because media.ccc.de is not just
# for a German audience. It contains many English videos and many
# German videos have English subtitles.
- name: openverse
engine: openverse
categories: images
shortcut: opv
# - name: core.ac.uk
# engine: core
# categories: science
# shortcut: cor
# # get your API key from: https://core.ac.uk/api-keys/register/
# api_key: 'unset'
- name: crossref
engine: crossref
shortcut: cr
timeout: 30
disabled: true
- name: yep
engine: json_engine
shortcut: yep
categories: general
disabled: true
paging: false
content_html_to_text: true
title_html_to_text: true
search_url: https://api.yep.com/fs/1/?type=web&q={query}&no_correct=false&limit=100
results_query: 1/results
title_query: title
url_query: url
content_query: snippet
about:
website: https://yep.com
use_official_api: false
require_api_key: false
results: JSON
- name: curlie
engine: xpath
shortcut: cl
categories: general
disabled: true
paging: true
lang_all: ''
search_url: https://curlie.org/search?q={query}&lang={lang}&start={pageno}&stime=92452189
page_size: 20
results_xpath: //div[@id="site-list-content"]/div[@class="site-item"]
url_xpath: ./div[@class="title-and-desc"]/a/@href
title_xpath: ./div[@class="title-and-desc"]/a/div
content_xpath: ./div[@class="title-and-desc"]/div[@class="site-descr"]
about:
website: https://curlie.org/
wikidata_id: Q60715723
use_official_api: false
require_api_key: false
results: HTML
- name: currency
engine: currency_convert
categories: general
shortcut: cc
- name: deezer
engine: deezer
shortcut: dz
disabled: true
- name: deviantart
engine: deviantart
shortcut: da
timeout: 3.0
- name: ddg definitions
engine: duckduckgo_definitions
shortcut: ddd
weight: 2
disabled: true
tests: *tests_infobox
# cloudflare protected
# - name: digbt
# engine: digbt
# shortcut: dbt
# timeout: 6.0
# disabled: true
- name: docker hub
engine: docker_hub
shortcut: dh
categories: [it, packages]
- name: erowid
engine: xpath
paging: true
first_page_num: 0
page_size: 30
search_url: https://www.erowid.org/search.php?q={query}&s={pageno}
url_xpath: //dl[@class="results-list"]/dt[@class="result-title"]/a/@href
title_xpath: //dl[@class="results-list"]/dt[@class="result-title"]/a/text()
content_xpath: //dl[@class="results-list"]/dd[@class="result-details"]
categories: []
shortcut: ew
disabled: true
about:
website: https://www.erowid.org/
wikidata_id: Q1430691
official_api_documentation:
use_official_api: false
require_api_key: false
results: HTML
# - name: elasticsearch
# shortcut: es
# engine: elasticsearch
# base_url: http://localhost:9200
# username: elastic
# password: changeme
# index: my-index
# # available options: match, simple_query_string, term, terms, custom
# query_type: match
# # if query_type is set to custom, provide your query here
# #custom_query_json: {"query":{"match_all": {}}}
# #show_metadata: false
# disabled: true
- name: wikidata
engine: wikidata
shortcut: wd
timeout: 3.0
weight: 2
tests: *tests_infobox
- name: duckduckgo
engine: duckduckgo
shortcut: ddg
- name: duckduckgo images
engine: duckduckgo_images
shortcut: ddi
timeout: 3.0
disabled: true
- name: duckduckgo weather
engine: duckduckgo_weather
shortcut: ddw
disabled: true
- name: apple maps
engine: apple_maps
shortcut: apm
disabled: true
timeout: 5.0
- name: emojipedia
engine: emojipedia
timeout: 4.0
shortcut: em
disabled: true
- name: tineye
engine: tineye
shortcut: tin
timeout: 9.0
- name: etymonline
engine: xpath
paging: true
search_url: https://etymonline.com/search?page={pageno}&q={query}
url_xpath: //a[contains(@class, "word__name--")]/@href
title_xpath: //a[contains(@class, "word__name--")]
content_xpath: //section[contains(@class, "word__defination")]
first_page_num: 1
shortcut: et
categories: [dictionaries]
disabled: false
about:
website: https://www.etymonline.com/
wikidata_id: Q1188617
official_api_documentation:
use_official_api: false
require_api_key: false
results: HTML
# - name: ebay
# engine: ebay
# shortcut: eb
# base_url: 'https://www.ebay.com'
# disabled: true
# timeout: 5
- name: 1x
engine: www1x
shortcut: 1x
timeout: 3.0
disabled: true
- name: fdroid
engine: fdroid
shortcut: fd
disabled: true
- name: flickr
categories: images
shortcut: fl
# You can use the engine using the official stable API, but you need an API
# key, see: https://www.flickr.com/services/apps/create/
# engine: flickr
# api_key: 'apikey' # required!
# Or you can use the html non-stable engine, activated by default
engine: flickr_noapi
- name: free software directory
engine: mediawiki
shortcut: fsd
categories: [it, software wikis]
base_url: https://directory.fsf.org/
number_of_results: 5
# what part of a page matches the query string: title, text, nearmatch
# * title - query matches title
# * text - query matches the text of page
# * nearmatch - nearmatch in title
search_type: title
timeout: 5.0
disabled: true
about:
website: https://directory.fsf.org/
wikidata_id: Q2470288
# - name: freesound
# engine: freesound
# shortcut: fnd
# disabled: true
# timeout: 15.0
# API key required, see: https://freesound.org/docs/api/overview.html
# api_key: MyAPIkey
- name: frinkiac
engine: frinkiac
shortcut: frk
disabled: true
- name: genius
engine: genius
shortcut: gen
- name: gigablast
engine: gigablast
shortcut: gb
timeout: 4.0
disabled: true
additional_tests:
rosebud: *test_rosebud
- name: gentoo
engine: gentoo
shortcut: ge
- name: gitlab
engine: json_engine
paging: true
search_url: https://gitlab.com/api/v4/projects?search={query}&page={pageno}
url_query: web_url
title_query: name_with_namespace
content_query: description
page_size: 20
categories: [it, repos]
shortcut: gl
timeout: 10.0
disabled: true
about:
website: https://about.gitlab.com/
wikidata_id: Q16639197
official_api_documentation: https://docs.gitlab.com/ee/api/
use_official_api: false
require_api_key: false
results: JSON
- name: github
engine: github
shortcut: gh
# This a Gitea service. If you would like to use a different instance,
# change codeberg.org to URL of the desired Gitea host. Or you can create a
# new engine by copying this and changing the name, shortcut and search_url.
- name: codeberg
engine: json_engine
search_url: https://codeberg.org/api/v1/repos/search?q={query}&limit=10
url_query: html_url
title_query: name
content_query: description
categories: [it, repos]
shortcut: cb
disabled: true
about:
website: https://codeberg.org/
wikidata_id:
official_api_documentation: https://try.gitea.io/api/swagger
use_official_api: false
require_api_key: false
results: JSON
- name: google
engine: google
shortcut: go
# see https://docs.searxng.org/src/searx.engines.google.html#module-searx.engines.google
use_mobile_ui: false
# additional_tests:
# android: *test_android
# - name: google italian
# engine: google
# shortcut: goit
# use_mobile_ui: false
# language: it
# - name: google mobile ui
# engine: google
# shortcut: gomui
# use_mobile_ui: true
- name: google images
engine: google_images
shortcut: goi
# additional_tests:
# android: *test_android
# dali:
# matrix:
# query: ['Dali Christ']
# lang: ['en', 'de', 'fr', 'zh-CN']
# result_container:
# - ['one_title_contains', 'Salvador']
- name: google news
engine: google_news
shortcut: gon
# additional_tests:
# android: *test_android
- name: google videos
engine: google_videos
shortcut: gov
# additional_tests:
# android: *test_android
- name: google scholar
engine: google_scholar
shortcut: gos
- name: google play apps
engine: google_play_apps
shortcut: gpa
disabled: true
- name: google play movies
engine: xpath
send_accept_language_header: true
search_url: https://play.google.com/store/search?q={query}&c=movies
results_xpath: '//div[@class="ImZGtf mpg5gc"]'
title_xpath: './/div[@class="RZEgze"]//div[@class="kCSSQe"]//a'
url_xpath: './/div[@class="RZEgze"]//div[@class="kCSSQe"]//a/@href'
content_xpath: './/div[@class="kCSSQe"]'
thumbnail_xpath: './/div[@class="uzcko"]/div/span[1]//img/@data-src'
categories: videos
shortcut: gpm
disabled: true
about:
website: https://play.google.com/
wikidata_id: Q79576
official_api_documentation:
use_official_api: false
require_api_key: false
results: HTML
- name: gpodder
engine: json_engine
shortcut: gpod
timeout: 4.0
paging: false
search_url: https://gpodder.net/search.json?q={query}
url_query: url
title_query: title
content_query: description
page_size: 19
categories: music
disabled: true
about:
website: https://gpodder.net
wikidata_id: Q3093354
official_api_documentation: https://gpoddernet.readthedocs.io/en/latest/api/
use_official_api: false
requires_api_key: false
results: JSON
- name: habrahabr
engine: xpath
paging: true
search_url: https://habrahabr.ru/search/page{pageno}/?q={query}
url_xpath: //article[contains(@class, "post")]//a[@class="post__title_link"]/@href
title_xpath: //article[contains(@class, "post")]//a[@class="post__title_link"]
content_xpath: //article[contains(@class, "post")]//div[contains(@class, "post__text")]
categories: it
timeout: 4.0
disabled: true
shortcut: habr
about:
website: https://habr.com/
wikidata_id: Q4494434
official_api_documentation: https://habr.com/en/docs/help/api/
use_official_api: false
require_api_key: false
results: HTML
- name: hoogle
engine: xpath
paging: true
search_url: https://hoogle.haskell.org/?hoogle={query}&start={pageno}
results_xpath: '//div[@class="result"]'
title_xpath: './/div[@class="ans"]//a'
url_xpath: './/div[@class="ans"]//a/@href'
content_xpath: './/div[@class="from"]'
page_size: 20
categories: [it, packages]
shortcut: ho
about:
website: https://hoogle.haskell.org/
wikidata_id: Q34010
official_api_documentation: https://hackage.haskell.org/api
use_official_api: false
require_api_key: false
results: JSON
- name: imdb
engine: imdb
shortcut: imdb
timeout: 6.0
disabled: true
- name: ina
engine: ina
shortcut: in
timeout: 6.0
disabled: true
- name: invidious
engine: invidious
# Instanes will be selected randomly, see https://api.invidious.io/ for
# instances that are stable (good uptime) and close to you.
base_url:
- https://invidious.snopyta.org
- https://vid.puffyan.us
# - https://invidious.kavin.rocks # Error 1020 // Access denied by Cloudflare
- https://invidio.xamh.de
- https://inv.riverside.rocks
shortcut: iv
timeout: 3.0
disabled: true
- name: jisho
engine: jisho
shortcut: js
timeout: 3.0
disabled: true
- name: kickass
engine: kickass
shortcut: kc
timeout: 4.0
disabled: true
- name: library genesis
engine: xpath
search_url: https://libgen.fun/search.php?req={query}
url_xpath: //a[contains(@href,"get.php?md5")]/@href
title_xpath: //a[contains(@href,"book/")]/text()[1]
content_xpath: //td/a[1][contains(@href,"=author")]/text()
categories: files
timeout: 7.0
disabled: true
shortcut: lg
about:
website: https://libgen.fun/
wikidata_id: Q22017206
official_api_documentation:
use_official_api: false
require_api_key: false
results: HTML
# Disabling zlibrary due to z-lib.org domain seizure
# https://github.com/searxng/searxng/pull/1937
#
# - name: z-library
# engine: zlibrary
# shortcut: zlib
# categories: files
# timeout: 3.0
# # choose base_url, otherwise engine will do it at initialization time
# # base_url: https://b-ok.cc
# # base_url: https://de1lib.org
# # base_url: https://booksc.eu # does not have cover preview
# # base_url: https://booksc.org # does not have cover preview
- name: library of congress
engine: loc
shortcut: loc
categories: images
- name: lingva
engine: lingva
shortcut: lv
# set lingva instance in url, by default it will use the official instance
# url: https://lingva.ml
- name: lobste.rs
engine: xpath
search_url: https://lobste.rs/search?utf8=%E2%9C%93&q={query}&what=stories&order=relevance
results_xpath: //li[contains(@class, "story")]
url_xpath: .//a[@class="u-url"]/@href
title_xpath: .//a[@class="u-url"]
content_xpath: .//a[@class="domain"]
categories: it
shortcut: lo
timeout: 5.0
disabled: true
about:
website: https://lobste.rs/
wikidata_id: Q60762874
official_api_documentation:
use_official_api: false
require_api_key: false
results: HTML
- name: azlyrics
shortcut: lyrics
engine: xpath
timeout: 4.0
disabled: true
categories: [music, lyrics]
paging: true
search_url: https://search.azlyrics.com/search.php?q={query}&w=lyrics&p={pageno}
url_xpath: //td[@class="text-left visitedlyr"]/a/@href
title_xpath: //span/b/text()
content_xpath: //td[@class="text-left visitedlyr"]/a/small
about:
website: https://azlyrics.com
wikidata_id: Q66372542
official_api_documentation:
use_official_api: false
require_api_key: false
results: HTML
- name: metacpan
engine: metacpan
shortcut: cpan
disabled: true
number_of_results: 20
# - name: meilisearch
# engine: meilisearch
# shortcut: mes
# enable_http: true
# base_url: http://localhost:7700
# index: my-index
- name: mixcloud
engine: mixcloud
shortcut: mc
# MongoDB engine
# Required dependency: pymongo
# - name: mymongo
# engine: mongodb
# shortcut: md
# exact_match_only: false
# host: '127.0.0.1'
# port: 27017
# enable_http: true
# results_per_page: 20
# database: 'business'
# collection: 'reviews' # name of the db collection
# key: 'name' # key in the collection to search for
- name: neeva
engine: xpath
shortcut: nv
time_range_support: true
time_range_url: '&alf%5Bfreshness%5D={time_range_val}'
time_range_map:
day: 'Day'
week: 'Week'
month: 'Month'
year: 'Year'
search_url: https://neeva.com/search?q={query}&c=All&src=Pagination&page={pageno}{time_range}
results_xpath: //div[@class="web-index__component-2rKiM"] | //li[@class="web-rich-deep-links__deepLink-SIbD4"]
url_xpath: .//a[@class="lib-doc-title__link-1b9rC"]/@href | ./h2/a/@href
title_xpath: .//a[@class="lib-doc-title__link-1b9rC"] | ./h2/a
content_xpath: >
.//div[@class="lib-doc-snippet__component-3ewW6"]/text() |
.//div[@class="lib-doc-snippet__component-3ewW6"]/*[not(self::a)] |
./p
content_html_to_text: true
suggestion_xpath: //span[@class="result-related-searches__link-2ho_u"]
paging: true
disabled: true
categories: [general, web]
timeout: 5.0
soft_max_redirects: 2
about:
website: https://neeva.com
official_api_documentation:
use_official_api: false
require_api_key: false
results: HTML
- name: npm
engine: json_engine
paging: true
first_page_num: 0
search_url: https://api.npms.io/v2/search?q={query}&size=25&from={pageno}
results_query: results
url_query: package/links/npm
title_query: package/name
content_query: package/description
page_size: 25
categories: [it, packages]
disabled: true
timeout: 5.0
shortcut: npm
about:
website: https://npms.io/
wikidata_id: Q7067518
official_api_documentation: https://api-docs.npms.io/
use_official_api: false
require_api_key: false
results: JSON
- name: nyaa
engine: nyaa
shortcut: nt
disabled: true
- name: mankier
engine: json_engine
search_url: https://www.mankier.com/api/v2/mans/?q={query}
results_query: results
url_query: url
title_query: name
content_query: description
categories: it
shortcut: man
about:
website: https://www.mankier.com/
official_api_documentation: https://www.mankier.com/api
use_official_api: true
require_api_key: false
results: JSON
- name: openairedatasets
engine: json_engine
paging: true
search_url: https://api.openaire.eu/search/datasets?format=json&page={pageno}&size=10&title={query}
results_query: response/results/result
url_query: metadata/oaf:entity/oaf:result/children/instance/webresource/url/$
title_query: metadata/oaf:entity/oaf:result/title/$
content_query: metadata/oaf:entity/oaf:result/description/$
content_html_to_text: true
categories: "science"
shortcut: oad
timeout: 5.0
about:
website: https://www.openaire.eu/
wikidata_id: Q25106053
official_api_documentation: https://api.openaire.eu/
use_official_api: false
require_api_key: false
results: JSON
- name: openairepublications
engine: json_engine
paging: true
search_url: https://api.openaire.eu/search/publications?format=json&page={pageno}&size=10&title={query}
results_query: response/results/result
url_query: metadata/oaf:entity/oaf:result/children/instance/webresource/url/$
title_query: metadata/oaf:entity/oaf:result/title/$
content_query: metadata/oaf:entity/oaf:result/description/$
content_html_to_text: true
categories: science
shortcut: oap
timeout: 5.0
about:
website: https://www.openaire.eu/
wikidata_id: Q25106053
official_api_documentation: https://api.openaire.eu/
use_official_api: false
require_api_key: false
results: JSON
# - name: opensemanticsearch
# engine: opensemantic
# shortcut: oss
# base_url: 'http://localhost:8983/solr/opensemanticsearch/'
- name: openstreetmap
engine: openstreetmap
shortcut: osm
- name: openrepos
engine: xpath
paging: true
search_url: https://openrepos.net/search/node/{query}?page={pageno}
url_xpath: //li[@class="search-result"]//h3[@class="title"]/a/@href
title_xpath: //li[@class="search-result"]//h3[@class="title"]/a
content_xpath: //li[@class="search-result"]//div[@class="search-snippet-info"]//p[@class="search-snippet"]
categories: files
timeout: 4.0
disabled: true
shortcut: or
about:
website: https://openrepos.net/
wikidata_id:
official_api_documentation:
use_official_api: false
require_api_key: false
results: HTML
- name: packagist
engine: json_engine
paging: true
search_url: https://packagist.org/search.json?q={query}&page={pageno}
results_query: results
url_query: url
title_query: name
content_query: description
categories: [it, packages]
disabled: true
timeout: 5.0
shortcut: pack
about:
website: https://packagist.org
wikidata_id: Q108311377
official_api_documentation: https://packagist.org/apidoc
use_official_api: true
require_api_key: false
results: JSON
- name: pdbe
engine: pdbe
shortcut: pdb
# Hide obsolete PDB entries. Default is not to hide obsolete structures
# hide_obsolete: false
- name: photon
engine: photon
shortcut: ph
- name: piratebay
engine: piratebay
shortcut: tpb
# You may need to change this URL to a proxy if piratebay is blocked in your
# country
url: https://thepiratebay.org/
timeout: 3.0
# Required dependency: psychopg2
# - name: postgresql
# engine: postgresql
# database: postgres
# username: postgres
# password: postgres
# limit: 10
# query_str: 'SELECT * from my_table WHERE my_column = %(query)s'
# shortcut : psql
- name: pub.dev
engine: xpath
shortcut: pd
search_url: https://pub.dev/packages?q={query}&page={pageno}
paging: true
results_xpath: /html/body/main/div/div[@class="search-results"]/div[@class="packages"]/div
url_xpath: ./div/h3/a/@href
title_xpath: ./div/h3/a
content_xpath: ./p[@class="packages-description"]
categories: [packages, it]
timeout: 3.0
disabled: true
first_page_num: 1
about:
website: https://pub.dev/
official_api_documentation: https://pub.dev/help/api
use_official_api: false
require_api_key: false
results: HTML
- name: pubmed
engine: pubmed
shortcut: pub
timeout: 3.0
- name: pypi
shortcut: pypi
engine: xpath
paging: true
search_url: https://pypi.org/search?q={query}&page={pageno}
results_xpath: /html/body/main/div/div/div/form/div/ul/li/a[@class="package-snippet"]
url_xpath: ./@href
title_xpath: ./h3/span[@class="package-snippet__name"]
content_xpath: ./p
suggestion_xpath: /html/body/main/div/div/div/form/div/div[@class="callout-block"]/p/span/a[@class="link"]
first_page_num: 1
categories: [it, packages]
about:
website: https://pypi.org
wikidata_id: Q2984686
official_api_documentation: https://warehouse.readthedocs.io/api-reference/index.html
use_official_api: false
require_api_key: false
results: HTML
- name: qwant
qwant_categ: web
engine: qwant
shortcut: qw
categories: [general, web]
disabled: false
additional_tests:
rosebud: *test_rosebud
- name: qwant news
qwant_categ: news
engine: qwant
shortcut: qwn
categories: news
disabled: false
network: qwant
- name: qwant images
qwant_categ: images
engine: qwant
shortcut: qwi
categories: [images, web]
disabled: false
network: qwant
- name: qwant videos
qwant_categ: videos
engine: qwant
shortcut: qwv
categories: [videos, web]
disabled: false
network: qwant
# - name: library
# engine: recoll
# shortcut: lib
# base_url: 'https://recoll.example.org/'
# search_dir: ''
# mount_prefix: /export
# dl_prefix: 'https://download.example.org'
# timeout: 30.0
# categories: files
# disabled: true
# - name: recoll library reference
# engine: recoll
# base_url: 'https://recoll.example.org/'
# search_dir: reference
# mount_prefix: /export
# dl_prefix: 'https://download.example.org'
# shortcut: libr
# timeout: 30.0
# categories: files
# disabled: true
- name: reddit
engine: reddit
shortcut: re
page_size: 25
# Required dependency: redis
# - name: myredis
# shortcut : rds
# engine: redis_server
# exact_match_only: false
# host: '127.0.0.1'
# port: 6379
# enable_http: true
# password: ''
# db: 0
# tmp suspended: bad certificate
# - name: scanr structures
# shortcut: scs
# engine: scanr_structures
# disabled: true
- name: sepiasearch
engine: sepiasearch
shortcut: sep
- name: soundcloud
engine: soundcloud
shortcut: sc
- name: stackoverflow
engine: stackexchange
shortcut: st
api_site: 'stackoverflow'
categories: [it, q&a]
- name: askubuntu
engine: stackexchange
shortcut: ubuntu
api_site: 'askubuntu'
categories: [it, q&a]
- name: superuser
engine: stackexchange
shortcut: su
api_site: 'superuser'
categories: [it, q&a]
- name: searchcode code
engine: searchcode_code
shortcut: scc
disabled: true
- name: framalibre
engine: framalibre
shortcut: frl
disabled: true
# - name: searx
# engine: searx_engine
# shortcut: se
# instance_urls :
# - http://127.0.0.1:8888/
# - ...
# disabled: true
- name: semantic scholar
engine: semantic_scholar
disabled: true
shortcut: se
# Spotify needs API credentials
# - name: spotify
# engine: spotify
# shortcut: stf
# api_client_id: *******
# api_client_secret: *******
# - name: solr
# engine: solr
# shortcut: slr
# base_url: http://localhost:8983
# collection: collection_name
# sort: '' # sorting: asc or desc
# field_list: '' # comma separated list of field names to display on the UI
# default_fields: '' # default field to query
# query_fields: '' # query fields
# enable_http: true
# - name: springer nature
# engine: springer
# # get your API key from: https://dev.springernature.com/signup
# # working API key, for test & debug: "a69685087d07eca9f13db62f65b8f601"
# api_key: 'unset'
# shortcut: springer
# timeout: 15.0
- name: startpage
engine: startpage
shortcut: sp
timeout: 6.0
disabled: true
additional_tests:
rosebud: *test_rosebud
- name: tokyotoshokan
engine: tokyotoshokan
shortcut: tt
timeout: 6.0
disabled: true
- name: solidtorrents
engine: solidtorrents
shortcut: solid
timeout: 4.0
disabled: false
base_url:
- https://solidtorrents.net
- https://solidtorrents.eu
- https://solidtorrents.to
- https://bitsearch.to
# For this demo of the sqlite engine download:
# https://liste.mediathekview.de/filmliste-v2.db.bz2
# and unpack into searx/data/filmliste-v2.db
# Query to test: "!demo concert"
#
# - name: demo
# engine: sqlite
# shortcut: demo
# categories: general
# result_template: default.html
# database: searx/data/filmliste-v2.db
# query_str: >-
# SELECT title || ' (' || time(duration, 'unixepoch') || ')' AS title,
# COALESCE( NULLIF(url_video_hd,''), NULLIF(url_video_sd,''), url_video) AS url,
# description AS content
# FROM film
# WHERE title LIKE :wildcard OR description LIKE :wildcard
# ORDER BY duration DESC
# disabled: false
# Requires Tor
- name: torch
engine: xpath
paging: true
search_url:
http://xmh57jrknzkhv6y3ls3ubitzfqnkrwxhopf5aygthi7d6rplyvk3noyd.onion/cgi-bin/omega/omega?P={query}&DEFAULTOP=and
results_xpath: //table//tr
url_xpath: ./td[2]/a
title_xpath: ./td[2]/b
content_xpath: ./td[2]/small
categories: onions
enable_http: true
shortcut: tch
# torznab engine lets you query any torznab compatible indexer. Using this
# engine in combination with Jackett (https://github.com/Jackett/Jackett)
# opens the possibility to query a lot of public and private indexers directly
# from SearXNG.
# - name: torznab
# engine: torznab
# shortcut: trz
# base_url: http://localhost:9117/api/v2.0/indexers/all/results/torznab
# enable_http: true # if using localhost
# api_key: xxxxxxxxxxxxxxx
# # https://github.com/Jackett/Jackett/wiki/Jackett-Categories
# torznab_categories: # optional
# - 2000
# - 5000
- name: twitter
shortcut: tw
engine: twitter
disabled: true
# maybe in a fun category
# - name: uncyclopedia
# engine: mediawiki
# shortcut: unc
# base_url: https://uncyclopedia.wikia.com/
# number_of_results: 5
# tmp suspended - too slow, too many errors
# - name: urbandictionary
# engine : xpath
# search_url : https://www.urbandictionary.com/define.php?term={query}
# url_xpath : //*[@class="word"]/@href
# title_xpath : //*[@class="def-header"]
# content_xpath: //*[@class="meaning"]
# shortcut: ud
- name: unsplash
engine: unsplash
shortcut: us
- name: yahoo
engine: yahoo
shortcut: yh
disabled: true
- name: yahoo news
engine: yahoo_news
shortcut: yhn
- name: youtube
shortcut: yt
# You can use the engine using the official stable API, but you need an API
# key See: https://console.developers.google.com/project
#
# engine: youtube_api
# api_key: 'apikey' # required!
#
# Or you can use the html non-stable engine, activated by default
engine: youtube_noapi
- name: dailymotion
engine: dailymotion
shortcut: dm
- name: vimeo
engine: vimeo
shortcut: vm
- name: wiby
engine: json_engine
search_url: https://wiby.me/json/?q={query}
url_query: URL
title_query: Title
content_query: Snippet
categories: [general, web]
shortcut: wib
disabled: true
about:
website: https://wiby.me/
- name: marginalia
engine: json_engine
shortcut: mar
categories: general
paging: false
# index: {"0": "popular", "1": "blogs", "2": "big_sites",
# "3": "default", "4": experimental"}
search_url: https://api.marginalia.nu/public/search/{query}?index=4&count=20
results_query: results
url_query: url
title_query: title
content_query: description
timeout: 1.5
disabled: true
about:
website: https://www.marginalia.nu/
official_api_documentation: https://api.marginalia.nu/
use_official_api: true
require_api_key: true
results: JSON
- name: alexandria
engine: json_engine
shortcut: alx
categories: general
paging: true
search_url: https://api.alexandria.org/?a=1&q={query}&p={pageno}
results_query: results
title_query: title
url_query: url
content_query: snippet
timeout: 1.5
disabled: true
about:
website: https://alexandria.org/
official_api_documentation: https://github.com/alexandria-org/alexandria-api/raw/master/README.md
use_official_api: true
require_api_key: false
results: JSON
- name: wikibooks
engine: mediawiki
shortcut: wb
categories: general
base_url: "https://{language}.wikibooks.org/"
number_of_results: 5
search_type: text
disabled: true
about:
website: https://www.wikibooks.org/
wikidata_id: Q367
- name: wikinews
engine: mediawiki
shortcut: wn
categories: news
base_url: "https://{language}.wikinews.org/"
number_of_results: 5
search_type: text
disabled: true
about:
website: https://www.wikinews.org/
wikidata_id: Q964
- name: wikiquote
engine: mediawiki
shortcut: wq
categories: general
base_url: "https://{language}.wikiquote.org/"
number_of_results: 5
search_type: text
disabled: true
additional_tests:
rosebud: *test_rosebud
about:
website: https://www.wikiquote.org/
wikidata_id: Q369
- name: wikisource
engine: mediawiki
shortcut: ws
categories: general
base_url: "https://{language}.wikisource.org/"
number_of_results: 5
search_type: text
disabled: true
about:
website: https://www.wikisource.org/
wikidata_id: Q263
- name: wiktionary
engine: mediawiki
shortcut: wt
categories: [dictionaries]
base_url: "https://{language}.wiktionary.org/"
number_of_results: 5
search_type: text
disabled: false
about:
website: https://www.wiktionary.org/
wikidata_id: Q151
- name: wikiversity
engine: mediawiki
shortcut: wv
categories: general
base_url: "https://{language}.wikiversity.org/"
number_of_results: 5
search_type: text
disabled: true
about:
website: https://www.wikiversity.org/
wikidata_id: Q370
- name: wikivoyage
engine: mediawiki
shortcut: wy
categories: general
base_url: "https://{language}.wikivoyage.org/"
number_of_results: 5
search_type: text
disabled: true
about:
website: https://www.wikivoyage.org/
wikidata_id: Q373
- name: wolframalpha
shortcut: wa
# You can use the engine using the official stable API, but you need an API
# key. See: https://products.wolframalpha.com/api/
#
# engine: wolframalpha_api
# api_key: ''
#
# Or you can use the html non-stable engine, activated by default
engine: wolframalpha_noapi
timeout: 6.0
categories: []
- name: dictzone
engine: dictzone
shortcut: dc
- name: mymemory translated
engine: translated
shortcut: tl
timeout: 5.0
disabled: false
# You can use without an API key, but you are limited to 1000 words/day
# See: https://mymemory.translated.net/doc/usagelimits.php
# api_key: ''
# Required dependency: mysql-connector-python
# - name: mysql
# engine: mysql_server
# database: mydatabase
# username: user
# password: pass
# limit: 10
# query_str: 'SELECT * from mytable WHERE fieldname=%(query)s'
# shortcut: mysql
- name: 1337x
engine: 1337x
shortcut: 1337x
disabled: true
- name: duden
engine: duden
shortcut: du
disabled: true
- name: seznam
shortcut: szn
engine: seznam
disabled: true
# - name: deepl
# engine: deepl
# shortcut: dpl
# # You can use the engine using the official stable API, but you need an API key
# # See: https://www.deepl.com/pro-api?cta=header-pro-api
# api_key: '' # required!
# timeout: 5.0
# disabled: true
- name: mojeek
shortcut: mjk
engine: xpath
paging: true
categories: [general, web]
search_url: https://www.mojeek.com/search?q={query}&s={pageno}
results_xpath: //a[@class="ob"]
url_xpath: ./@href
title_xpath: ./h2
content_xpath: ../p[@class="s"]
suggestion_xpath: /html/body//div[@class="top-info"]/p[@class="top-info spell"]/a
first_page_num: 0
page_size: 10
disabled: true
about:
website: https://www.mojeek.com/
wikidata_id: Q60747299
official_api_documentation: https://www.mojeek.com/services/api.html/
use_official_api: false
require_api_key: false
results: HTML
- name: naver
shortcut: nvr
categories: [general, web]
engine: xpath
paging: true
search_url: https://search.naver.com/search.naver?where=webkr&sm=osp_hty&ie=UTF-8&query={query}&start={pageno}
url_xpath: //a[@class="link_tit"]/@href
title_xpath: //a[@class="link_tit"]
content_xpath: //a[@class="total_dsc"]/div
first_page_num: 1
page_size: 10
disabled: true
about:
website: https://www.naver.com/
wikidata_id: Q485639
official_api_documentation: https://developers.naver.com/docs/nmt/examples/
use_official_api: false
require_api_key: false
results: HTML
language: ko
- name: rubygems
shortcut: rbg
engine: xpath
paging: true
search_url: https://rubygems.org/search?page={pageno}&query={query}
results_xpath: /html/body/main/div/a[@class="gems__gem"]
url_xpath: ./@href
title_xpath: ./span/h2
content_xpath: ./span/p
suggestion_xpath: /html/body/main/div/div[@class="search__suggestions"]/p/a
first_page_num: 1
categories: [it, packages]
disabled: true
about:
website: https://rubygems.org/
wikidata_id: Q1853420
official_api_documentation: https://guides.rubygems.org/rubygems-org-api/
use_official_api: false
require_api_key: false
results: HTML
- name: peertube
engine: peertube
shortcut: ptb
paging: true
# https://instances.joinpeertube.org/instances
base_url: https://peertube.biz/
# base_url: https://tube.tardis.world/
categories: videos
disabled: true
timeout: 6.0
- name: mediathekviewweb
engine: mediathekviewweb
shortcut: mvw
disabled: true
# - name: yacy
# engine: yacy
# shortcut: ya
# base_url: http://localhost:8090
# required if you aren't using HTTPS for your local yacy instance'
# enable_http: true
# number_of_results: 5
# timeout: 3.0
- name: rumble
engine: rumble
shortcut: ru
base_url: https://rumble.com/
paging: true
categories: videos
disabled: true
- name: wordnik
engine: wordnik
shortcut: def
base_url: https://www.wordnik.com/
categories: [dictionaries]
timeout: 5.0
disabled: false
- name: woxikon.de synonyme
engine: xpath
shortcut: woxi
categories: [dictionaries]
timeout: 5.0
disabled: true
search_url: https://synonyme.woxikon.de/synonyme/{query}.php
url_xpath: //div[@class="upper-synonyms"]/a/@href
content_xpath: //div[@class="synonyms-list-group"]
title_xpath: //div[@class="upper-synonyms"]/a
no_result_for_http_status: [404]
about:
website: https://www.woxikon.de/
wikidata_id: # No Wikidata ID
use_official_api: false
require_api_key: false
results: HTML
language: de
- name: sjp.pwn
engine: sjp
shortcut: sjp
base_url: https://sjp.pwn.pl/
timeout: 5.0
disabled: true
# wikimini: online encyclopedia for children
# The fulltext and title parameter is necessary for Wikimini because
# sometimes it will not show the results and redirect instead
- name: wikimini
engine: xpath
shortcut: wkmn
search_url: https://fr.wikimini.org/w/index.php?search={query}&title=Sp%C3%A9cial%3ASearch&fulltext=Search
url_xpath: //li/div[@class="mw-search-result-heading"]/a/@href
title_xpath: //li//div[@class="mw-search-result-heading"]/a
content_xpath: //li/div[@class="searchresult"]
categories: general
disabled: true
about:
website: https://wikimini.org/
wikidata_id: Q3568032
use_official_api: false
require_api_key: false
results: HTML
language: fr
- name: wttr.in
engine: wttr
shortcut: wttr
timeout: 9.0
- name: brave
shortcut: brave
engine: xpath
paging: true
time_range_support: true
first_page_num: 0
time_range_url: "&tf={time_range_val}"
search_url: https://search.brave.com/search?q={query}&offset={pageno}&spellcheck=1{time_range}
url_xpath: //a[@class="result-header"]/@href
title_xpath: //span[@class="snippet-title"]
content_xpath: //p[1][@class="snippet-description"]
suggestion_xpath: //div[@class="text-gray h6"]/a
time_range_map:
day: 'pd'
week: 'pw'
month: 'pm'
year: 'py'
categories: [general, web]
disabled: true
headers:
Accept-Encoding: gzip, deflate
about:
website: https://brave.com/search/
wikidata_id: Q107355971
use_official_api: false
require_api_key: false
results: HTML
- name: petalsearch
shortcut: pts
engine: xpath
paging: true
search_url: https://petalsearch.com/search?query={query}&pn={pageno}
results_xpath: //div[@class="webpage-content"]/div[@class="title-cont"]/a
url_xpath: ./@href
title_xpath: .
content_xpath: ../../div[@class="webpage-text"]
suggestion_xpath: //div[@class="related-search-items"]/a
first_page_num: 1
disabled: true
about:
website: https://petalsearch.com/
wikidata_id: Q104399280
use_official_api: false
require_api_key: false
results: HTML
- name: petalsearch images
engine: petal_images
shortcut: ptsi
disabled: true
timeout: 3.0
- name: petalsearch news
shortcut: ptsn
categories: news
engine: xpath
paging: true
search_url: https://petalsearch.com/search?channel=news&query={query}&pn={pageno}
results_xpath: //div[@class="news-container"]/div/div/div/a
url_xpath: ./@href
title_xpath: ./div
content_xpath: ../div[@class="news-text"]
thumbnail_xpath: ../../../../img/@src
first_page_num: 1
disabled: true
about:
website: https://petalsearch.com/
wikidata_id: Q104399280
use_official_api: false
require_api_key: false
results: HTML
- name: lib.rs
shortcut: lrs
engine: xpath
search_url: https://lib.rs/search?q={query}
results_xpath: /html/body/main/div/ol/li/a
url_xpath: ./@href
title_xpath: ./div[@class="h"]/h4
content_xpath: ./div[@class="h"]/p
categories: [it, packages]
disabled: true
about:
website: https://lib.rs
wikidata_id: Q113486010
use_official_api: false
require_api_key: false
results: HTML
- name: sourcehut
shortcut: srht
engine: xpath
paging: true
search_url: https://sr.ht/projects?page={pageno}&search={query}
results_xpath: (//div[@class="event-list"])[1]/div[@class="event"]
url_xpath: ./h4/a[2]/@href
title_xpath: ./h4/a[2]
content_xpath: ./p
first_page_num: 1
categories: [it, repos]
disabled: true
about:
website: https://sr.ht
wikidata_id: Q78514485
official_api_documentation: https://man.sr.ht/
use_official_api: false
require_api_key: false
results: HTML
# Doku engine lets you access to any Doku wiki instance:
# A public one or a privete/corporate one.
# - name: ubuntuwiki
# engine: doku
# shortcut: uw
# base_url: 'https://doc.ubuntu-fr.org'
# Be careful when enabling this engine if you are
# running a public instance. Do not expose any sensitive
# information. You can restrict access by configuring a list
# of access tokens under tokens.
# - name: git grep
# engine: command
# command: ['git', 'grep', '{{QUERY}}']
# shortcut: gg
# tokens: []
# disabled: true
# delimiter:
# chars: ':'
# keys: ['filepath', 'code']
# Be careful when enabling this engine if you are
# running a public instance. Do not expose any sensitive
# information. You can restrict access by configuring a list
# of access tokens under tokens.
# - name: locate
# engine: command
# command: ['locate', '{{QUERY}}']
# shortcut: loc
# tokens: []
# disabled: true
# delimiter:
# chars: ' '
# keys: ['line']
# Be careful when enabling this engine if you are
# running a public instance. Do not expose any sensitive
# information. You can restrict access by configuring a list
# of access tokens under tokens.
# - name: find
# engine: command
# command: ['find', '.', '-name', '{{QUERY}}']
# query_type: path
# shortcut: fnd
# tokens: []
# disabled: true
# delimiter:
# chars: ' '
# keys: ['line']
# Be careful when enabling this engine if you are
# running a public instance. Do not expose any sensitive
# information. You can restrict access by configuring a list
# of access tokens under tokens.
# - name: pattern search in files
# engine: command
# command: ['fgrep', '{{QUERY}}']
# shortcut: fgr
# tokens: []
# disabled: true
# delimiter:
# chars: ' '
# keys: ['line']
# Be careful when enabling this engine if you are
# running a public instance. Do not expose any sensitive
# information. You can restrict access by configuring a list
# of access tokens under tokens.
# - name: regex search in files
# engine: command
# command: ['grep', '{{QUERY}}']
# shortcut: gr
# tokens: []
# disabled: true
# delimiter:
# chars: ' '
# keys: ['line']
doi_resolvers:
oadoi.org: 'https://oadoi.org/'
doi.org: 'https://doi.org/'
doai.io: 'https://dissem.in/'
sci-hub.se: 'https://sci-hub.se/'
sci-hub.st: 'https://sci-hub.st/'
sci-hub.ru: 'https://sci-hub.ru/'
default_doi_resolver: 'oadoi.org'
更多推荐
已为社区贡献1条内容
所有评论(0)