Repository Analysis

smicallef/spiderfoot

SpiderFoot automates OSINT for threat intelligence and mapping your attack surface.

26.6 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of smicallef/spiderfoot, a Python project with 20,523 GitHub stars. SynthScan v2.0 examined 98,643 lines of code across 764 source files, recording 1475 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 26.6 places this repository in the Moderate 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).

26.6
Adjusted Score
26.6
Raw Score
100%
Time Factor
2026-04-13
Last Push
20.5K
Stars
Python
Language
98.6K
Lines of Code
764
Files
1.5K
Pattern Hits
2026-08-13
Scan Date
0.05
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

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.

CRITICAL 0HIGH 41MEDIUM 495LOW 939

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 1475 distinct pattern matches across 12 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.

Decorative Section Separators478 hits · 1431 pts
SeverityFileLineSnippetContext
MEDIUMsf.py3# -------------------------------------------------------------------------------COMMENT
MEDIUMsf.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMsflib.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMsflib.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMsfwebui.py2# -----------------------------------------------------------------COMMENT
MEDIUMsfwebui.py11# -----------------------------------------------------------------COMMENT
MEDIUMsfcli.py3# -------------------------------------------------------------------------------COMMENT
MEDIUMsfcli.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMsfscan.py2# -----------------------------------------------------------------COMMENT
MEDIUMsfscan.py11# -----------------------------------------------------------------COMMENT
MEDIUMspiderfoot/db.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMspiderfoot/db.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_opennic.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_opennic.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_commoncrawl.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_commoncrawl.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_citadel.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_citadel.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_dnsraw.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_dnsraw.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_cinsscore.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_cinsscore.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_myspace.py1# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_myspace.py10# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_tool_onesixtyone.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_tool_onesixtyone.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_junkfiles.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_junkfiles.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_cloudflaredns.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_cloudflaredns.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_surbl.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_surbl.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_urlscan.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_urlscan.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_archiveorg.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_archiveorg.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_bitcoinwhoswho.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_bitcoinwhoswho.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_greynoise_community.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_greynoise_community.py13# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_fullhunt.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_fullhunt.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_apple_itunes.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_apple_itunes.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_bitcoinabuse.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_bitcoinabuse.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_isc.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_isc.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_accounts.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_accounts.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_openphish.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_openphish.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_tool_retirejs.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_tool_retirejs.py11# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_spyonweb.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_spyonweb.py12# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_hackertarget.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_hackertarget.py13# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_securitytrails.py2# -------------------------------------------------------------------------------COMMENT
MEDIUMmodules/sfp_securitytrails.py11# -------------------------------------------------------------------------------COMMENT
418 more matches not shown…
Excessive Try-Catch Wrapping327 hits · 333 pts
SeverityFileLineSnippetContext
LOWsf.py165 except Exception as e:CODE
LOWsf.py177 except Exception as e:CODE
LOWsf.py194 except Exception as e:CODE
LOWsflib.py165 except Exception as e:CODE
LOWsflib.py1238 except Exception:CODE
LOWsflib.py1287 except Exception as e:CODE
LOWsflib.py1331 except Exception as e:CODE
LOWsflib.py1372 except Exception as e:CODE
LOWsflib.py1397 except Exception as e:CODE
LOWsflib.py1429 except Exception as e:CODE
LOWsflib.py1526 except Exception:CODE
LOWsflib.py1531 except Exception:CODE
LOWsfwebui.py265 except Exception:CODE
LOWsfwebui.py346 except Exception:CODE
LOWsfwebui.py386 except Exception:CODE
LOWsfwebui.py391 except Exception:CODE
LOWsfwebui.py843 except Exception as e:CODE
LOWsfwebui.py897 except Exception as e:CODE
LOWsfwebui.py1125 except Exception as e:CODE
LOWsfwebui.py1149 except Exception as e:CODE
LOWsfwebui.py1191 except Exception as e:CODE
LOWsfwebui.py1206 except Exception:CODE
LOWsfwebui.py1232 except Exception:CODE
LOWsfwebui.py1371 except Exception as e:CODE
LOWsfwebui.py1491 except Exception as e:CODE
LOWsfwebui.py1553 except Exception as e:CODE
LOWsfwebui.py1579 except Exception:CODE
LOWsfwebui.py1605 except Exception:CODE
LOWsfwebui.py1704 except Exception:CODE
LOWsfwebui.py1709 except Exception:CODE
LOWsfwebui.py1737 except Exception:CODE
LOWsfwebui.py1768 except Exception:CODE
LOWsfwebui.py1807 except Exception:CODE
LOWsfwebui.py1831 except Exception:CODE
LOWsfwebui.py1852 except Exception:CODE
LOWsfwebui.py1876 except Exception:CODE
LOWsfcli.py416 except Exception as e:CODE
MEDIUMsfcli.py417 self.edprint(f"Error parsing command: {e}")CODE
MEDIUMsfcli.py550 self.edprint(f"Error running your query: {j[1]}")CODE
LOWsfcli.py850 except Exception as e:CODE
MEDIUMsfcli.py1223 self.edprint("Error fetching SpiderFoot server-side config.")CODE
MEDIUMsfcli.py1314 self.edprint(f"Error setting SpiderFoot server-side config: {j[1]}")CODE
LOWsfscan.py296 except Exception:CODE
LOWsfscan.py313 except Exception:CODE
LOWsfscan.py322 except Exception as e:CODE
LOWsfscan.py330 except Exception as e:CODE
LOWsfscan.py339 except Exception as e:CODE
LOWsfscan.py346 except Exception as e:CODE
LOWsfscan.py354 except Exception as e:CODE
LOWsfscan.py534 except Exception:CODE
LOWsfscan.py544 except Exception:CODE
LOWsfscan.py553 except Exception:CODE
LOWspiderfoot/db.py319 except Exception as e:CODE
LOWspiderfoot/db.py345 except Exception:CODE
LOWspiderfoot/db.py359 except Exception as e:CODE
LOWspiderfoot/db.py390 except Exception:CODE
LOWspiderfoot/threadpool.py257 except Exception: # noqa: B902CODE
LOWspiderfoot/plugin.py389 except Exception as e:CODE
LOWspiderfoot/plugin.py524 except Exception as e:CODE
MEDIUMspiderfoot/plugin.py498def threadWorker(self) -> None:CODE
267 more matches not shown…
Over-Commented Block239 hits · 238 pts
SeverityFileLineSnippetContext
LOWsf.py1#!/usr/bin/env python3COMMENT
LOWsflib.py1# -*- coding: utf-8 -*-COMMENT
LOWsfwebui.py1# -*- coding: utf-8 -*-COMMENT
LOWdocker-compose.yml1version: "3"COMMENT
LOWsfcli.py1#!/usr/bin/env python3COMMENT
LOWsfscan.py1# -*- coding: utf-8 -*-COMMENT
LOWspiderfoot/db.py1# -*- coding: utf-8 -*-COMMENT
LOWspiderfoot/plugin.py101 # Current event being processedCOMMENT
LOWspiderfoot/plugin.py341COMMENT
LOWspiderfoot/static/js/spiderfoot.js1//-------------------------------------------------------------------------------COMMENT
LOWdocs/conf.py1# Configuration file for the Sphinx documentation builder.COMMENT
LOWdocs/conf.py41# for a list of supported languages.COMMENT
LOWmodules/sfp_opennic.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_commoncrawl.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_citadel.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_dnsraw.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_cinsscore.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_tool_onesixtyone.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_junkfiles.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_cloudflaredns.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_surbl.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_urlscan.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_archiveorg.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_bitcoinwhoswho.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_greynoise_community.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_fullhunt.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_apple_itunes.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_bitcoinabuse.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_isc.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_accounts.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_openphish.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_tool_retirejs.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_spyonweb.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_hackertarget.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_securitytrails.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_dnsneighbor.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_threatcrowd.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_bingsearch.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_dnsbrute.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_sociallinks.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_robtex.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_hosting.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_trumail.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_openstreetmap.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_company.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_dnszonexfer.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_cleantalk.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_uceprotect.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_textmagic.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_emailrep.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_tool_testsslsh.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_cleanbrowsing.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_coinblocker.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_zoneh.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_whatcms.py1# -------------------------------------------------------------------------------COMMENT
LOWmodules/sfp_c99.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_pulsedive.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_abstractapi.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_alienvaultiprep.py1# -*- coding: utf-8 -*-COMMENT
LOWmodules/sfp_crt.py1# -*- coding: utf-8 -*-COMMENT
179 more matches not shown…
Docstring Block Structure38 hits · 190 pts
SeverityFileLineSnippetContext
HIGHsflib.py307Convert a Python dictionary to something storable in the database. Args: opts (dict): Dictionary ofSTRING
HIGHsflib.py371Take strings, etc. from the database or UI and convert them to a dictionary for Python to process. ArgsSTRING
HIGHsfwebui.py194Convert data to HTML entities; except quotes and ampersands. Args: inputList (list): list of stringSTRING
HIGHsfwebui.py796Rerun a scan. Args: id (str): scan ID Returns: None Raises: STRING
HIGHsfwebui.py1089Save settings, also used to completely reset them to default. Args: allopts: TBD token STRING
HIGHsfwebui.py1376Initiate a scan. Args: scanname (str): scan name scantarget (str): scan target STRING
HIGHspiderfoot/db.py449Search database. Args: criteria (dict): search criteria such as: - scan_id (search STRING
HIGHspiderfoot/db.py550Logs a batch of events to the database. Args: batch (list): tuples containing: instanceId, classifiSTRING
HIGHspiderfoot/db.py720Return info about a scan instance (name, target, created, started, ended, status) Args: instanceId STRING
HIGHspiderfoot/db.py749Obtain a summary of the results, filtered by event type, module or entity. Args: instanceId (str): STRING
HIGHspiderfoot/db.py803Obtain a summary of the correlations, filtered by rule or risk Args: instanceId (str): scan instancSTRING
HIGHspiderfoot/db.py848Obtain a list of the correlations from a scan Args: instanceId (str): scan instance ID RetSTRING
HIGHspiderfoot/db.py889Obtain the data for a scan and event type. Args: instanceId (str): scan instance ID eveSTRING
HIGHspiderfoot/db.py978Obtain a unique list of elements. Args: instanceId (str): scan instance ID eventType (sSTRING
HIGHspiderfoot/db.py1020Get scan logs. Args: instanceId (str): scan instance ID limit (int): limit number of reSTRING
HIGHspiderfoot/db.py1066Get scan errors. Args: instanceId (str): scan instance ID limit (int): limit number of STRING
HIGHspiderfoot/db.py1103Delete a scan instance. Args: instanceId (str): scan instance ID Returns: boolSTRING
HIGHspiderfoot/db.py1138Set the false positive flag for a result. Args: instanceId (str): scan instance ID resuSTRING
HIGHspiderfoot/db.py1177Store the default configuration in the database. Args: optMap (dict): config options ReturSTRING
HIGHspiderfoot/db.py1306Retrieve configuration data for a scan component. Args: instanceId (str): scan instance ID STRING
HIGHspiderfoot/db.py1470History of data from the scan. Args: instanceId (str): scan instance ID Returns: STRING
HIGHspiderfoot/db.py1499Get the source IDs, types and data for a set of IDs. Args: instanceId (str): scan instance ID STRING
HIGHspiderfoot/db.py1550Get the child IDs, types and data for a set of IDs. Args: instanceId (str): scan instance ID STRING
HIGHspiderfoot/db.py1599Get the full set of upstream IDs which are parents to the supplied set of IDs. Args: instanceId (stSTRING
HIGHspiderfoot/db.py1670Get the full set of downstream IDs which are children of the supplied set of IDs. Args: instanceId STRING
HIGHspiderfoot/db.py1728Create a correlation result in the database. Args: instanceId (str): scan instance ID rSTRING
HIGHspiderfoot/correlation.py134Build up the criteria to be used to query the database. Args: matchrule (dict): dict representing aSTRING
HIGHspiderfoot/correlation.py843Work through all the components of the rule to produce a final set of data elements for building into correlatioSTRING
HIGHspiderfoot/correlation.py898Build the correlation title with field substitution. Args: rule (dict): correlation rule STRING
HIGHspiderfoot/helpers.py122Load modules from modules directory. Args: path (str): file system path for modules directory STRING
HIGHspiderfoot/helpers.py176Load correlation rules from correlations directory. Args: path (str): file system path for correlatSTRING
HIGHspiderfoot/helpers.py345Return dictionary words from several language dictionaries. Args: wordlists (list[str]): list of woSTRING
HIGHspiderfoot/helpers.py373Return list of human names from wordlist file. Args: wordlists (list[str]): list of wordlist file nSTRING
HIGHspiderfoot/helpers.py401Return list of usernames from wordlist file. Args: wordlists (list[str]): list of wordlist file namSTRING
HIGHspiderfoot/helpers.py560Return a format-agnostic collection of tuples to use as the basis for building graphs in various formats. STRING
HIGHspiderfoot/helpers.py637Converts a dictionary of k -> array to a nested tree that can be digested by d3 for visualizations. ArgSTRING
HIGHspiderfoot/helpers.py775Find all URLs within the supplied content. This function does not fetch any URLs. A dictionary will beSTRING
HIGHspiderfoot/helpers.py1144Given a certificate as a DER-encoded blob of bytes, returns a PEM-encoded string version of the same certificate. STRING
Hyper-Verbose Identifiers173 hits · 182 pts
SeverityFileLineSnippetContext
LOWsfwebui.py491 def scaneventresultexportmulti(self: 'SpiderFootWebUi', ids: str, filetype: str = "csv", dialect: str = "excel") -> CODE
LOWtest/unit/test_spiderfootwebui.py217 def test_scan_viz_multi_should_return_a_string(self):CODE
LOWtest/unit/test_spiderfootwebui.py227 def test_scanopts_should_return_dict(self):CODE
LOWtest/unit/test_spiderfootwebui.py235 def test_rerunscan_invalid_scan_id_should_return_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py378 def test_eventtypes_should_return_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py385 def test_modules_should_return_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py392 def test_correlationrules_should_return_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py399 def test_ping_should_return_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py545 def test_scanlist_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py555 def test_scanstatus_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py565 def test_scansummary_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py24 def test_init_no_web_config_should_raise(self):CODE
LOWtest/unit/test_spiderfootwebui.py76 def test_clean_user_input_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py83 def test_clean_user_input_invalid_input_should_raise(self):CODE
LOWtest/unit/test_spiderfootwebui.py94 def test_clean_user_input_should_clean_user_input(self):CODE
LOWtest/unit/test_spiderfootwebui.py109 def test_search_base_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py123 def test_scan_correlations_export(self):CODE
LOWtest/unit/test_spiderfootwebui.py134 def test_scan_event_result_export_should_return_bytes(self):CODE
LOWtest/unit/test_spiderfootwebui.py147 def test_scan_event_result_export_multi(self):CODE
LOWtest/unit/test_spiderfootwebui.py160 def test_scan_search_result_export(self):CODE
LOWtest/unit/test_spiderfootwebui.py172 def test_scan_export_logs_invalid_scan_id_should_return_string(self):CODE
LOWtest/unit/test_spiderfootwebui.py184 def test_scan_export_logs_should_return_bytes(self):CODE
LOWtest/unit/test_spiderfootwebui.py195 def test_scan_export_json_multi(self):CODE
LOWtest/unit/test_spiderfootwebui.py206 def test_scan_viz_should_return_a_string(self):CODE
LOWtest/unit/test_spiderfootwebui.py300 def test_optsexport_should_return_a_string(self):CODE
LOWtest/unit/test_spiderfootwebui.py307 def test_optsraw_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py325 def test_scandelete_invalid_scanid_should_return_an_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py336 def test_savesettings_invalid_csrf_token_should_return_an_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py351 def test_savesettingsraw_invalid_csrf_token_should_return_an_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py363 def test_reset_settings_should_return_true(self):CODE
LOWtest/unit/test_spiderfootwebui.py410 def test_query_should_perform_sql_query(self):CODE
LOWtest/unit/test_spiderfootwebui.py424 def test_query_invalid_query_should_return_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py441 def test_start_scan_should_start_a_scan(self):CODE
LOWtest/unit/test_spiderfootwebui.py452 def test_start_scan_invalid_scanname_should_return_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py464 def test_start_scan_invalid_scantarget_should_return_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py476 def test_start_scan_unrecognized_scantarget_type_should_return_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py486 def test_start_scan_invalid_modules_should_return_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py498 def test_start_scan_invalid_typelist_should_return_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py510 def test_stopscan_invalid_scanid_should_return_an_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py521 def test_scanlog_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py533 def test_scanerrors_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py577 def test_scaneventresults_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py589 def test_scaneventresultsunique_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py601 def test_search_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py613 def test_scan_history_missing_scanid_should_return_error(self):CODE
LOWtest/unit/test_spiderfootwebui.py627 def test_scan_history_should_return_a_list(self):CODE
LOWtest/unit/test_spiderfootwebui.py637 def test_scan_element_type_discovery_should_return_a_dict(self):CODE
LOWtest/unit/test_spiderfoot.py139 def test_config_serialize_invalid_opts_should_raise(self):CODE
LOWtest/unit/test_spiderfoot.py145 def test_config_serialize_should_return_a_dict(self):CODE
LOWtest/unit/test_spiderfoot.py151 def test_config_unserialize_invalid_opts_should_raise(self):CODE
LOWtest/unit/test_spiderfoot.py157 def test_config_unserialize_invalid_reference_point_should_raise(self):CODE
LOWtest/unit/test_spiderfoot.py163 def test_config_unserialize_should_return_a_dict(self):CODE
LOWtest/unit/test_spiderfoot.py169 def test_cache_get_invalid_label_should_return_none(self):CODE
LOWtest/unit/test_spiderfoot.py175 def test_cache_get_invalid_timeout_should_return_none(self):CODE
LOWtest/unit/test_spiderfoot.py313 def test_host_domain_invalid_tldlist_should_return_none(self):CODE
LOWtest/unit/test_spiderfoot.py319 def test_is_domain_valid_domain_should_return_true(self):CODE
LOWtest/unit/test_spiderfoot.py327 def test_is_domain_invalid_domain_should_return_false(self):CODE
LOWtest/unit/test_spiderfoot.py346 def test_is_domain_invalid_tldlist_should_return_false(self):CODE
LOWtest/unit/test_spiderfoot.py353 def test_is_domain_invalid_tld_should_return_false(self):CODE
LOWtest/unit/test_spiderfoot.py361 def test_valid_host_invalid_tldlist_should_return_false(self):CODE
113 more matches not shown…
Deep Nesting187 hits · 182 pts
SeverityFileLineSnippetContext
LOWsf.py235CODE
LOWsflib.py254CODE
LOWsflib.py306CODE
LOWsflib.py370CODE
LOWsflib.py534CODE
LOWsflib.py562CODE
LOWsflib.py801CODE
LOWsflib.py976CODE
LOWsflib.py1191CODE
LOWsflib.py1459CODE
LOWsfwebui.py1035CODE
LOWsfwebui.py1088CODE
LOWsfwebui.py1375CODE
LOWsfcli.py228CODE
LOWsfcli.py449CODE
LOWsfcli.py854CODE
LOWsfcli.py1176CODE
LOWsfscan.py52CODE
LOWsfscan.py260CODE
LOWsfscan.py438CODE
LOWsfscan.py517CODE
LOWspiderfoot/db.py286CODE
LOWspiderfoot/db.py549CODE
LOWspiderfoot/db.py1220CODE
LOWspiderfoot/db.py1305CODE
LOWspiderfoot/db.py1598CODE
LOWspiderfoot/threadpool.py72CODE
LOWspiderfoot/threadpool.py240CODE
LOWspiderfoot/plugin.py312CODE
LOWspiderfoot/plugin.py498CODE
LOWspiderfoot/target.py157CODE
LOWspiderfoot/correlation.py133CODE
LOWspiderfoot/correlation.py410CODE
LOWspiderfoot/correlation.py608CODE
LOWspiderfoot/correlation.py744CODE
LOWspiderfoot/correlation.py793CODE
LOWspiderfoot/correlation.py985CODE
LOWspiderfoot/correlation.py617CODE
LOWspiderfoot/helpers.py344CODE
LOWspiderfoot/helpers.py372CODE
LOWspiderfoot/helpers.py400CODE
LOWspiderfoot/helpers.py559CODE
LOWspiderfoot/helpers.py774CODE
LOWmodules/sfp_opennic.py129CODE
LOWmodules/sfp_commoncrawl.py134CODE
LOWmodules/sfp_dnsraw.py68CODE
LOWmodules/sfp_cinsscore.py84CODE
LOWmodules/sfp_cinsscore.py125CODE
LOWmodules/sfp_junkfiles.py86CODE
LOWmodules/sfp_surbl.py128CODE
LOWmodules/sfp_fullhunt.py139CODE
LOWmodules/sfp_accounts.py289CODE
LOWmodules/sfp_openphish.py151CODE
LOWmodules/sfp_tool_retirejs.py73CODE
LOWmodules/sfp_spyonweb.py192CODE
LOWmodules/sfp_hackertarget.py222CODE
LOWmodules/sfp_securitytrails.py96CODE
LOWmodules/sfp_securitytrails.py149CODE
LOWmodules/sfp_dnsneighbor.py66CODE
LOWmodules/sfp_dnsneighbor.py144CODE
127 more matches not shown…
Self-Referential Comments8 hits · 24 pts
SeverityFileLineSnippetContext
MEDIUMsfscan.py114 # Create a unique ID for this scan in the back-end DB.COMMENT
MEDIUMsfscan.py374 # Create a pseudo module for the root event to originate fromCOMMENT
MEDIUMspiderfoot/logger.py55 # Create a new database handle when the first log batch is processedCOMMENT
MEDIUMmodules/sfp_hackertarget.py337 # Create an IP Address event stemming from the netblock as theCOMMENT
MEDIUMmodules/sfp_tool_testsslsh.py155 # Create a temporary output fileCOMMENT
MEDIUMmodules/sfp_builtwith.py249 # Create the name/co-hostCOMMENT
MEDIUMmodules/sfp_bingsharedip.py161 # Create an IP Address event stemming from the netblock as theCOMMENT
MEDIUMcorrelations/template.yaml34# Define the collections to perform here. Refer to the README.mdCOMMENT
Redundant / Tautological Comments12 hits · 18 pts
SeverityFileLineSnippetContext
LOWspiderfoot/plugin.py382 # Check if we've been asked to stop in the meantime, so thatCOMMENT
LOWspiderfoot/correlation.py1068 # Check if any of the options aren't validCOMMENT
LOWmodules/sfp_accounts.py313 # Check if a state cache exists first, to not have to do this all the timeCOMMENT
LOWmodules/sfp_slideshare.py103 # Check if the profile is valid and extract nameCOMMENT
LOWmodules/sfp_hunter.py139 # Check if we have more results on further pagesCOMMENT
LOWmodules/sfp_onioncity.py147 # Check if we've been asked to stopCOMMENT
LOWmodules/sfp_torch.py102 # Check if we've been asked to stopCOMMENT
LOWmodules/sfp_template.py273 # Check if the module has already analysed this event data.COMMENT
LOWmodules/sfp_tool_dnstwist.py105 # Check if the TLD has wildcards before testingCOMMENT
LOWmodules/sfp_similar.py118 # Check if the TLD has wildcards before testingCOMMENT
LOWmodules/sfp_skymem.py141 # Check if we're on the last page of resultsCOMMENT
LOWmodules/sfp_onionsearchengine.py97 # Check if we've been asked to stopCOMMENT
Cross-File Repetition3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHmodules/sfp_sorbs.py0query dronebl dns for an ipv4 address. args: qaddr (str): ipv4 address. returns: list: dronebl dns entriesSTRING
HIGHmodules/sfp_spamcop.py0query dronebl dns for an ipv4 address. args: qaddr (str): ipv4 address. returns: list: dronebl dns entriesSTRING
HIGHmodules/sfp_dronebl.py0query dronebl dns for an ipv4 address. args: qaddr (str): ipv4 address. returns: list: dronebl dns entriesSTRING
Unused Imports8 hits · 8 pts
SeverityFileLineSnippetContext
LOWspiderfoot/__init__.py1CODE
LOWspiderfoot/__init__.py2CODE
LOWspiderfoot/__init__.py3CODE
LOWspiderfoot/__init__.py4CODE
LOWspiderfoot/__init__.py5CODE
LOWspiderfoot/__init__.py6CODE
LOWspiderfoot/__init__.py7CODE
LOWspiderfoot/__init__.py8CODE
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOWspiderfoot/plugin.py151 def _updateSocket(self, socksProxy: str) -> None:CODE
AI Structural Patterns1 hit · 0 pts
SeverityFileLineSnippetContext
LOWsflib.py1191CODE