SearXNG is a free internet metasearch engine which aggregates results from various search services and databases. Users are neither tracked nor profiled.
This report presents the forensic synthetic code analysis of searxng/searxng, a Python project with 33,858 GitHub stars. SynthScan v2.0 examined 133,550 lines of code across 610 source files, recording 715 pattern matches distributed across 17 syntactic categories. The overall adjusted score of 6.8 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 715 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | searx/settings_defaults.py | 3 | CODE | |
| LOW | searx/external_bang.py | 14 | CODE | |
| LOW | searx/webutils.py | 14 | CODE | |
| LOW | searx/webutils.py | 27 | CODE | |
| LOW | searx/webutils.py | 28 | CODE | |
| LOW | searx/webutils.py | 29 | CODE | |
| LOW | searx/webutils.py | 30 | CODE | |
| LOW | searx/__init__.py | 3 | CODE | |
| LOW | searx/extended_types.py | 31 | CODE | |
| LOW | searx/extended_types.py | 32 | CODE | |
| LOW | searx/extended_types.py | 33 | CODE | |
| LOW | searx/extended_types.py | 33 | CODE | |
| LOW | searx/extended_types.py | 33 | CODE | |
| LOW | searx/exceptions.py | 7 | CODE | |
| LOW | searx/autocomplete.py | 28 | CODE | |
| LOW | searx/brand.py | 7 | CODE | |
| LOW | searx/metrics/__init__.py | 11 | CODE | |
| LOW | searx/metrics/__init__.py | 11 | CODE | |
| LOW | searx/answerers/__init__.py | 45 | CODE | |
| LOW | searx/answerers/__init__.py | 45 | CODE | |
| LOW | searx/favicons/__init__.py | 17 | CODE | |
| LOW | searx/favicons/__init__.py | 17 | CODE | |
| LOW | searx/plugins/tor_check.py | 19 | CODE | |
| LOW | searx/plugins/tor_check.py | 20 | CODE | |
| LOW | searx/plugins/tor_check.py | 21 | CODE | |
| LOW | searx/plugins/infinite_scroll.py | 11 | CODE | |
| LOW | searx/plugins/oa_doi_rewrite.py | 16 | CODE | |
| LOW | searx/plugins/oa_doi_rewrite.py | 17 | CODE | |
| LOW | searx/plugins/oa_doi_rewrite.py | 18 | CODE | |
| LOW | searx/plugins/oa_doi_rewrite.py | 18 | CODE | |
| LOW | searx/plugins/oa_doi_rewrite.py | 19 | CODE | |
| LOW | searx/plugins/self_info.py | 15 | CODE | |
| LOW | searx/plugins/self_info.py | 16 | CODE | |
| LOW | searx/plugins/self_info.py | 17 | CODE | |
| LOW | searx/plugins/time_zone.py | 15 | CODE | |
| LOW | searx/plugins/time_zone.py | 16 | CODE | |
| LOW | searx/plugins/time_zone.py | 17 | CODE | |
| LOW | searx/plugins/__init__.py | 102 | CODE | |
| LOW | searx/plugins/__init__.py | 102 | CODE | |
| LOW | searx/plugins/__init__.py | 102 | CODE | |
| LOW | searx/plugins/hostnames.py | 98 | CODE | |
| LOW | searx/plugins/hostnames.py | 99 | CODE | |
| LOW | searx/plugins/hostnames.py | 100 | CODE | |
| LOW | searx/plugins/hostnames.py | 101 | CODE | |
| LOW | searx/plugins/hostnames.py | 102 | CODE | |
| LOW | searx/plugins/unit_converter.py | 22 | CODE | |
| LOW | searx/plugins/unit_converter.py | 23 | CODE | |
| LOW | searx/plugins/unit_converter.py | 24 | CODE | |
| LOW | searx/plugins/_core.py | 20 | CODE | |
| LOW | searx/plugins/_core.py | 21 | CODE | |
| LOW | searx/plugins/_core.py | 21 | CODE | |
| LOW | searx/plugins/_core.py | 21 | CODE | |
| LOW | searx/plugins/_core.py | 22 | CODE | |
| LOW | searx/plugins/calculator.py | 11 | CODE | |
| LOW | searx/plugins/ahmia_filter.py | 14 | CODE | |
| LOW | searx/plugins/ahmia_filter.py | 15 | CODE | |
| LOW | searx/plugins/ahmia_filter.py | 16 | CODE | |
| LOW | searx/plugins/ahmia_filter.py | 17 | CODE | |
| LOW | searx/plugins/ahmia_filter.py | 18 | CODE | |
| LOW | searx/plugins/hash_plugin.py | 14 | CODE | |
| 209 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | searxng_extra/update/update_engine_descriptions.py | 225 | def fetch_wikidata_descriptions(): | STRING |
| LOW | searxng_extra/update/update_engine_descriptions.py | 250 | def fetch_wikipedia_descriptions(): | STRING |
| LOW | searxng_extra/update/update_engine_descriptions.py | 293 | def fetch_website_description(engine_name: str, website: str): | STRING |
| LOW | searxng_extra/update/update_engine_descriptions.py | 346 | def fetch_website_descriptions(): | STRING |
| LOW | searxng_extra/update/update_engine_descriptions.py | 354 | def get_engine_descriptions_filename(): | STRING |
| LOW | searxng_extra/update/update_firefox_version.py | 60 | def fetch_firefox_last_versions(): | CODE |
| LOW | searxng_extra/update/update_currencies.py | 92 | def wikidata_request_result_iterator(request): | STRING |
| LOW | searx/external_bang.py | 30 | def get_bang_definition_and_ac(external_bangs_db: dict[str, t.Any], bang: str): | CODE |
| LOW | searx/external_bang.py | 64 | def get_bang_definition_and_autocomplete( | CODE |
| LOW | searx/external_urls.py | 56 | def get_earth_coordinates_url(latitude, longitude, osm_zoom, alternative='default'): | CODE |
| LOW | searx/query.py | 311 | def get_autocomplete_full_query(self, text): | CODE |
| LOW | searx/utils.py | 479 | def get_string_replaces_function(replaces: dict[str, str]) -> Callable[[str], str]: | CODE |
| LOW | searx/exceptions.py | 82 | def _get_default_suspended_time(self) -> int: | CODE |
| LOW | searx/webadapter.py | 16 | def deduplicate_engineref_list(engineref_list: List[EngineRef]) -> List[EngineRef]: | CODE |
| LOW | searx/webadapter.py | 158 | def get_engineref_from_category_list( # pylint: disable=invalid-name | CODE |
| LOW | searx/webadapter.py | 221 | def get_search_query_from_webapp( | CODE |
| LOW | searx/metrics/error_recorder.py | 110 | def get_request_exception_messages( | CODE |
| LOW | searx/plugins/hostnames.py | 161 | def _load_regular_expressions(self, settings_key) -> dict[re.Pattern, str] | set | None: | CODE |
| LOW | searx/network/raise_for_httperror.py | 33 | def raise_for_cloudflare_captcha(resp: "SXNG_Response"): | CODE |
| LOW | searx/network/client.py | 114 | def get_transport_for_socks_proxy( | CODE |
| LOW | searx/network/network.py | 239 | def extract_do_raise_for_httperror(kwargs: dict[str, t.Any]): | CODE |
| LOW | searx/network/network.py | 318 | def check_network_configuration(): | CODE |
| LOW | searx/search/processors/abstract.py | 235 | def extend_container_if_suspended(self, result_container: "ResultContainer") -> bool: | CODE |
| LOW | searx/engines/elasticsearch.py | 116 | def _simple_query_string_query(query): | CODE |
| LOW | searx/engines/command.py | 156 | def _get_results_from_process(res: EngineResults, cmd, pageno): | CODE |
| LOW | searx/engines/swisscows.py | 98 | def caesar_shift_with_switch_case(s: str, offset: int = 13) -> str: | CODE |
| LOW | searx/engines/swisscows.py | 131 | def generate_nonce_and_signature(base_path: str, args: dict[str, t.Any]) -> tuple[str, str]: | CODE |
| LOW | searx/engines/__init__.py | 235 | def update_attributes_for_tor(engine: "Engine | types.ModuleType"): | CODE |
| LOW | searx/engines/__init__.py | 241 | def is_missing_required_attributes(engine: "Engine | types.ModuleType"): | CODE |
| LOW | searx/engines/luxxle.py | 120 | def _extract_url_from_redirect(url: str): | CODE |
| LOW | searx/engines/sogou.py | 118 | def _parse_results_with_image(item, item_html): | CODE |
| LOW | searx/engines/fireball.py | 62 | def _get_search_settings_cookie(params: 'OnlineParams') -> str: | CODE |
| LOW | searx/engines/google_cse.py | 85 | def _get_start_and_end_date_str(time_range: str) -> tuple[str, str]: | CODE |
| LOW | searx/engines/wikidata.py | 820 | def debug_explain_wikidata_query(query: str, method: str = "GET"): | CODE |
| LOW | searx/engines/quark.py | 241 | def parse_life_show_general_image(data): | CODE |
| LOW | searx/engines/quark.py | 367 | def parse_travel_dest_overview(data): | CODE |
| LOW | searx/engines/quark.py | 375 | def parse_travel_ranking_list(data): | CODE |
| LOW | searx/engines/youtube_noapi.py | 110 | def parse_first_page_response(response_text): | CODE |
| LOW | searx/botdetection/ip_lists.py | 73 | def ip_is_subnet_of_member_in_list( | CODE |
| LOW | tests/unit/test_webadapter.py | 26 | def test_with_incorrect_token(self): | CODE |
| LOW | tests/unit/test_webutils.py | 31 | def test_highlight_content_none(self, content, query, expected): | CODE |
| LOW | tests/unit/test_webutils.py | 34 | def test_highlight_content_same(self): | CODE |
| LOW | tests/unit/test_webutils.py | 77 | def test_highlight_content_equal(self, query: str, content: str, expected: str): | CODE |
| LOW⚡ | tests/unit/test_utils.py | 53 | def test_extract_text_allow_none(self): | STRING |
| LOW⚡ | tests/unit/test_utils.py | 56 | def test_extract_text_error_none(self): | STRING |
| LOW⚡ | tests/unit/test_utils.py | 60 | def test_extract_text_error_empty(self): | STRING |
| LOW⚡ | tests/unit/test_utils.py | 95 | def test_html_to_text_with_a_style_span(self): | STRING |
| LOW | tests/unit/test_utils.py | 147 | def test_eval_xpath_unregistered_function(self): | CODE |
| LOW⚡ | tests/unit/test_preferences.py | 33 | def test_map_setting_invalid_default_value(self): | CODE |
| LOW⚡ | tests/unit/test_preferences.py | 37 | def test_map_setting_invalid_choice(self): | CODE |
| LOW⚡ | tests/unit/test_preferences.py | 42 | def test_map_setting_valid_default(self): | CODE |
| LOW⚡ | tests/unit/test_preferences.py | 46 | def test_map_setting_valid_choice(self): | CODE |
| LOW⚡ | tests/unit/test_preferences.py | 54 | def test_enum_setting_invalid_default_value(self): | CODE |
| LOW⚡ | tests/unit/test_preferences.py | 58 | def test_enum_setting_invalid_choice(self): | CODE |
| LOW⚡ | tests/unit/test_preferences.py | 63 | def test_enum_setting_valid_default(self): | CODE |
| LOW⚡ | tests/unit/test_preferences.py | 67 | def test_enum_setting_valid_choice(self): | CODE |
| LOW⚡ | tests/unit/test_preferences.py | 75 | def test_multiple_setting_invalid_default_value(self): | CODE |
| LOW⚡ | tests/unit/test_preferences.py | 79 | def test_multiple_setting_invalid_choice(self): | CODE |
| LOW⚡ | tests/unit/test_preferences.py | 84 | def test_multiple_setting_valid_default(self): | CODE |
| LOW⚡ | tests/unit/test_preferences.py | 88 | def test_multiple_setting_valid_choice(self): | CODE |
| 47 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | searx/plugins/oa_doi_rewrite.py | 0 | returns bool ``true`` to use url unchanged (``false`` to ignore url). if url should be modified, the returned string is | STRING |
| HIGH | searx/plugins/hostnames.py | 0 | returns bool ``true`` to use url unchanged (``false`` to ignore url). if url should be modified, the returned string is | STRING |
| HIGH | searx/plugins/tracker_url_remover.py | 0 | returns bool ``true`` to use url unchanged (``false`` to ignore url). if url should be modified, the returned string is | STRING |
| HIGH | searx/engines/wolframalpha_noapi.py | 0 | persistent (sqlite) key/value cache that deletes its values after ``expire`` seconds. | STRING |
| HIGH | searx/engines/radio_browser.py | 0 | persistent (sqlite) key/value cache that deletes its values after ``expire`` seconds. | STRING |
| HIGH | searx/engines/demo_offline.py | 0 | persistent (sqlite) key/value cache that deletes its values after ``expire`` seconds. | STRING |
| HIGH | searx/engines/azure.py | 0 | persistent (sqlite) key/value cache that deletes its values after ``expire`` seconds. | STRING |
| HIGH | searx/engines/soundcloud.py | 0 | persistent (sqlite) key/value cache that deletes its values after ``expire`` seconds. | STRING |
| HIGH | searx/engines/semantic_scholar.py | 0 | persistent (sqlite) key/value cache that deletes its values after ``expire`` seconds. | STRING |
| HIGH | searx/engines/startpage.py | 0 | persistent (sqlite) key/value cache that deletes its values after ``expire`` seconds. | STRING |
| HIGH | searx/engines/duckduckgo.py | 0 | persistent (sqlite) key/value cache that deletes its values after ``expire`` seconds. | STRING |
| HIGH | searx/engines/wikidata.py | 0 | persistent (sqlite) key/value cache that deletes its values after ``expire`` seconds. | STRING |
| HIGH | searx/engines/astrophysics_data_system.py | 0 | initialization of the core_ engine, checks whether the :py:obj:`api_key` is set, otherwise the engine is inactive. | STRING |
| HIGH | searx/engines/springer.py | 0 | initialization of the core_ engine, checks whether the :py:obj:`api_key` is set, otherwise the engine is inactive. | STRING |
| HIGH | searx/engines/core.py | 0 | initialization of the core_ engine, checks whether the :py:obj:`api_key` is set, otherwise the engine is inactive. | STRING |
| HIGH | searx/engines/google_images.py | 0 | `google max 50 pages`_ .. _google max 50 pages: https://github.com/searxng/searxng/issues/2982 | STRING |
| HIGH | searx/engines/google.py | 0 | `google max 50 pages`_ .. _google max 50 pages: https://github.com/searxng/searxng/issues/2982 | STRING |
| HIGH | searx/engines/google_scholar.py | 0 | `google max 50 pages`_ .. _google max 50 pages: https://github.com/searxng/searxng/issues/2982 | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | searxng_extra/update/update_engine_descriptions.py | 225 | CODE | |
| LOW | searxng_extra/update/update_engine_descriptions.py | 250 | CODE | |
| LOW | searxng_extra/update/update_engine_descriptions.py | 358 | CODE | |
| LOW | searx/settings_defaults.py | 142 | CODE | |
| LOW | searx/babel_extract.py | 30 | CODE | |
| LOW | searx/results.py | 272 | CODE | |
| LOW | searx/results.py | 82 | CODE | |
| LOW | searx/results.py | 154 | CODE | |
| LOW | searx/results.py | 191 | CODE | |
| LOW | searx/settings_loader.py | 127 | CODE | |
| LOW | searx/preferences.py | 526 | CODE | |
| LOW | searx/preferences.py | 540 | CODE | |
| LOW | searx/utils.py | 595 | CODE | |
| LOW | searx/utils.py | 698 | CODE | |
| LOW | searx/webadapter.py | 117 | CODE | |
| LOW | searx/webadapter.py | 172 | CODE | |
| LOW | searx/metrics/models.py | 70 | CODE | |
| LOW | searx/metrics/models.py | 85 | CODE | |
| LOW | searx/favicons/cache.py | 381 | CODE | |
| LOW | searx/plugins/unit_converter.py | 47 | CODE | |
| LOW | searx/network/network.py | 336 | CODE | |
| LOW | searx/network/network.py | 122 | CODE | |
| LOW | searx/result_types/_base.py | 114 | CODE | |
| LOW | searx/result_types/file.py | 72 | CODE | |
| LOW | searx/search/__init__.py | 78 | CODE | |
| LOW | searx/engines/wolframalpha_noapi.py | 77 | CODE | |
| LOW | searx/engines/presearch.py | 248 | CODE | |
| LOW | searx/engines/uxwing.py | 28 | CODE | |
| LOW | searx/engines/tiger.py | 133 | CODE | |
| LOW | searx/engines/ccc_media.py | 29 | CODE | |
| LOW | searx/engines/tineye.py | 152 | CODE | |
| LOW | searx/engines/springer.py | 120 | CODE | |
| LOW | searx/engines/command.py | 156 | CODE | |
| LOW | searx/engines/command.py | 196 | CODE | |
| LOW | searx/engines/swisscows.py | 242 | CODE | |
| LOW | searx/engines/brave.py | 418 | CODE | |
| LOW | searx/engines/acfun.py | 36 | CODE | |
| LOW | searx/engines/github_code.py | 162 | CODE | |
| LOW | searx/engines/azure.py | 157 | CODE | |
| LOW | searx/engines/adobe_stock.py | 148 | CODE | |
| LOW | searx/engines/adobe_stock.py | 202 | CODE | |
| LOW | searx/engines/bing.py | 115 | CODE | |
| LOW | searx/engines/bing.py | 158 | CODE | |
| LOW | searx/engines/yandex.py | 88 | CODE | |
| LOW | searx/engines/google.py | 361 | CODE | |
| LOW | searx/engines/doku.py | 47 | CODE | |
| LOW | searx/engines/core.py | 89 | CODE | |
| LOW | searx/engines/bing_news.py | 80 | CODE | |
| LOW | searx/engines/startpagina.py | 52 | CODE | |
| LOW | searx/engines/tusksearch.py | 100 | CODE | |
| LOW | searx/engines/duckduckgo_definitions.py | 78 | CODE | |
| LOW | searx/engines/dogpile.py | 51 | CODE | |
| LOW | searx/engines/neosearch.py | 42 | CODE | |
| LOW | searx/engines/openstreetmap.py | 211 | CODE | |
| LOW | searx/engines/tokyotoshokan.py | 38 | CODE | |
| LOW | searx/engines/privacywall.py | 177 | CODE | |
| LOW | searx/engines/xpath.py | 278 | CODE | |
| LOW | searx/engines/jisho.py | 34 | CODE | |
| LOW | searx/engines/duckduckgo_extra.py | 187 | CODE | |
| LOW | searx/engines/startpage.py | 402 | CODE | |
| 19 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | searx/compat.py | 8 | # ------------------------------ | COMMENT |
| MEDIUM | searx/engines/google.py | 68 | # ------------------------ | COMMENT |
| MEDIUM | searx/engines/duckduckgo_extra.py | 94 | # ============ | COMMENT |
| MEDIUM | searx/engines/duckduckgo_extra.py | 108 | # ================ | COMMENT |
| MEDIUM | searx/engines/duckduckgo.py | 376 | # ============ | COMMENT |
| MEDIUM | searx/engines/duckduckgo.py | 396 | # =========================== | COMMENT |
| MEDIUM | utils/lib_nvm.sh | 16 | # ------------------------- | COMMENT |
| MEDIUM | utils/lib_nvm.sh | 24 | # ------------------------- | COMMENT |
| MEDIUM | utils/lib_nvm.sh | 55 | # ----------------------- | COMMENT |
| MEDIUM | utils/lib_nvm.sh | 89 | # -------------------------- | COMMENT |
| MEDIUM | utils/lib.sh | 757 | # ---------- | COMMENT |
| MEDIUM | utils/lib.sh | 852 | # --------------- | COMMENT |
| MEDIUM | utils/lib.sh | 1499 | # ------------------------ | COMMENT |
| MEDIUM | utils/lib.sh | 1596 | # ----------- | COMMENT |
| MEDIUM | utils/searxng.sh | 1011 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | utils/searxng.sh | 1013 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | utils/lib_govm.sh | 12 | # -------------------------------------- | COMMENT |
| MEDIUM | utils/lib_govm.sh | 28 | # ----------------------- | COMMENT |
| MEDIUM | utils/lib_govm.sh | 103 | # ----------------------------- | COMMENT |
| MEDIUM | utils/templates/etc/uwsgi/apps-available/searxng.ini | 5 | # ---------- | COMMENT |
| MEDIUM | utils/templates/etc/uwsgi/apps-available/searxng.ini | 58 | # -------------- | COMMENT |
| MEDIUM | utils/templates/etc/uwsgi/apps-available/searxng.ini | 73 | # ----------------- | COMMENT |
| MEDIUM | utils/templates/etc/uwsgi/apps-archlinux/searxng.ini | 5 | # ---------- | COMMENT |
| MEDIUM | utils/templates/etc/uwsgi/apps-archlinux/searxng.ini | 55 | # -------------- | COMMENT |
| MEDIUM | utils/templates/etc/uwsgi/apps-archlinux/searxng.ini | 70 | # ----------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | searxng_extra/__init__.py | 1 | # SPDX-License-Identifier: AGPL-3.0-or-later | COMMENT |
| LOW | searxng_extra/update/__init__.py | 1 | # SPDX-License-Identifier: AGPL-3.0-or-later | COMMENT |
| LOW | searx/sqlitedb.py | 301 | """ | COMMENT |
| LOW | searx/weather.py | 61 | COMMENT | |
| LOW | searx/utils.py | 701 | if js_obj_str == "": | COMMENT |
| LOW | searx/utils.py | 721 | # since JSON supports only double quote for string | COMMENT |
| LOW | searx/utils.py | 741 | # * the current part is a single quote | COMMENT |
| LOW | searx/locales.py | 341 | # language, then the percentage might be 100% (--> 100 people) but in | COMMENT |
| LOW | searx/settings.yml | 21 | docs_url: https://docs.searxng.org/ | COMMENT |
| LOW | searx/settings.yml | 41 | # Filter results. 0: None, 1: Moderate, 2: Strict | COMMENT |
| LOW | searx/settings.yml | 61 | # - de | COMMENT |
| LOW | searx/settings.yml | 121 | valkey: | COMMENT |
| LOW | searx/settings.yml | 141 | # Default interface locale - leave blank to detect from browser information or | COMMENT |
| LOW | searx/settings.yml | 161 | # - language | COMMENT |
| LOW | searx/settings.yml | 181 | # max_request_timeout: 10.0 | COMMENT |
| LOW | searx/settings.yml | 201 | # | COMMENT |
| LOW | searx/settings.yml | 261 | # Configuration of the "Hostnames plugin": | COMMENT |
| LOW | searx/settings.yml | 1401 | # kagi_categ: search | COMMENT |
| LOW | searx/settings.yml | 1961 | shortcut: pv | COMMENT |
| LOW | searx/settings.yml | 1981 | # image proxy of https://pixivfe.ducks.party | COMMENT |
| LOW | searx/settings.yml | 2121 | # timeout: 30.0 | COMMENT |
| LOW | searx/settings.yml | 2181 | # engine: valkey_server | COMMENT |
| LOW | searx/settings.yml | 2401 | # - name: mediathekview | COMMENT |
| LOW | searx/settings.yml | 2501 | # shortcut: tuba | COMMENT |
| LOW | searx/settings.yml | 2801 | # query_str: 'SELECT * from mytable WHERE fieldname=%(query)s' | COMMENT |
| LOW | searx/settings.yml | 3361 | # disabled: true | COMMENT |
| LOW | searx/settings.yml | 3381 | COMMENT | |
| LOW | searx/settings.yml | 3401 | # keys: ['filepath', 'code'] | COMMENT |
| LOW | searx/settings.yml | 3421 | # - name: find | COMMENT |
| LOW | searx/settings.yml | 3441 | # disabled: true | COMMENT |
| LOW | searx/favicons/favicons.toml | 21 | # HOLD_TIME = 5184000 # 60 days / default: 30 days | COMMENT |
| LOW | searx/engines/google.py | 181 | # '!go 日 :zh-TW' --> https://zh.m.wiktionary.org/zh-hant/%E6%97%A5 | COMMENT |
| LOW | searx/engines/google.py | 201 | # lr parameter: | COMMENT |
| LOW | searx/engines/google.py | 221 | # particular country. | COMMENT |
| LOW | searx/engines/google.py | 241 | # https://github.com/searxng/searxng/issues/2515#issuecomment-1606294635 | COMMENT |
| LOW | searx/engines/google.py | 321 | # 'vet': '12ahUKEwik3ZbIzfn7AhXMX_EDHbUDBh0QxK8CegQIARAC..i', | COMMENT |
| LOW | searx/engines/bing_news.py | 141 | # bing for this market. Alternatively we use the the market code from Honk | COMMENT |
| LOW | tests/unit/test_js_variable_to_python.py | 141 | ("[0]", [0]), | COMMENT |
| LOW | tests/unit/test_js_variable_to_python.py | 261 | # ("aaaaaaaaaaaaaaaa", []), | COMMENT |
| LOW | tests/unit/network/__init__.py | 1 | # SPDX-License-Identifier: AGPL-3.0-or-later | COMMENT |
| LOW | tests/unit/processors/__init__.py | 1 | # SPDX-License-Identifier: AGPL-3.0-or-later | COMMENT |
| LOW | tests/unit/engines/__init__.py | 1 | # SPDX-License-Identifier: AGPL-3.0-or-later | COMMENT |
| LOW | tests/robot/__init__.py | 1 | # SPDX-License-Identifier: AGPL-3.0-or-later | COMMENT |
| LOW | utils/lib_nvm.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | utils/lib_sxng_weblate.sh | 121 | pyenv.cmd wlc unlock | COMMENT |
| LOW | utils/lib.sh | 401 | echo | COMMENT |
| LOW | utils/lib.sh | 1601 | # usage: | COMMENT |
| LOW | utils/templates/etc/searxng/settings.yml | 21 | # by ${SEARXNG_BASE_URL}. | COMMENT |
| LOW | utils/templates/etc/searxng/settings.yml | 41 | # - name: mediathekviewweb | COMMENT |
| LOW | utils/templates/etc/uwsgi/apps-available/searxng.ini | 1 | # -*- mode: conf; coding: utf-8 -*- | COMMENT |
| LOW | utils/templates/etc/uwsgi/apps-available/searxng.ini | 41 | lazy-apps = true | COMMENT |
| LOW | utils/templates/etc/uwsgi/apps-archlinux/searxng.ini | 41 | plugin = python | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | searxng_extra/update/update_engine_descriptions.py | 145 | except Exception as e: # pylint: disable=broad-except | STRING |
| LOW | searxng_extra/update/update_engine_descriptions.py | 174 | except Exception: # pylint: disable=broad-except | STRING |
| LOW | searx/settings_defaults.py | 168 | except Exception as e: # pylint: disable=broad-except | CODE |
| LOW | searx/webapp.py | 188 | except Exception as e: # pylint: disable=broad-except | CODE |
| LOW | searx/webapp.py | 476 | except Exception as e: # pylint: disable=broad-except | CODE |
| LOW | searx/webapp.py | 492 | except Exception as e: # pylint: disable=broad-except | CODE |
| LOW | searx/webapp.py | 658 | except Exception as e: # pylint: disable=broad-except | CODE |
| LOW | searx/sqlitedb.py | 87 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| MEDIUM | searx/sqlitedb.py | 77 | def __del__(self): | CODE |
| LOW | searx/plugins/_core.py | 222 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| LOW | searx/plugins/_core.py | 259 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | searx/plugins/_core.py | 273 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | searx/plugins/_core.py | 301 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | searx/enginelib/traits.py | 219 | except Exception as exc: | CODE |
| LOW | searx/network/__init__.py | 132 | except Exception as e: # pylint: disable=broad-except | CODE |
| LOW | searx/network/__init__.py | 219 | except Exception as e: # pylint: disable=broad-except | CODE |
| LOW | searx/network/network.py | 325 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | searx/result_types/_base.py | 133 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| LOW | searx/result_types/image.py | 106 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| LOW | searx/search/processors/abstract.py | 159 | except Exception as e: # pylint: disable=broad-except | CODE |
| LOW | searx/search/processors/online.py | 282 | except Exception as e: # pylint: disable=broad-except | CODE |
| LOW | searx/search/processors/offline.py | 30 | except Exception as e: # pylint: disable=broad-except | CODE |
| LOW | searx/engines/elasticsearch.py | 110 | except Exception as e: | CODE |
| LOW | searx/engines/elasticsearch.py | 135 | except Exception as e: | CODE |
| LOW | searx/engines/elasticsearch.py | 150 | except Exception as e: | CODE |
| LOW | searx/engines/radio_browser.py | 72 | except Exception: | CODE |
| LOW | searx/engines/360search_videos.py | 35 | except Exception as e: | CODE |
| MEDIUM | searx/engines/360search_videos.py | 32 | def response(resp): | CODE |
| LOW | searx/engines/sogou_videos.py | 39 | except Exception as e: | CODE |
| MEDIUM | searx/engines/sogou_videos.py | 36 | def response(resp): | CODE |
| LOW | searx/engines/chinaso.py | 111 | except Exception as e: | CODE |
| MEDIUM | searx/engines/chinaso.py | 108 | def response(resp): | CODE |
| LOW | searx/engines/solr.py | 79 | except Exception as e: | CODE |
| LOW | searx/engines/iqiyi.py | 64 | except Exception as e: | CODE |
| MEDIUM | searx/engines/iqiyi.py | 61 | def response(resp): | CODE |
| LOW | searx/engines/__init__.py | 283 | except Exception as e: # pylint: disable=broad-except | CODE |
| LOW | searx/engines/google.py | 417 | except Exception as e: # pylint: disable=broad-except | CODE |
| LOW | searx/engines/wikidata.py | 431 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | searx/engines/wikidata.py | 840 | except Exception: | CODE |
| LOW | searx/engines/wikipedia.py | 172 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | tests/robot/__main__.py | 61 | except Exception: # pylint: disable=broad-except | CODE |
| MEDIUM | tests/robot/__main__.py | 62 | print('Error occurred: {0}'.format(traceback.format_exc())) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | searxng_extra/update/update_engine_descriptions.py | 96 | def update_description(engine_name: str, lang: str, description: str, source: str, replace: bool = True) -> None: | STRING |
| LOW | searx/valkeydb.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | searx/external_bang.py | 4 | __all__ = ["get_bang_url"] | CODE |
| LOW | searx/weather.py | 5 | __all__ = [ | CODE |
| LOW | searx/cache.py | 8 | __all__ = ["ExpireCacheCfg", "ExpireCacheStats", "ExpireCache", "ExpireCacheSQLite"] | CODE |
| LOW | searx/extended_types.py | 24 | __all__ = ["SXNG_Request", "sxng_request", "SXNG_Response"] | CODE |
| LOW | searx/wikidata_units.py | 9 | __all__ = ["convert_from_si", "convert_to_si", "symbol_to_si"] | CODE |
| LOW | searx/autocomplete.py | 31 | def update_kwargs(**kwargs) -> None: # type: ignore | CODE |
| LOW | searx/brand.py | 9 | __all__ = ["SettingsBrand"] | CODE |
| LOW | searx/metrics/models.py | 12 | __all__ = ["Histogram", "HistogramStorage", "CounterStorage"] | CODE |
| LOW | searx/metrics/__init__.py | 13 | __all__ = [ | CODE |
| LOW | searx/answerers/__init__.py | 42 | __all__ = ["AnswererInfo", "Answerer", "AnswerStorage"] | CODE |
| LOW | searx/favicons/resolvers.py | 10 | __all__ = ["DEFAULT_RESOLVER_MAP", "allesedv", "duckduckgo", "google", "yandex"] | CODE |
| LOW | searx/favicons/__init__.py | 12 | __all__ = ["init", "favicon_url", "favicon_proxy"] | CODE |
| LOW | searx/plugins/__init__.py | 98 | __all__ = ["PluginInfo", "Plugin", "PluginStorage", "PluginCfg"] | CODE |
| LOW | searx/plugins/_core.py | 4 | __all__ = ["PluginInfo", "Plugin", "PluginCfg", "PluginStorage"] | CODE |
| LOW | searx/enginelib/__init__.py | 27 | __all__ = ["EngineCache", "Engine", "EngineAbout", "ENGINES_CACHE"] | CODE |
| LOW | searx/enginelib/traits.py | 138 | def set_traits(self, engine: "Engine | types.ModuleType") -> None: | CODE |
| LOW | searx/enginelib/traits.py | 149 | def _set_traits_v1(self, engine: "Engine") -> None: | CODE |
| LOW | searx/infopage/__init__.py | 21 | __all__ = ['InfoPage', 'InfoPageSet'] | CODE |
| LOW | searx/network/__init__.py | 4 | __all__ = ["get_network", "initialize", "check_network_configuration", "raise_for_httperror"] | CODE |
| LOW | searx/network/network.py | 5 | __all__ = ["get_network"] | CODE |
| LOW | searx/result_types/_base.py | 19 | __all__ = ["Result"] | CODE |
| LOW | searx/result_types/keyvalue.py | 17 | __all__ = ["KeyValue"] | CODE |
| LOW | searx/result_types/answer.py | 32 | __all__ = ["AnswerSet", "Answer", "Translations", "WeatherAnswer"] | CODE |
| LOW | searx/result_types/code.py | 17 | __all__ = ["Code"] | CODE |
| LOW | searx/result_types/paper.py | 24 | __all__ = ["Paper"] | CODE |
| LOW | searx/result_types/__init__.py | 15 | __all__ = [ | CODE |
| LOW | searx/result_types/file.py | 17 | __all__ = ["File"] | CODE |
| LOW | searx/result_types/image.py | 15 | __all__ = ["Image", "ImageRef"] | CODE |
| LOW | searx/search/__init__.py | 4 | __all__ = ["SearchWithPlugins"] | CODE |
| LOW | searx/search/processors/online.py | 4 | __all__ = ["OnlineProcessor", "OnlineParams"] | CODE |
| LOW | searx/search/processors/__init__.py | 4 | __all__ = [ | CODE |
| LOW | searx/engines/duckduckgo.py | 230 | def set_vqd(query: str | int, value: str, params: "OnlineParams") -> None: | CODE |
| LOW | searx/data/tracker_patterns.py | 7 | __all__ = ["TrackerPatternsDB"] | CODE |
| LOW | searx/data/__init__.py | 9 | __all__ = ["ahmia_blacklist_loader", "data_dir", "get_cache"] | CODE |
| LOW | searx/data/currencies.py | 4 | __all__ = ["CurrenciesDB"] | CODE |
| LOW | searx/botdetection/valkeydb.py | 7 | __all__ = ["set_valkey_client", "get_valkey_client"] | CODE |
| LOW | searx/botdetection/config.py | 18 | __all__ = ['Config', 'UNSET', 'SchemaIssue', 'set_global_cfg', 'get_global_cfg'] | CODE |
| LOW | searx/botdetection/__init__.py | 9 | __all__ = ["init", "dump_request", "get_network", "too_many_requests", "ProxyFix"] | CODE |
| LOW | searx/botdetection/_helpers.py | 6 | __all__ = ["log_error_only_once", "dump_request", "get_network", "logger", "too_many_requests"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | searx/utils.py | 160 | >>> html_to_text(r'<p><b>Lorem ipsum </i>dolor sit amet</p>') | STRING |
| LOW⚡ | searx/utils.py | 160 | >>> html_to_text(r'<p><b>Lorem ipsum </i>dolor sit amet</p>') | STRING |
| LOW⚡ | searx/utils.py | 161 | 'Lorem ipsum </i>dolor sit amet</p>' | STRING |
| LOW⚡ | searx/utils.py | 161 | 'Lorem ipsum </i>dolor sit amet</p>' | STRING |
| LOW | searx/infopage/fa_IR/search-syntax.md | 63 | - {{search('md5 lorem ipsum')}} | CODE |
| LOW | searx/infopage/fa_IR/search-syntax.md | 64 | - {{search('sha512 lorem ipsum')}} | CODE |
| LOW | searx/infopage/it/search-syntax.md | 88 | - {{search('md5 lorem ipsum')}} | CODE |
| LOW | searx/infopage/it/search-syntax.md | 89 | - {{search('sha512 lorem ipsum')}} | CODE |
| LOW | searx/infopage/de/search-syntax.md | 92 | - {{search('md5 lorem ipsum')}} | CODE |
| LOW | searx/infopage/de/search-syntax.md | 93 | - {{search('sha512 lorem ipsum')}} | CODE |
| LOW | searx/infopage/fr/search-syntax.md | 96 | - {{search('md5 lorem ipsum')}} | CODE |
| LOW | searx/infopage/fr/search-syntax.md | 97 | - {{search('sha512 lorem ipsum')}} | CODE |
| LOW | searx/infopage/en/search-syntax.md | 83 | - {{search('md5 lorem ipsum')}} | CODE |
| LOW | searx/infopage/en/search-syntax.md | 84 | - {{search('sha512 lorem ipsum')}} | CODE |
| LOW | searx/result_types/__init__.py | 85 | res.add( res.types.Answer(answer="lorem ipsum ..", url="https://example.org") ) | STRING |
| LOW | searx/engines/github_code.py | 153 | params['headers']['Authorization'] = "placeholder" | CODE |
| LOW⚡ | tests/unit/test_utils.py | 88 | (r'<p><b>Lorem ipsum </i>dolor sit amet</p>', 'Lorem ipsum </i>dolor sit amet</p>'), | STRING |
| LOW⚡ | tests/unit/test_utils.py | 88 | (r'<p><b>Lorem ipsum </i>dolor sit amet</p>', 'Lorem ipsum </i>dolor sit amet</p>'), | STRING |
| LOW | tests/unit/test_results.py | 33 | result = dict(suggestion="lorem ipsum ..") | CODE |
| LOW⚡ | tests/unit/test_results.py | 46 | url="https://example.org", title="very long title, lorem ipsum", content="Lorem ipsum dolor sit amet .." | CODE |
| LOW⚡ | tests/unit/test_results.py | 46 | url="https://example.org", title="very long title, lorem ipsum", content="Lorem ipsum dolor sit amet .." | CODE |
| LOW⚡ | tests/unit/test_results.py | 50 | eng2 = dict(url="http://example.org", title=result.title, content="lorem ipsum", engine="duckduckgo") | CODE |
| LOW | tests/unit/test_plugins.py | 104 | get_search_mock("lorem ipsum", user_plugins=["plg001", "plg002"]), | CODE |
| LOW | tests/unit/test_engine_github_code.py | 91 | "fragment": "placeholder", | CODE |
| LOW | tests/unit/test_engine_github_code.py | 96 | "placeholder", | CODE |
| LOW | tests/unit/test_plugin_self_info.py | 121 | "USER-AgenT lorem ipsum", | CODE |
| LOW | tests/unit/network/test_network.py | 114 | a_text = 'Lorem Ipsum' | CODE |
| LOW | tests/unit/network/test_network.py | 125 | TEXT = 'Lorem Ipsum' | CODE |
| LOW | tests/unit/network/test_network.py | 201 | TEXT = 'Lorem Ipsum' | CODE |
| LOW | utils/lib.sh | 151 | # usage: RST_INDENT=1 rst_para "lorem ipsum ..." | COMMENT |
| LOW⚡ | docs/dev/csv_table.txt | 1 | stub col row 1, column, "loremLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy | CODE |
| LOW⚡ | docs/dev/csv_table.txt | 1 | stub col row 1, column, "loremLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy | CODE |
| LOW⚡ | docs/dev/csv_table.txt | 5 | kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", column | CODE |
| LOW⚡ | docs/dev/csv_table.txt | 5 | kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", column | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | searx/webapp.py | 857 | """Render preferences page && save user preferences""" | STRING |
| HIGH | searx/engines/yandex.py | 114 | html_sample, '{"location":"/images/search/', 'advRsyaSearchColumn":null}}', default="fail" | CODE |
| HIGH | searx/engines/yandex.py | 116 | json_data = '{"location":"/images/search/' + content_between_tags + 'advRsyaSearchColumn":null}}' | CODE |
| HIGH | searx/engines/seekninja.py | 54 | sha256(nonce || solution).startswith("0" * leading) | STRING |
| HIGH | tests/unit/test_js_variable_to_python.py | 80 | ("{'a': true, 'b': false, 'c': null}", {'a': True, 'b': False, 'c': None}), | CODE |
| HIGH⚡ | tests/unit/test_js_variable_to_python.py | 113 | ('{"a": undefined}', {"a": None}), # chompjs returns {"a": "undefined"} | CODE |
| HIGH⚡ | tests/unit/test_js_variable_to_python.py | 114 | ('[undefined, undefined]', [None, None]), # chompjs returns ["undefined", "undefined"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | searx/utils.py | 142 | Extract text from a HTML string Args: * html_str (str): string HTML Returns: * str: extracted | STRING |
| HIGH | searx/utils.py | 183 | Extract text from a Markdown string Args: * markdown_str (str): string Markdown Returns: * str | STRING |
| HIGH | searx/utils.py | 250 | Normalize URL: add protocol, join URL with base_url, add trailing slash if there is no path Args: * url (st | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | searx/webapp.py | 1034 | # we make sure to close the response between searxng and the HTTP server | COMMENT |
| MEDIUM | searx/settings.yml | 277 | # Alternatively you can use external files for configuring the "Hostnames plugin": | COMMENT |
| MEDIUM | searx/engines/meilisearch.py | 23 | Here is a simple example to query a Meilisearch instance: | STRING |
| MEDIUM | searx/engines/xpath.py | 55 | Here is a simple example of a XPath engine configured in the :ref:`settings | STRING |
| MEDIUM | searx/engines/json_engine.py | 57 | Here is a simple example of a JSON engine configure in the :ref:`settings | STRING |
| LOW | utils/lib_sxng_weblate.sh | 119 | ( # make sure to always unlock weblate | CODE |
| LOW | utils/lib_sxng_weblate.sh | 221 | ( # make sure to always unlock weblate | CODE |
| MEDIUM | utils/lib.sh | 417 | # replacements you can use:: | COMMENT |
| LOW | utils/searxng.sh | 363 | info_msg "Don't forget to install HTTP site." | CODE |
| LOW | utils/searxng.sh | 386 | MSG="** Don't forget to remove your public site! (${SEARXNG_URL}) **" wait_key 10 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | searx/babel_extract.py | 2 | """This module implements the :origin:`searxng_msg <babel.cfg>` extractor to | STRING |
| MEDIUM | searx/extended_types.py | 2 | """This module implements the type extensions applied by SearXNG. | STRING |
| MEDIUM | searx/autocomplete.py | 2 | """This module implements functions needed for the autocompleter.""" | STRING |
| MEDIUM | searx/search/processors/online.py | 119 | """This method is called in a thread, and before the base method is | STRING |
| MEDIUM | searx/engines/zlibrary.py | 230 | # Create a Locale object for the current locale | COMMENT |
| MEDIUM | searx/engines/wikidata.py | 2 | """This module implements the Wikidata engine. | STRING |
| MEDIUM | searx/engines/wikipedia.py | 2 | """This module implements the Wikipedia engine. Some of this implementations | STRING |
| MEDIUM | searx/botdetection/link_token.py | 94 | """This function is called by a request to URL ``/client<token>.css``. If | STRING |
| MEDIUM | searx/botdetection/link_token.py | 146 | # This function is also called when limiter is inactive / no valkey DB | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | searx/preferences.py | 199 | """Setting of a value that has to be translated in order to be storable""" | STRING |
| MEDIUM | searx/preferences.py | 228 | """Setting of a boolean value that has to be translated in order to be storable""" | STRING |
| LOW | searx/favicons/resolvers.py | 33 | # will just return a 200 regardless of the favicon existing or not | COMMENT |
| LOW | searx/favicons/proxy.py | 142 | # if resolver is empty or not valid, just return HTTP 400. | COMMENT |
| LOW | searx/favicons/proxy.py | 219 | # if resolver is empty or not valid, just return nothing. | COMMENT |
| LOW | searx/search/processors/abstract.py | 281 | # search processor, just pass the value from user's choice unchanged to | COMMENT |
| MEDIUM | searx/engines/postgresql.py | 2 | """PostgreSQL is a powerful and robust open source database. Before configuring | STRING |
| MEDIUM | searx/engines/core.py | 2 | """CORE_ (COnnecting REpositories) provides a comprehensive bibliographic | STRING |
| MEDIUM | searx/engines/recoll.py | 130 | # facilitate preview support for known mime types | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | utils/lib_sxng_container.sh | 23 | # Check if podman or docker is installed | COMMENT |
| LOW | utils/lib_sxng_container.sh | 76 | # Check if it is a git repository | COMMENT |
| LOW | container/entrypoint.sh | 5 | # Check if it's a valid file | COMMENT |
| LOW | container/entrypoint.sh | 20 | # Check if it's a valid directory | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | searx/webutils.py | 174 | CODE | |
| LOW | searx/network/network.py | 68 | CODE | |
| LOW | searx/search/models.py | 31 | CODE | |
| LOW | searx/engines/genius.py | 71 | CODE | |
| LOW | tests/unit/test_plugins.py | 39 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | searx/engines/braveapi.py | 21 | api_key: 'YOUR-API-KEY' # required | STRING |