summaryrefslogtreecommitdiff
path: root/searx
AgeCommit message (Collapse)Author
2025-11-25[fix] brave engines - web, images & videos (#5478)Markus Heiser
brave web: xpath selectors needed to be justified brave images & videos: The JS code with the JS object was read incorrectly; not always, but quite often, it led to exceptions when the Python data structure was created from it. BTW: A complete review was conducted and corrections or additions were made to the type definitions. To test all brave engines in once:: !br !brimg !brvid !brnews weather Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-11-25[mod] replace js_variable_to_python by js_obj_str_to_python (#2792) (#5477)Markus Heiser
This patch is based on PR #2792 (old PR from 2023) - js_obj_str_to_python handle more cases - bring tests from chompjs .. - comment out tests do not pass The tests from chompjs give some overview of what is not implemented. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-11-25[mod] yandex engines: all egine should use one networkMarkus Heiser
- The three Yandex engines should use the same network context. - There is no reason to set these engines inactive Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-11-25[mod] yandex engine: add supported languagesAadniz
Add support for Yandex's supported languages; Russian, English, Belarusian, French, German, Indonesian, Kazakh, Tatar, Turkish and Ukrainian.
2025-11-25[fix] engines: base URL can be a list or a string, but its not None!Markus Heiser
The code injection and monkey patching examine the names in the module of the engine; if a variable there starts without an underscore and has the value None, then this variable needs to be configured. This outdated concept does not fit engines that may have multiple URLs. At least not as long as the value of the base URL (list) is None. The default is now an empty list instead of None Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-11-25[fix] engines initialization - if engine load fails, set to inactiveMarkus Heiser
- if engine load fails, set the engine to inactive - dont' load a engine, when the config says its inactive Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-11-25[fix] don't raise fatal exception when engine isn't availableMarkus Heiser
When wikidata or any other engine with a init method (is active!) raises an exception in it's init method, the engine is never registered. [1] https://github.com/searxng/searxng/issues/5456#issuecomment-3567790287 Closes: https://github.com/searxng/searxng/issues/5456 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-11-24[fix] recoll engine: remove HTML markup from result snippets (#5472)Hermógenes Oliveira
Recoll inserts markup tags in snippets to indicate matching terms in a search query. We remove them so that they don't show to users.
2025-11-22[fix] drop mullvad-leta engine (#5428)Grant
On 2025 November 27th, Mullvad will be shutting down the Leta servers. For this reason, we also need to remove this engine from SearXNG. [1] https://mullvad.net/en/blog/shutting-down-our-search-proxy-leta
2025-11-22[feat] engine: add grokipedia (#5396)Austin-Olacsi
2025-11-21[fix] engines: typo (#5466)Léon Tiekötter
Fix typo in engine timeout definition: 'timout' -> 'timeout'
2025-11-21[fix] engines - set hard timouts in *sub-request* (#5460)Markus Heiser
The requests changed here all run outside of the network context timeout, thereby preventing the engine's timeout from being applied (the engine's timeout can become longer than it was configured). Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-11-20[l10n] update translations from Weblatesearxng-bot
2025-11-20[fix] minor type hint issues (#5459)Markus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-11-20[fix] utils.js_variable_to_python - partial revert of 156d1eb8c (#5458)Markus Heiser
The JS string, whose encoding will be corrupted if all single quotes (followed by a comma) are replaced with double quotes. Bug was introduced in PR #4573. Here is a simple example in which the list get corrupted:: >>> s = r"""[ 'foo\'', 'bar']""" >>> print(s) [ 'foo\'', 'bar'] >>> print(s.replace("',", "\",")) [ 'foo\'", 'bar'] Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-11-20[fix] presearch engine: blocked by captcha on every requestBnyro
Presearch responds with a Cloudflare captcha on each request when using HTTP2. Using HTTP1.1, everything seems to work fine. - other engines with the same issue: pixabay, uxwing - closes https://github.com/searxng/searxng/issues/5438
2025-11-20[fix] recoll engine: fix media previewHermógenes Oliveira
The results from the recoll engine were not displaying the usual toggle for showing media previews. After the changes described bellow, the toggle is displayed and works as expected. In the JSON returned by recoll-webui, the field containing the mimetype is actually `mtype`, not `mime`. Furthermore, according to the documentation for the `File` class in `searx/result_types/file.py`, `embedded` should contain the URL to the media itself. The embedding of the media into the page for preview is done in `searx/templates/simple/result_templates/file.html`.
2025-11-15[fix] drop alexandria.org (#5446)Austin-Olacsi
2025-11-14[feat] engines: add devicons engineBnyro
- official website: https://devicon.dev/ - the engine contains a lot of icons of popular software frameworks (e.g. pytest), so they could for example be useful for visualizing a diagram of the tech stack used in an app
2025-11-10[fix] hackernews contains HTML escape codesAustin-Olacsi
2025-11-07[upd] web-client (simple): Bump the minor group in /client/simple with 4 ↵dependabot[bot]
updates (#5423) * [upd] web-client (simple): Bump the minor group Bumps the minor group in /client/simple with 4 updates: [ol](https://github.com/openlayers/openlayers), [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome), [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) and [sharp](https://github.com/lovell/sharp). Updates `ol` from 10.6.1 to 10.7.0 - [Release notes](https://github.com/openlayers/openlayers/releases) - [Commits](https://github.com/openlayers/openlayers/compare/v10.6.1...v10.7.0) Updates `@biomejs/biome` from 2.3.2 to 2.3.4 - [Release notes](https://github.com/biomejs/biome/releases) - [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md) - [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.3.4/packages/@biomejs/biome) Updates `@types/node` from 24.9.2 to 24.10.0 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `sharp` from 0.34.4 to 0.34.5 - [Release notes](https://github.com/lovell/sharp/releases) - [Commits](https://github.com/lovell/sharp/compare/v0.34.4...v0.34.5) --- updated-dependencies: - dependency-name: ol dependency-version: 10.7.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor - dependency-name: "@biomejs/biome" dependency-version: 2.3.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor - dependency-name: "@types/node" dependency-version: 24.10.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor - dependency-name: sharp dependency-version: 0.34.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor ... Signed-off-by: dependabot[bot] <support@github.com> * [upd] web-client (simple): rebuild static --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ivan Gabaldon <igabaldon@inetol.net>
2025-11-07[fix] drop goo engineAadniz
2025-11-06[enh] py: drop deps (#5407)Ivan Gabaldon
The difference between decompression with brotli or gzip in HTML files is negligible for 3 MB of compiled binary package. Introduced in https://github.com/searxng/searxng/commit/eaa694fb7d0e47b943bc6d6edb6cb6a40ab2d85e Closes https://github.com/searxng/searxng/security/code-scanning/276 Closes https://github.com/searxng/searxng/security/dependabot/37
2025-11-06[fix] yandex engine: capture captcha from header instead of url path (#5417)Aadniz
Yandex engine will return parsing error instead of informing that a CAPTCHA was found. It is confusing for the admin and the users (#5415). This patch fixes an issue where the CAPTCHA response from Yandex wouldn't be detected, resulting in `ParserError` when trying to parse the response to DOM. In this fix, I replaced the url condition and instead is checking if the `x-yandex-captcha` header is set, and is equal to `captcha`. Alternatively, maybe something like `resp.headers.get('Location', '').startswith("https://yandex.com/showcaptcha")` could be done instead. Lastly, setting `params['allow_redirects'] = True` can also work, but this will waste an extra request. Just let me know. Closes: https://github.com/searxng/searxng/issues/5415
2025-11-05[feat] sourcehut engine: implement as custom module, fix user agentBnyro
SourceHut uses a foss bot protection tool called `go-away` (which I can recommend BTW). It blocks common crawler user agents, such as the standard Firefox user agent. Hence, we're now using our custom SearXNG user agent to clarify we're not a crawler. Closes: https://github.com/searxng/searxng/issues/5270 Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2025-11-05[fix] engine ahmia blacklist, arch linux: use proper searxng user agent ↵Bnyro
including version (#5414)
2025-11-03[fix] qwant engine: order query parameters to prevent 403 forbidden (#5410)Aadniz
2025-11-01Revert "[fix] !weather crashes - cls.TURN .. (#5309)"Markus Heiser
This reverts HOTFIX from commit fc7d8b8b [1] [1] https://github.com/searxng/searxng/pull/5309 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-11-01[fix] msgspec.Struct: alias name t.ClassVar not properly detectedMarkus Heiser
Reported in [1], HOTFIX in [2], this patch here is now the final solution. Note that if using PEP 563 postponed evaluation of annotations" (e.g. ``from __future__ import annotations``) only the following spellings will work: ClassVar or ClassVar[<type>] typing.ClassVar or typing.ClassVar[<type>] Importing ClassVar or typing under an aliased name (e.g. ``import typing as t``) will not be properly detected. [3] [1] https://github.com/searxng/searxng/issues/5304#issuecomment-3394140820 [2] https://github.com/searxng/searxng/pull/5309 [3] https://jcristharif.com/msgspec/structs.html#class-variables Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-31[l10n] update translations from Weblate (#5404)github-actions[bot]
0bdbdde2e - 2025-10-26 - 0ko <0ko@noreply.codeberg.org> 7b0abb9aa - 2025-10-27 - artens <artens@noreply.codeberg.org> 882a28944 - 2025-10-27 - langckx <langckx@noreply.codeberg.org> c2d025563 - 2025-10-25 - Flyingfufu <flyingfufu@noreply.codeberg.org>
2025-10-30[data] update searx.data - update_ahmia_blacklist.pyMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-30[fix] simple theme: fix *play* icon in the "show media" button (#5395)Markus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-29[data] update searx.data - update_firefox_version.py (#5388)github-actions[bot]
2025-10-29[data] update searx.data - update_wikidata_units.py (#5389)github-actions[bot]
2025-10-29[data] update searx.data - update_currencies.py (#5390)github-actions[bot]
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-10-29[data] update searx.data - update_engine_descriptions.py (#5391)github-actions[bot]
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-10-28[fix] deviantart engine: pagination match change (#5384)Aadniz
Pagination currently does not work for deviantart, resulting in the same page being shown when going to the next page in SearXNG.
2025-10-27[fix] qwant engine: set header Accept-Language to bypass bot detection (#5382)Aadniz
Set HTTP header Accept-Language [1] for the Qwant engine. Qwant does not seem to work on any SearXNG instance right now, and this is a fix for this issue. During testing, it seems like setting the Accept-Language gives more success for bypassing bot detection (tested with a few ~20 searches). [1] https://docs.searxng.org/dev/engines/enginelib.html#searx.enginelib.Engine.send_accept_language_header
2025-10-27[fix] deviantart engine: does not return any results (#5383)Aadniz
2025-10-26[fix] startpage engine: properly display CAPTCHA if redirect page is seen ↵Aadniz
(#5380) Fixes an issue where startpage engine would display parsing error (`json.decoder.JSONDecodeError`) when returning CAPTCHA redirect page. The fix simply checks if response header has `Location` set, and if it starts with `https://www.startpage.com/sp/captcha`, it will raise a CAPTCHA exception before trying to parse the data.
2025-10-25[fix] engine qwant - return forbidden instead of showing parse error (#5377)Aadniz
2025-10-25[build] /staticBnyro
2025-10-24[mod] rebuild staticIvan Gabaldon
2025-10-24[fix] client/simple: insecure ctx clipboard copyIvan Gabaldon
Uses the deprecated [`execCommand()`](https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand) to copy content to clipboard if accessing the instance through HTTP, this method isn't going away soon. Closes https://github.com/searxng/searxng/issues/5359
2025-10-24[l10n] update translations from Weblate (#5370)github-actions[bot]
55c0cab85 - 2025-10-21 - return42 <return42@noreply.codeberg.org> 7705bba80 - 2025-10-21 - Outbreak2096 <outbreak2096@noreply.codeberg.org> d2ee86058 - 2025-10-21 - return42 <return42@noreply.codeberg.org> 8c4478ca3 - 2025-10-21 - return42 <return42@noreply.codeberg.org> 147ba039a - 2025-10-21 - return42 <return42@noreply.codeberg.org> 2d9a206e8 - 2025-10-21 - return42 <return42@noreply.codeberg.org> 024e2f1c7 - 2025-10-21 - return42 <return42@noreply.codeberg.org> 8059378af - 2025-10-21 - return42 <return42@noreply.codeberg.org> 4b4359eea - 2025-10-21 - return42 <return42@noreply.codeberg.org> 05af879c9 - 2025-10-21 - return42 <return42@noreply.codeberg.org> 0ea9d6393 - 2025-10-21 - return42 <return42@noreply.codeberg.org> e2e0907ff - 2025-10-21 - return42 <return42@noreply.codeberg.org> 9a7cfc1c1 - 2025-10-21 - return42 <return42@noreply.codeberg.org> 06b7d62f0 - 2025-10-21 - return42 <return42@noreply.codeberg.org> a3bc054a5 - 2025-10-21 - return42 <return42@noreply.codeberg.org> 34e56b171 - 2025-10-21 - return42 <return42@noreply.codeberg.org> 8cc444358 - 2025-10-21 - return42 <return42@noreply.codeberg.org> 55afa16d1 - 2025-10-21 - return42 <return42@noreply.codeberg.org> a336dd1ae - 2025-10-21 - return42 <return42@noreply.codeberg.org> ec68a405a - 2025-10-21 - return42 <return42@noreply.codeberg.org> beeab8c25 - 2025-10-21 - return42 <return42@noreply.codeberg.org> 44a5c9e04 - 2025-10-21 - return42 <return42@noreply.codeberg.org> aef218710 - 2025-10-21 - return42 <return42@noreply.codeberg.org> 42923cf46 - 2025-10-21 - Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org> 3cab50a73 - 2025-10-22 - jperegrinm <jperegrinm@noreply.codeberg.org> 410e760d5 - 2025-10-21 - return42 <return42@noreply.codeberg.org> bb5e921c3 - 2025-10-21 - return42 <return42@noreply.codeberg.org> eece61f04 - 2025-10-21 - return42 <return42@noreply.codeberg.org> 1f18156d5 - 2025-10-21 - return42 <return42@noreply.codeberg.org> 20026535d - 2025-10-21 - return42 <return42@noreply.codeberg.org> fcc563bf8 - 2025-10-21 - return42 <return42@noreply.codeberg.org> ec02a81da - 2025-10-21 - return42 <return42@noreply.codeberg.org> 78125c9e6 - 2025-10-21 - return42 <return42@noreply.codeberg.org> 7a4b89369 - 2025-10-21 - return42 <return42@noreply.codeberg.org> d02406831 - 2025-10-21 - return42 <return42@noreply.codeberg.org> 8fe4022cb - 2025-10-21 - return42 <return42@noreply.codeberg.org> 0e8cdcaa8 - 2025-10-20 - SomeTr <sometr@noreply.codeberg.org> 4b138b0dc - 2025-10-20 - Juno Takano <jutty@noreply.codeberg.org> d20e2c9c1 - 2025-10-20 - ghose <ghose@noreply.codeberg.org>
2025-10-20[fix] TrackerPatternsDB.clean_url: don't delete query argument from new_url ↵Markus Heiser
(#5339) The query argument for URLs like: - 'http://example.org?q=' --> query_str is 'q=' - 'http://example.org?/foo/bar' --> query_str is 'foo/bar' is a *simple string* and not a key/value dict. This string may only be removed from the URL if one of the patterns matches. BTW get_pretty_url(): keep such a *simple string* in the path element. Closes: https://github.com/searxng/searxng/issues/5299 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-20[build] /staticMarkus Heiser
2025-10-20[mod] typification of SearXNG: add new result type FileMarkus Heiser
This PR adds a new result type: File Python class: searx/result_types/file.py Jinja template: searx/templates/simple/result_templates/file.html CSS (less) client/simple/src/less/result_types/file.less Class 'File' (singular) replaces template 'files.html' (plural). The renaming was carried out because there is only one file (singular) in a result. Not to be confused with the category 'files' where in multiple results can exist. As mentioned in issue [1], the class '.category-files' was removed from the CSS and the stylesheet was adopted in result_types/file.less (there based on the templates and no longer based on the category). [1] https://github.com/searxng/searxng/issues/5198 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-18[mod] engine: reuters - REST-API for Reuter's thumbnail, height:80Markus Heiser
The size of the full-size images from ``thumbnail.url`` is usually several MB. By reducing the full-size image to 80 pixels, the data size for a thumb is reduced from MB to a few KB. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-18[fix] reuters: crash on empty results pages & date parsingBnyro
1. On empty result list, return empty EngineResults (#5330) 2. Use ``dateutil.parser`` to avoid ``ValueError``: ERROR searx.engines.reuters : exception : Invalid isoformat string: '2022-06-08T16:07:54Z' File "searx/engines/reuters.py", line 91, in response publishedDate=datetime.fromisoformat(result["display_time"]), ValueError: Invalid isoformat string: '2022-06-08T16:07:54Z' Closes: https://github.com/searxng/searxng/issues/5330 Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>