summaryrefslogtreecommitdiff
path: root/searx/engines
AgeCommit message (Collapse)Author
24 hours[fix] braveapi: set JSON Accept header (#6666)masterTed Lanham
3 days[del] cara engine: remove because it requires signup for searchingBnyro
3 days[mod] engines: remove uses of `enable_http2 = False`Bnyro
This has only been needed because we were flagged by HTTP2 fingerprinting. Now, since we use curl cffi, we can bypass the fingerpinting, so we can use HTTP2 just fine without getting blocked.
3 days[fix] resulthunter: detect blocked requests instead of returning 0 resultsBnyro
3 days[fix] chatnoir: returns empty responsesBnyro
3 days[fix] engines: update brave images/videos parser and news xpathvojkovic
3 days[fix] engines: resulthunter search_source argvojkovic
3 days[fix] engines: tusksearch referer headervojkovic
3 days[fix] engines: dogpile request api tokenvojkovic
3 days[feat] engines: add searchrockit.com (general, news, images)Bnyro
3 days[fix] neosearch: requests blocked due to missing xsrf tokenBnyro
3 days[fix] searchzee: bypass botblockingBnyro
requires https://github.com/searxng/searxng/pull/6620
4 days[docs] fix some minor reST markup issues in the doc-string (#6646)Markus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
4 days[fix] marginalia: crashes with missing filter nameBnyro
4 days[mod] network: migrate to curl_cffivojkovic
4 days[feat] engines: add JS-based s1search engineBnyro
5 days[mod] engines: migrate video engines away from get_embedded_stream_urlBnyro
5 days[fix] chatnoir: fails to extract API session parametersBnyro
5 days[fix] engine: braveapi - braveapi pagination sends an invalid offset (#6627)Markus Heiser
Closes: https://github.com/searxng/searxng/issues/6545
6 days[mod] s1search: update mirrors to the ones that are not cloudflaredBnyro
6 days[mod] engines: migrate to setup() from init() for simple tasksOm Alve
6 days[fix] engine: meilisearch - AttributeError: no attribute 'about' (#6626)Markus Heiser
- Closes: https://github.com/searxng/searxng/issues/6622 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
6 days[del] heexy: remove engine due to cloudflare captcha (#6625)Bnyro
6 days[fix] hardening engine: ddg weather - get GEO location from response (#6623)Markus Heiser
The previous implementation ran into an error if the search term contained words other than just the location (ValueError was raised). To test engine use search terms like: !ddw weather berlin germany Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
7 days[refactor] wikidata: cache wikidata properties in searxng dataBnyro
2026-08-22[fix] google: use Nokia UA (#6546)vojkovic
2026-08-20[feat] marginalia: add support for custom filters (#6543)SVHawk13
2026-08-17[fix] engines: deviantart access deniedvojkovic
2026-08-13[feat] engines: add paid yandex search api (#6349)ArsenBilov
2026-08-12[fix] dogpile: access denied due to missing origin headerBnyro
2026-08-10[feat] engines: add jina (general)Bnyro
2026-07-30[feat] engines: add keenable (general)Ilya Bogin
2026-07-30[mod] swisscows: use alphabet from `string` module instead of hardcoding ↵Bnyro
alphabet
2026-07-30[mod] engines: replace [random.choice(...) for ... in range(..)] with ↵Bnyro
random.choices
2026-07-30[del] reddit: remove engine, requires authentication nowBnyro
2026-07-30chore: remove presearch engineLéon Tiekötter
Removing the presearch engine and configuration because it got shutdown. ref.: https://news.presearch.io/a-message-from-the-presearch-team-aaa448052b2b https://x.com/presearchnews/status/2080744472791441807
2026-07-28[fix] exaapi: missing shortcut causes engine to crashBnyro
2026-07-28[feat] engines: add Exa Search API enginekesku
2026-07-17[fix] qwant: can't fetch engine traits because `engine.about` is no longer a ↵Bnyro
dict
2026-07-16[fix] tiger: remember auth cookie for 2 months, not 1 dayBnyro
2026-07-16[fix] public domain image archive: crashes upon responseBnyro
The code used here has always been "bad" because `about` shouldn't be used as data source, but the engine probably broke when type checks / dataclasses for the about parameter in engines has been added with <https://github.com/searxng/searxng/pull/6258>. Error log: ``` WARNING searx.engines.public domain im: ErrorContext('searx/engines/public_domain_image_archive.py', 143, '\'url\': _clean_url(f"{about[\'website\']}/images/{result[\'objectID\']}"),', 'TypeError', None, ("'EngineAbout' object is not subscriptable",)) False ERROR searx.engines.public domain im: exception : 'EngineAbout' object is not subscriptable Traceback (most recent call last): File "/home/bnyro/Projects/searxng/searx/search/processors/online.py", line 253, in search search_results = self._search_basic(query, params) File "/home/bnyro/Projects/searxng/searx/search/processors/online.py", line 239, in _search_basic return self.engine.response(response) ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ File "/home/bnyro/Projects/searxng/searx/engines/public_domain_image_archive.py", line 143, in response 'url': _clean_url(f"{about['website']}/images/{result['objectID']}"), ~~~~~^^^^^^^^^^^ TypeError: 'EngineAbout' object is not subscriptable ```
2026-07-15[fix] qwant: engine blocked with captchaBnyro
Qwant now requires a `datadome` cookie that it returns in the first search response as a `Set-Cookie`. This cookie has to be sent for all requests, otherwise they will be blocked. This means that now, the first search request is blocked (results in CAPTCHA), and only the subsequent searches work (same happens on the Qwant website for me). However, I don't think it's worth repeating the same search request multiple times very quickly because that also makes us more suspicious.
2026-07-14[fix] tusksearch: fix engine blocked by bot protectionBnyro
Changes: - the `embed.js` request now requires a user agent header - we include a user agent in the "actual" request (I dropped it by accident) - we only send the first 4 decimal places of the location instead of 7+ (not required, but harder to detect)
2026-07-14[fix] heexy: blocked by cloudflareBnyro
2026-07-13[refactor] engines: use datetime.fromisoformat instead of datetime.strptime ↵Onev
where possible (#6394) Refactor engines that parse ISO 8601 dates with strptime to use fromisoformat instead. In most cases this is a direct replacement of strptime(text, "format") with fromisoformat(text). For engines where the source has a trailing "Z" that strptime consumed as a literal (e.g. "%Y-%m-%dT%H:%M:%S.%fZ" in huggingface.py), add rstrip("Z") to keep the output naive and preserve the existing behavior. In sogou.py the date is extracted with a regular expression, which can yield strings like "2026-7-11". strptime accepts this via its format string, but fromisoformat does not. To preserve the existing behavior and satisfy the format fromisoformat expects, add zero-padding for the month and day. Closes: #6098 --------- Signed-off-by: OneVth <onebrotravel@gmail.com>
2026-07-08[fix] braveapi: strip HTML tags and filter favicon thumbnails (#6381)Jayant Sharma
2026-07-08[fix] heexy: use cookies for cacheft tokenBnyro
Heexy now passes the cacheft token via cookies and no longer via HTTP headers. Hence, the engine is broken without that change.
2026-07-07[fix] kagi: crashes when there are no resultsBnyro
2026-07-07[fix] kagi: safely access unpromised result propertiesPatrick Evans
I was testing the new Kagi engine and found for some queries I was getting a `KeyError` exception from the result parsing. This PR ensures we only assumes the `url` key exists, and we use `.get()` to retrieve values for keys that may not be present. Their API documentation [1] clarifies that only the `url` and `title` properties are required/guaranteed in the search result object, but this is not correct: File "/home/patrick/code/searxng/searx/engines/kagi.py", line 161, in response title=html.unescape(result["title"]), ~~~~~~^^^^^^^^^ KeyError: 'title Heard back from Kagi support: > The image results "title' should be marked as optional, as many images likely > don't have titles - as you've noticed. The only required field there should be > the "url" field. [1] https://kagi.redocly.app/api/docs/openapi/search/search#search/search/t=response&c=200&path=data/search [2] https://github.com/searxng/searxng/issues/2247#issuecomment-4692976877
2026-07-07[fix] kagi: results contain HTML tagsBnyro