Bnyro
94bdbb5c63
[feat] engines: add support for swisscows videos
2026-06-06 18:04:19 +02:00
Bnyro
465b5229c6
[feat] engines: add swisscows news engine
2026-06-06 18:04:19 +02:00
Bnyro
cbf97fd262
[feat] engines: add swisscows images engine
...
The implementation is basically a 1:1 port of the reverse engineered
swisscows JavaScript code. (it's been obfuscated, so I've restructured it
and made the variable names idiomatic instead of obfuscated var names like "a", "o", "i")
```js
/*
e: "/v5/images/search"
t: {
itemsCount: "50"
locale: "de-DE"
offset: "50"
query: "test"
spellcheck: "true"
}
*/
// HASH library used: https://github.com/h2non/jshashes
function generateNonceAndSignature(queryParams, urlPath) {
// urlPath = "/v5/images/search"
// sort keys alphabetically and join to query string
let queryStringSorted = '?' + U().stringify(queryParams, {
arrayFormat: 'repeat',
allowDots: !0
}).split('&').map(e => {
let[key, value] = e.split('=');
return [key, decodeURIComponent(value)]
}).sort((e, t) => e[0].localeCompare(t[0])).map(e => e.join('=')).join('&');
function caesarShift(str, offset = 13) {
const alphabet = 'abcdefghijklmnopqrstuvwxyz';
let result = [];
for (let a = 0; a < str.length; a++) {
let c = str[a],
alphabetIndex = alphabet.indexOf(c.toLowerCase());
if ( - 1 !== alphabetIndex) {
alphabetIndex += offset;
while (alphabetIndex >= alphabet.length) alphabetIndex -= alphabet.length;
c = c === c.toUpperCase() ? alphabet[alphabetIndex] : alphabet[alphabetIndex].toUpperCase()
}
result.push(c)
}
return result.join('')
}
const r = new (sha256Instance()).SHA256;
const random = randomString(32);
const randomShifted = caesarShift(random);
let to_hash = [urlPath, queryStringSorted, randomShifted].join('');
let signature = r.b64(to_hash);
signature = signature.replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
return {
nonce: random,
signature: signature
}
}
function randomString(length) {
let t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~',
n = '';
for (let r = 0; r < length; r++) n += t.charAt(Math.floor(Math.random() * t.length));
return n
}
```
2026-06-06 18:04:19 +02:00
Bnyro
e6559c9ad6
[fix] gabanza: result URLs are invalid
2026-06-04 08:55:19 +02:00
Bnyro
5bae05514b
[feat] engines: add zapmeta general search engine
2026-06-03 22:38:59 +02:00
Bnyro
00ca5776f2
[feat] engines: add gabanza general engine
2026-06-03 22:38:23 +02:00
Bnyro
246f5a5499
[mod] svgrepo: remove engine
...
- SVGRepo uses Cloudflare for every session, no matter
if you're opening it in a browser or not
2026-05-31 12:54:32 +02:00
Markus Heiser
4ac822fd7f
[mod] typification of the preference settings
...
no functional change / except the missing online doc which is now available::
$ make docs.live
$ xdg-open "http://127.0.0.1:8000/admin/settings/settings_preferences.html "
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de >
2026-05-30 22:43:50 +08:00
Bnyro
f5be39e245
[mod] podcastindex: remove engine ( #6140 )
...
PodcastIndex.org started using a Proof-of-Work JavaScript
challenge whose results are sent as `X-Pow-*` request headers.
Although it is technically possible to re-implement the
PoW challenge in Python, it's likely impossible to maintain
because
- the actual Proof of Concept logic might change very often
- the whole idea of the Proof of Work challenge is to use
a "big" amount of resources (about 1s on my PC); so executing the challenge
would almost block all other work on the SearXNG instance
At first glance, the challenge looks very similar to what
Anubis does, because it also uses SHA256 hashes.
2026-05-26 11:53:20 +02:00
Markus Heiser
f1a22dec9e
[fix] disable qwant engine / the rate-limits are just very strict ( #6148 )
...
Qwant is set to inactive by default due to its strict rate-limits
Related:
- https://github.com/searxng/searxng/pull/6127
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de >
2026-05-26 11:05:06 +02:00
Markus Heiser
e29e861e2c
[fix] bing engines - geoblocking in China ( #6134 )
...
In regions like China, the domain must be adjusted to avoid a redirect.
- https://github.com/searxng/searxng/issues/5243
- https://github.com/searxng/searxng/pull/5324
- https://github.com/searxng/searxng/pull/6133
Suggested / tested by @hubutui in https://github.com/searxng/searxng/pull/6133#issuecomment-4534637069
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de >
2026-05-25 17:05:08 +02:00
Bnyro
46071a011a
[mod] qwant: remove web lite and improve request spoofing ( #6127 )
...
- https://lite.qwant.com seems to be dead.
- The request parameters were changed to match the ones from the Qwant website.
- Qwant is now set to inactive by default due to its strict rate-limits
2026-05-25 15:46:40 +02:00
Bnyro
b0d8af96bf
[feat] engines: add flaticon icons engine ( #6122 )
2026-05-25 13:41:44 +02:00
Markus Heiser
efc305b7f9
[mod] normalize variable name for the max number of results per request ( #6131 )
...
[mod] normalize variable name for the max number of results per request
In the past, we have used different names for the variable that specifies the
maximum number of hits in the outgoing request.
- ``page_size``
- ``number_of_results``
- ``nb_per_page``
Since *page_size* is the most accurate term and is also used in the XPath
engines, all other engines are adjusted accordingly within this
patch .. documentation adjusted accordingly.
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de >
2026-05-25 12:41:31 +02:00
Bnyro
24b1a1b6a8
[feat] engines: add 500px.com engine ( #6091 )
2026-05-21 07:31:13 +02:00
Bnyro
d7e8b7cd18
[feat] engines: add cara.app engine ( #6092 )
2026-05-17 18:39:47 +02:00
Bnyro
dce3bb69bb
[chore] settings.yml: set broken engines yahoo and karmasearch to inactive
2026-05-16 16:04:36 +02:00
Bnyro
16a7537bfd
[chore] engines: remove ask.com (service was discontinued) ( #6083 )
...
Source: https://www.ask.com/
2026-05-16 15:36:47 +02:00
Tommaso Colella
849e17e431
[fix] 360search: improve empty results set management and increase engine timeout ( #6058 )
2026-05-09 08:35:21 +02:00
Bnyro
a9909c4977
[fix] karmasearch: videos engine in wrong category
2026-05-06 22:23:09 +02:00
Bnyro
d501b0420a
[mod] yep: fix engine due to new API layout ( #6048 )
...
Apparently, YEP no longer supports images and news search.
Also, the naming of the query parameters changed a bit.
Closes: https://github.com/searxng/searxng/issues/6047
2026-05-06 08:17:19 +02:00
Bnyro
8579974f5e
[feat] engines: add GMX search engine ( #5967 )
...
Notes:
- Safesearch doesn't seem to work properly?
- In theory multiple languages are supported, but even in the web UI, they don't work properly
- Possibly, we could cache the request hashes (h query parameter), I'm not sure if it ever changes
2026-04-17 07:00:21 +02:00
Markus Heiser
ee66b070a9
[mod] aol engines: disable by default ( #5975 )
...
The AOL engines deliver no results or too many incorrect results; in #5972 it is
reported that the AOL-images do not work, and on AOL-web the language selection
seems to depend more on the IP than on the selected language / Locally, the
language selection works for me, on the public server only English results are
displayed, which significantly worsens the result list.
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de >
2026-04-13 11:04:11 +02:00
Ivan Gabaldon
08ef7a63d7
[enh] engine: rework lingva
...
lingva.thedaviddelta.com instance is dead, use lingva.ml
2026-04-07 15:49:46 +02:00
Bnyro
bd8106e40e
[feat] engines: add karmasearch engine (brave mirror)
2026-03-25 19:45:46 +01:00
Bnyro
220c42c8e9
[feat] engines: add support for aol.com ( #5882 )
...
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de >
2026-03-24 20:44:15 +01:00
Ruben D.
3dc4d5daa8
[mod] add manifest.json template and route ( #5859 )
...
URLs, name and colors are automatically rendered into manifest.json.
Furthermore user preference of theme (light, dark, black) and theme colors are
respected. Theme colors can be set in settings.yml
2026-03-24 20:21:27 +01:00
Markus Heiser
8d44ff51e2
[mod] remove the "Submit a new issue on Github" form ( #5896 )
...
Submitting an issue on GitHub isn't a end user task .. most issue reports coming
from this form are not filled out, since end users are not familiar with the
needs of a developer community.
Closes: https://github.com/searxng/searxng/issues/5820
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de >
2026-03-24 19:39:11 +01:00
Bnyro
71cea1d87f
[feat] engines: add boardreader engine ( #5881 )
2026-03-24 15:55:54 +01:00
Bnyro
e30d490429
[mod] right dao: remove engine ( #5849 )
...
Since about a month, the website just says "temporarily unavailable", so it's safe to assume that it's just no longer working
Related:
- https://github.com/searxng/searxng/pull/3798
2026-03-12 15:20:53 +01:00
Bnyro
56e565a582
[feat] autocomplete: add bing autocompleter
2026-03-05 20:56:02 +01:00
Ivan Gabaldon
380f1c4a49
[upd] engines: sync "aa" mirrors ( #5807 )
2026-03-05 19:08:05 +01:00
Markus Heiser
d1f9409afc
[fix] remove base_url https://annas-archive.li
...
Related:
- https://github.com/searxng/searxng/issues/5773
- https://github.com/searxng/searxng/pull/5780
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de >
2026-03-03 20:31:25 +01:00
Ivan Gabaldon
f6e360a134
[mod] engines: remove stract engine ( #5800 )
...
Engine probably dead, developer doesn't have time to maintain it anymore:
- https://github.com/StractOrg/stract/issues/267
Related:
- https://github.com/searxng/searxng/pull/3099
2026-03-03 11:47:15 +01:00
Ivan Gabaldon
bc31c29d8a
[mod] engines: remove livespace engine ( #5798 )
...
Related:
- https://github.com/searxng/searxng/pull/3222
- https://web.archive.org/web/20240524174947/https://about.live.space/post/thank-you
2026-03-03 11:27:33 +01:00
Ivan Gabaldon
65ae6ad902
[mod] engines: remove searchcode engine
...
Microslop fault https://web.archive.org/web/20260111060432/https://boyter.org/posts/searchcode-is-being-rebooted/
2026-03-03 00:24:15 +01:00
Ivan Gabaldon
a2108ce2e5
[enh] engines: rework "aa" engine ( #5780 )
...
* [enh] engines: rework "aa" engine
fix: update mirror domains
enh: sync website layout
feat: add `type`, `tags` result fields
* [fix] engines: apply suggestions
https://github.com/searxng/searxng/pull/5780#discussion_r2866198969
https://github.com/searxng/searxng/pull/5780#discussion_r2866207218
https://github.com/searxng/searxng/pull/5780#discussion_r2866211874
https://github.com/searxng/searxng/pull/5780#discussion_r2866228648
https://github.com/searxng/searxng/pull/5780#discussion_r2866232545
https://github.com/searxng/searxng/pull/5780#discussion_r2866235830
2026-02-28 11:35:58 +01:00
mgcsysinfcat
ebb300424c
[mod] fynd: add safe search support
2026-02-27 21:55:13 +01:00
Bnyro
c3e3d2d85d
[feat] engines: add pexels engine
2026-02-26 11:35:10 +01:00
Markus Heiser
191818b865
[mod] drop SearXNG's checker ( #5767 )
...
To date, there is no analysis for the checker that could be evaluated in any
meaningful way.
- https://github.com/searxng/searxng/issues/3407
- https://github.com/searxng/searxng/pull/3312
The checker would need to be completely redesigned, but even then, its
usefulness and the maintenance required for it would be disproportionate.
TBH: In its current form, it is useless and only consumes resources and
causes the engines to be blocked, because these tests (query terms) come
from *hundreds* of instances and could be interpreted as bot attacks.
Related issues: [search.checker](https://github.com/searxng/searxng/issues?q=label%3A%22search.checker%22 )
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de >
2026-02-22 14:44:21 +01:00
Markus Heiser
2e6eeb1d79
[fix] complete overhaul of the DuckDuckGo engines
...
DDG has reimplemented its bot protection, and the DDG engines "images", "news"
and "videos" no longer work in SearXNG and DDG-Web access often ends with a
CAPTCHA.
Related:
- issue 4824
- https://github.com/ggfevans/searxng/blob/mod-sidecar-harvester/docs/ddg-bot-detection-research.md
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de >
2026-02-22 09:30:16 +01:00
Markus Heiser
76f0712319
[mod] settings.yml - adjust default suspended_times from hours to minutes
...
The default settings for the suspend times were previously 24 hours and 3 hours,
respectively. Based on my experience, these defaults are too high; most engines
handle suspend times of 3 minutes or 1 hour (captcha) without any problems.
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de >
2026-02-22 09:30:16 +01:00
Bnyro
9754e7b4e2
[mod] engines: remove seekr engine
...
Looks like https://www.seekr.com/ was sold to an other company
that does something with enterprise AI and no longer provides any
web search engine.
2026-02-21 11:26:53 +01:00
Carsten Csiky
8e824017dc
[feat] engines: add artstation engine ( #5728 )
...
- use proper Brave API with api_key for search
Co-authored-by: Bnyro <bnyro@tutanota.com >
2026-02-16 14:18:08 +01:00
Austin-Olacsi
970f2b8430
[feat] add nist.gov vulnerability search
2026-02-11 00:44:19 +01:00
Austin-Olacsi
966988e360
[feat] engines: add artstation engine ( #5689 )
2026-01-27 17:18:46 +01:00
Austin-Olacsi
5271c3b9e1
[fix] pixiv: update pixiv proxy docs URL in settings.yml
2026-01-26 19:31:10 +01:00
Bnyro
313fda426c
[fix] annas archive: rotate between available backup domains
...
- closes https://github.com/searxng/searxng/issues/5633
2026-01-20 13:39:19 +01:00
Bnyro
b93a68bb48
[feat] engines: add fynd engine ( #5616 )
...
The engine is quite fast (< 30ms) and provides very
decent search results for most short queries.
More information:
- <https://fynd.com >
- <https://seirdy.one/posts/2021/03/10/search-engines-with-own-indexes/ >
2026-01-16 08:39:16 +01:00
Bnyro
44405bd03c
[fix] yep: fix 403 forbidden errors
...
Apparently, yep has been broken for a while. Measures to fix it:
- only use HTTP/1.1, because our HTTP2 client gets fingerprinted and blocked
- send the `Origin` HTTP header
2026-01-10 12:46:22 +01:00