<feed xmlns='http://www.w3.org/2005/Atom'>
<title>searxng/searx/engines/presearch.py, branch custom</title>
<subtitle>Free internet metasearch engine which aggregates results from various search services and databases</subtitle>
<id>https://git.ikboikov.net/searxng/atom?h=custom</id>
<link rel='self' href='https://git.ikboikov.net/searxng/atom?h=custom'/>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/'/>
<updated>2026-07-30T12:23:05Z</updated>
<entry>
<title>chore: remove presearch engine</title>
<updated>2026-07-30T12:23:05Z</updated>
<author>
<name>Léon Tiekötter</name>
<email>leon@tiekoetter.com</email>
</author>
<published>2026-07-29T09:39:22Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=81b0ed7b3807078a4ccd84a1d519a8ab8143af60'/>
<id>urn:sha1:81b0ed7b3807078a4ccd84a1d519a8ab8143af60</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>[chore] complete and normalize the attributes of engine objects (#6258)</title>
<updated>2026-06-15T08:52:00Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarit.de</email>
</author>
<published>2026-06-14T13:16:26Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=6c9dcd42420cee087ad7fe3d686dfc2b632ebbee'/>
<id>urn:sha1:6c9dcd42420cee087ad7fe3d686dfc2b632ebbee</id>
<content type='text'>
Drop outdated engine attributes: supported_languages, language_aliases

Complete, normalize and document the type definitions for the engine-module and
engine-class.

For the ``engine.about`` section of the configuration, a type check is performed
based on structure ``searx.enginelib.EngineAbout``.

The property ``engine.about.language`` no longer exists; existing values have
been migrated to ``engine.language``.

Signed-off-by: Markus Heiser &lt;markus.heiser@darmarit.de&gt;
</content>
</entry>
<entry>
<title>[mod] online engines - set common HTTP headers</title>
<updated>2026-02-22T08:30:16Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarit.de</email>
</author>
<published>2026-02-20T14:04:59Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=490f28f0a6649f6cfdd1b2d00f488b381c3a9d1e'/>
<id>urn:sha1:490f28f0a6649f6cfdd1b2d00f488b381c3a9d1e</id>
<content type='text'>
The online engines emulate a request as it would come from a web browser, which
is why the HTTP headers in the default settings should also be set the way a
standard web browser would set them.

Signed-off-by: Markus Heiser &lt;markus.heiser@darmarit.de&gt;
</content>
</entry>
<entry>
<title>[fix] presearch - AttributeError: 'NoneType' object has no attribute 'territory' (#5687)</title>
<updated>2026-01-24T06:25:49Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarIT.de</email>
</author>
<published>2026-01-24T06:25:49Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=eea189286388dc270e2bcd7a3b17cc4cd76d761e'/>
<id>urn:sha1:eea189286388dc270e2bcd7a3b17cc4cd76d761e</id>
<content type='text'>
For unknown locales, the return value of::

    locales.get_locale(params['searxng_locale'])

is None which cuase the following issue::

    ERROR   searx.engines.presearch       : exception : 'NoneType' object has no attribute 'territory'
    Traceback (most recent call last):
      File "search/processors/online.py", line 256, in search
        search_results = self._search_basic(query, params)
      File "search/processors/online.py", line 231, in _search_basic
        self.engine.request(query, params)
        ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
      File "engines/presearch.py", line 153, in request
        request_id, cookies = _get_request_id(query, params)
                              ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
      File "engines/presearch.py", line 140, in _get_request_id
        if l.territory:
           ^^^^^^^^^^^
    AttributeError: 'NoneType' object has no attribute 'territory'

Signed-off-by: Markus Heiser &lt;markus.heiser@darmarit.de&gt;</content>
</entry>
<entry>
<title>[fix] engines: typo (#5466)</title>
<updated>2025-11-21T10:20:10Z</updated>
<author>
<name>Léon Tiekötter</name>
<email>leon@tiekoetter.com</email>
</author>
<published>2025-11-21T10:20:10Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=e245cade255c53ea08c4a7c3c8ef9ae59231b4cc'/>
<id>urn:sha1:e245cade255c53ea08c4a7c3c8ef9ae59231b4cc</id>
<content type='text'>
Fix typo in engine timeout definition: 'timout' -&gt; 'timeout'</content>
</entry>
<entry>
<title>[fix] engines - set hard timouts in *sub-request* (#5460)</title>
<updated>2025-11-21T07:16:24Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarIT.de</email>
</author>
<published>2025-11-21T07:16:24Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=ca441f419ca2e3a4a6cf90ac853a3ff6d69df967'/>
<id>urn:sha1:ca441f419ca2e3a4a6cf90ac853a3ff6d69df967</id>
<content type='text'>
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 &lt;markus.heiser@darmarit.de&gt;</content>
</entry>
<entry>
<title>[fix] presearch engine: blocked by captcha on every request</title>
<updated>2025-11-20T12:48:13Z</updated>
<author>
<name>Bnyro</name>
<email>bnyro@tutanota.com</email>
</author>
<published>2025-11-20T12:30:12Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=041f457dfa92e3dbb33e9cdb7de2ce9024869b7d'/>
<id>urn:sha1:041f457dfa92e3dbb33e9cdb7de2ce9024869b7d</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>[fix] presearch: reuse response cookies from token extraction</title>
<updated>2025-05-28T10:53:45Z</updated>
<author>
<name>Bnyro</name>
<email>bnyro@tutanota.com</email>
</author>
<published>2025-05-28T09:36:37Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=2288f07d621d67d6b39f0d0073cdcc951ec22726'/>
<id>urn:sha1:2288f07d621d67d6b39f0d0073cdcc951ec22726</id>
<content type='text'>
Why?
- presearch requires the response cookies of the first request to be sent within the second request
- otherwise we miss auth information and the engine doesn't work

Related:
- https://github.com/searxng/searxng/pull/4858
- closes https://github.com/searxng/searxng/issues/4854

Co-authored-by: Aadniz &lt;8147434+Aadniz@users.noreply.github.com&gt;
</content>
</entry>
<entry>
<title>[fix] hardening against arguments of type None, where str or dict is expected</title>
<updated>2025-04-01T09:13:47Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarit.de</email>
</author>
<published>2025-04-01T07:20:19Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=e6308b8167e28a7452e9b87d913c1279f43b130a'/>
<id>urn:sha1:e6308b8167e28a7452e9b87d913c1279f43b130a</id>
<content type='text'>
On a long-running server, the tracebacks below can be found (albeit rarely),
which indicate problems with NoneType where a string or another data type is
expected.

result.img_src::

    File "/usr/local/searxng/searxng-src/searx/templates/simple/result_templates/images.html", line 13, in top-level template code
      &lt;img src="" data-src="{{ image_proxify(result.img_src) }}" alt="{{ result.title|striptags }}"&gt;{{- "" -}}
      ^
    File "/usr/local/searxng/searxng-src/searx/webapp.py", line 284, in image_proxify
      if url.startswith('//'):
         ^^^^^^^^^^^^^^
    AttributeError: 'NoneType' object has no attribute 'startswith'

result.content::

    File "/usr/local/searxng/searxng-src/searx/result_types/_base.py", line 105, in _normalize_text_fields
      result.content = WHITESPACE_REGEX.sub(" ", result.content).strip()
                       ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
    TypeError: expected string or bytes-like object, got 'NoneType'

html_to_text, when html_str is a NoneType::

    File "/usr/local/searxng/searxng-src/searx/engines/wikipedia.py", line 190, in response
      title = utils.html_to_text(api_result.get('titles', {}).get('display') or api_result.get('title'))
    File "/usr/local/searxng/searxng-src/searx/utils.py", line 158, in html_to_text
      html_str = html_str.replace('\n', ' ').replace('\r', ' ')
                 ^^^^^^^^^^^^^^^^
    AttributeError: 'NoneType' object has no attribute 'replace'

presearch engine, when json_resp is a NoneType::

    File "/usr/local/searxng/searxng-src/searx/engines/presearch.py", line 221, in response
      results = parse_search_query(json_resp.get('results'))
    File "/usr/local/searxng/searxng-src/searx/engines/presearch.py", line 161, in parse_search_query
      for item in json_results.get('specialSections', {}).get('topStoriesCompact', {}).get('data', []):
                  ^^^^^^^^^^^^^^^^
    AttributeError: 'NoneType' object has no attribute 'get'

Signed-off-by: Markus Heiser &lt;markus.heiser@darmarit.de&gt;
</content>
</entry>
<entry>
<title>[fix] presearch engine: Unexpected crash if duration not in videos</title>
<updated>2025-03-28T15:26:39Z</updated>
<author>
<name>Aadniz</name>
<email>8147434+Aadniz@users.noreply.github.com</email>
</author>
<published>2025-03-28T13:50:38Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=ecee73eafd694bb91b840882aea5b3d6c5b40a7b'/>
<id>urn:sha1:ecee73eafd694bb91b840882aea5b3d6c5b40a7b</id>
<content type='text'>
</content>
</entry>
</feed>
