Repository Analysis

unclecode/crawl4ai

🚀🤖 Crawl4AI: Open-source LLM Friendly Web Crawler & Scraper. Don't be shy, join here: https://discord.gg/jP8KfhDhyN

30.4 Strong AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of unclecode/crawl4ai, a Python project with 72,565 GitHub stars. SynthScan v2.0 examined 313,954 lines of code across 801 source files, recording 5652 pattern matches distributed across 24 syntactic categories. The overall adjusted score of 30.4 places this repository in the Strong 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).

30.4
Adjusted Score
30.4
Raw Score
100%
Time Factor
2026-07-11
Last Push
72.6K
Stars
Python
Language
314.0K
Lines of Code
801
Files
5.7K
Pattern Hits
2026-07-14
Scan Date
0.42
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

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.

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 1HIGH 339MEDIUM 1201LOW 4111

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 5652 distinct pattern matches across 24 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 Separators861 hits · 2926 pts
SeverityFileLineSnippetContext
MEDIUMcrawl4ai/antibot_detector.py22# ---------------------------------------------------------------------------COMMENT
MEDIUMcrawl4ai/antibot_detector.py25# ---------------------------------------------------------------------------COMMENT
MEDIUMcrawl4ai/antibot_detector.py69# ---------------------------------------------------------------------------COMMENT
MEDIUMcrawl4ai/antibot_detector.py73# ---------------------------------------------------------------------------COMMENT
MEDIUMcrawl4ai/antibot_detector.py100# ---------------------------------------------------------------------------COMMENT
MEDIUMcrawl4ai/antibot_detector.py103# ---------------------------------------------------------------------------COMMENT
MEDIUMcrawl4ai/antibot_detector.py114# ---------------------------------------------------------------------------COMMENT
MEDIUMcrawl4ai/antibot_detector.py116# ---------------------------------------------------------------------------COMMENT
MEDIUMcrawl4ai/domain_mapper.py502 # ════════════════════════════════════════════════════════════════════════COMMENT
MEDIUMcrawl4ai/domain_mapper.py504 # ════════════════════════════════════════════════════════════════════════COMMENT
MEDIUMcrawl4ai/domain_mapper.py945 # ════════════════════════════════════════════════════════════════════════COMMENT
MEDIUMcrawl4ai/domain_mapper.py947 # ════════════════════════════════════════════════════════════════════════COMMENT
MEDIUMcrawl4ai/domain_mapper.py59# ──────────────────────────────────────────────────────────────── constantsCOMMENT
MEDIUMcrawl4ai/domain_mapper.py109# ──────────────────────────────────────────────────────────────── dataclassCOMMENT
MEDIUMcrawl4ai/domain_mapper.py120# ──────────────────────────────────────────────────────────────── classCOMMENT
MEDIUMcrawl4ai/domain_mapper.py167 # ──────────────────────── lifecycleCOMMENT
MEDIUMcrawl4ai/domain_mapper.py183 # ──────────────────────── loggingCOMMENT
MEDIUMcrawl4ai/domain_mapper.py191 # ──────────────────────── seeder compositionCOMMENT
MEDIUMcrawl4ai/domain_mapper.py202 # ════════════════════════════════════════════════════════════════════════COMMENT
MEDIUMcrawl4ai/domain_mapper.py204 # ════════════════════════════════════════════════════════════════════════COMMENT
MEDIUMcrawl4ai/domain_mapper.py249 # ── Phase 1: Host Discovery ──────────────────────────────────────COMMENT
MEDIUMcrawl4ai/domain_mapper.py259 # ── Phase 2: Per-Host Scanning ───────────────────────────────────COMMENT
MEDIUMcrawl4ai/domain_mapper.py276 # ── Phase 3: Post-Processing ─────────────────────────────────────COMMENT
MEDIUMcrawl4ai/domain_mapper.py301 # ════════════════════════════════════════════════════════════════════════COMMENT
MEDIUMcrawl4ai/domain_mapper.py303 # ════════════════════════════════════════════════════════════════════════COMMENT
MEDIUMcrawl4ai/domain_mapper.py620 # ──────────────────────── Soft-404 DetectionCOMMENT
MEDIUMcrawl4ai/domain_mapper.py669 # ──────────────────────── robots.txtCOMMENT
MEDIUMcrawl4ai/domain_mapper.py711 # ──────────────────────── SitemapsCOMMENT
MEDIUMcrawl4ai/domain_mapper.py753 # ──────────────────────── Path ProbingCOMMENT
MEDIUMcrawl4ai/domain_mapper.py816 # ──────────────────────── Feed DiscoveryCOMMENT
MEDIUMcrawl4ai/domain_mapper.py900 # ──────────────────────── Homepage Link ExtractionCOMMENT
MEDIUMcrawl4ai/domain_mapper.py1087 # ════════════════════════════════════════════════════════════════════════COMMENT
MEDIUMcrawl4ai/domain_mapper.py1089 # ════════════════════════════════════════════════════════════════════════COMMENT
MEDIUMcrawl4ai/utils.py3166 # ── build signature ───────────────────────────────────────────COMMENT
MEDIUMcrawl4ai/utils.py3172 # ── first seen? keep – else drop ─────────────COMMENT
MEDIUMcrawl4ai/browser_profiler.py554 # 1. ── Start the browser ─────────────────────────────────────────COMMENT
MEDIUMcrawl4ai/browser_profiler.py557 # 2. ── Attach Playwright to that running Chrome ──────────────────COMMENT
MEDIUMcrawl4ai/browser_profiler.py586 # 3. ── Persist storage state *before* we kill Chrome ─────────────COMMENT
MEDIUMcrawl4ai/browser_profiler.py594 # 4. ── Close everything cleanly ──────────────────────────────────COMMENT
MEDIUMcrawl4ai/async_crawler_strategy.py780 # ──────────────────────────────────────────────────────────────STRING
MEDIUMcrawl4ai/async_crawler_strategy.py785 # ──────────────────────────────────────────────────────────────STRING
MEDIUMcrawl4ai/async_configs.py159# ───────────────────────── untrusted-input trust boundary ─────────────────────────COMMENT
MEDIUMcrawl4ai/async_url_seeder.py362 # ─────────────────────────────── discovery entryCOMMENT
MEDIUMcrawl4ai/async_url_seeder.py828 # ─────────────────────────────── CCCOMMENT
MEDIUMcrawl4ai/async_url_seeder.py63# ────────────────────────────────────────────────────────────────────────── constsCOMMENT
MEDIUMcrawl4ai/async_url_seeder.py78# ────────────────────────────────────────────────────────────────────────── helpersCOMMENT
MEDIUMcrawl4ai/async_url_seeder.py258# ────────────────────────────────────────────────────────────────────────── classCOMMENT
MEDIUMcrawl4ai/async_url_seeder.py322 # ───────── cache dirs ─────────COMMENT
MEDIUMcrawl4ai/async_url_seeder.py338 # ───────── cache helpers ─────────COMMENT
MEDIUMcrawl4ai/async_url_seeder.py884 # ─────────────────────────────── SitemapsCOMMENT
MEDIUMcrawl4ai/async_url_seeder.py1280 # ─────────────────────────────── validate helpersCOMMENT
MEDIUMcrawl4ai/async_url_seeder.py1465 # ─────────────────────────────── BM25 scoring helpersCOMMENT
MEDIUMcrawl4ai/async_url_seeder.py1749 # ─────────────────────────────── cleanup methodsCOMMENT
MEDIUMcrawl4ai/async_url_seeder.py1765 # ─────────────────────────────── index helperCOMMENT
MEDIUMcrawl4ai/browser_manager.py547 # ── 1. cookies ────────────────────────────────────────────────────────────COMMENT
MEDIUMcrawl4ai/browser_manager.py552 # ── 2. localStorage / sessionStorage ──────────────────────────────────────COMMENT
MEDIUMcrawl4ai/browser_manager.py565 # ── 3. runtime-mutable extras from configs ────────────────────────────────COMMENT
MEDIUMcrawl4ai/browser_manager.py811 # ── Persistent context via Playwright's native API ──────────────COMMENT
MEDIUMcrawl4ai/legacy/llmtxt.py308 # -----------------------------------------------------STRING
MEDIUMdeploy/docker/server.py80# ── internal imports (after sys.path append) ─────────────────COMMENT
801 more matches not shown…
Hyper-Verbose Identifiers1685 hits · 1644 pts
SeverityFileLineSnippetContext
LOWPROGRESSIVE_CRAWLING.md174def generate_synthetic_dataset(domain_url):CODE
LOWtest_webhook_implementation.py43def test_webhook_service_init():CODE
LOWtest_webhook_implementation.py93def test_webhook_config_model():CODE
LOWtest_webhook_implementation.py145def test_payload_construction():CODE
LOWtest_llm_webhook_feature.py15def test_llm_job_payload_model():CODE
LOWtest_llm_webhook_feature.py65def test_handle_llm_request_signature():CODE
LOWtest_llm_webhook_feature.py101def test_process_llm_extraction_signature():CODE
LOWtest_llm_webhook_feature.py136def test_webhook_integration_in_api():CODE
LOWtest_llm_webhook_feature.py187def test_job_endpoint_integration():CODE
LOWtest_llm_webhook_feature.py239def test_create_new_task_integration():CODE
LOWcrawl4ai/antibot_detector.py138def _structural_integrity_check(html: str) -> Tuple[bool, str]:CODE
LOWcrawl4ai/adaptive_crawler.py259 def _embedding_llm_config_dict(self) -> Optional[Dict]:CODE
LOWcrawl4ai/adaptive_crawler.py632 def _get_embedding_llm_config_dict(self) -> Optional[Dict]:CODE
LOWcrawl4ai/adaptive_crawler.py642 def _get_query_llm_config_dict(self) -> Optional[Dict]:CODE
LOWcrawl4ai/adaptive_crawler.py708 def _get_cached_distance_matrix(self, query_embeddings: Any, kb_embeddings: Any) -> Any:CODE
LOWcrawl4ai/adaptive_crawler.py871 async def select_links_for_expansion(CODE
LOWcrawl4ai/adaptive_crawler.py1808 def _crawl_result_to_export_dict(self, result) -> Dict[str, Any]:CODE
LOWcrawl4ai/adaptive_crawler.py1880 def _import_dict_to_crawl_result(self, data: Dict[str, Any]):CODE
LOWcrawl4ai/extraction_strategy.py2188 def _make_context_sensitive_xpath(self, xpath, element):CODE
LOWcrawl4ai/extraction_strategy.py2240 def _fallback_class_id_search(self, element, selector_str):CODE
LOWcrawl4ai/extraction_strategy.py279 def filter_documents_embeddings(CODE
LOWcrawl4ai/extraction_strategy.py415 def filter_clusters_by_word_count(CODE
LOWcrawl4ai/extraction_strategy.py2109 def _create_selector_function(self, selector_str):CODE
LOWcrawl4ai/extraction_strategy.py2211 def _handle_nth_child_selector(self, element, selector_str):CODE
LOWcrawl4ai/browser_adapter.py43 async def retrieve_console_messages(self, page: Page) -> List[Dict]:CODE
LOWcrawl4ai/browser_adapter.py133 async def retrieve_console_messages(self, page: Page) -> List[Dict]:CODE
LOWcrawl4ai/browser_adapter.py159 def _check_stealth_availability(self) -> bool:CODE
LOWcrawl4ai/browser_adapter.py253 async def retrieve_console_messages(self, page: Page) -> List[Dict]:CODE
LOWcrawl4ai/browser_adapter.py372 async def retrieve_console_messages(self, page: UndetectedPage) -> List[Dict]:STRING
LOWcrawl4ai/__init__.py211# def is_sync_version_installed():COMMENT
LOWcrawl4ai/markdown_generation_strategy.py82 def convert_links_to_citations(CODE
LOWcrawl4ai/content_scraping_strategy.py380 def find_closest_parent_with_useful_text(CODE
LOWcrawl4ai/content_scraping_strategy.py517 def remove_empty_elements_fast(self, root, word_count_threshold=5):CODE
LOWcrawl4ai/content_scraping_strategy.py577 def remove_unwanted_attributes_fast(CODE
LOWcrawl4ai/user_agent_generator.py344 def generate_with_client_hints(self, **kwargs) -> Tuple[str, str]:CODE
LOWcrawl4ai/cli.py467def delete_profile_interactive(profiler: BrowserProfiler):CODE
LOWcrawl4ai/cli.py444async def create_profile_interactive(profiler: BrowserProfiler):CODE
LOWcrawl4ai/utils.py1143def get_content_of_website_optimized(CODE
LOWcrawl4ai/utils.py1195 def find_closest_parent_with_useful_text(tag):CODE
LOWcrawl4ai/utils.py3229def start_colab_display_server():CODE
LOWcrawl4ai/utils.py534def calculate_semaphore_count():CODE
LOWcrawl4ai/utils.py707def split_and_parse_json_objects(json_string):CODE
LOWcrawl4ai/utils.py981 def replace_pre_tags_with_text(node):CODE
LOWcrawl4ai/utils.py1020 def remove_empty_and_low_word_count_elements(node, word_count_threshold):CODE
LOWcrawl4ai/utils.py1242 def score_image_for_usefulness(img, base_url, index, images_count):CODE
LOWcrawl4ai/utils.py1497def extract_metadata_using_lxml(html, doc=None):CODE
LOWcrawl4ai/utils.py1742def perform_completion_with_backoff(CODE
LOWcrawl4ai/utils.py1834async def aperform_completion_with_backoff(CODE
LOWcrawl4ai/utils.py2040def merge_chunks_based_on_token_threshold(chunks, token_threshold):CODE
LOWcrawl4ai/utils.py2317def normalize_url_for_deep_crawl(href, base_url, preserve_https=False, original_scheme=None):CODE
LOWcrawl4ai/utils.py2376def efficient_normalize_url_for_deep_crawl(href, base_url, preserve_https=False, original_scheme=None):CODE
LOWcrawl4ai/utils.py2928def configure_windows_event_loop():CODE
LOWcrawl4ai/utils.py3084def preprocess_html_for_schema(html_content, text_threshold=100, attr_value_threshold=200, max_size=100000):CODE
LOWcrawl4ai/utils.py3344def calculate_link_intrinsic_score(STRING
LOWcrawl4ai/utils.py3620def get_true_available_memory_gb() -> float:STRING
LOWcrawl4ai/utils.py3662def get_true_memory_usage_percent() -> float:STRING
LOWcrawl4ai/browser_profiler.py960 async def launch_standalone_browser(self,CODE
LOWcrawl4ai/browser_profiler.py1355 async def get_builtin_browser_status(self) -> Dict[str, Any]:CODE
LOWcrawl4ai/async_crawler_strategy.py679 async def handle_request_failed_capture(request):STRING
LOWcrawl4ai/async_crawler_strategy.py1666 async def _capture_console_messages(STRING
1625 more matches not shown…
Cross-File Repetition231 hits · 1155 pts
SeverityFileLineSnippetContext
HIGHCHANGELOG.md0const downloadlink = document.queryselector('a[href$=".exe"]'); if (downloadlink) { downloadlink.click(); }STRING
HIGHdeploy/docker/c4ai-doc-context.md0const downloadlink = document.queryselector('a[href$=".exe"]'); if (downloadlink) { downloadlink.click(); }STRING
HIGHdocs/md_v2/advanced/file-downloading.md0const downloadlink = document.queryselector('a[href$=".exe"]'); if (downloadlink) { downloadlink.click(); }STRING
HIGHcrawl4ai/proxy_strategy.py0configuration class for a single proxy. args: server: proxy server url (e.g., "http://127.0.0.1:8080") username: optionaSTRING
HIGHcrawl4ai/async_configs.py0configuration class for a single proxy. args: server: proxy server url (e.g., "http://127.0.0.1:8080") username: optionaSTRING
HIGHdeploy/docker/c4ai-code-context.md0configuration class for a single proxy. args: server: proxy server url (e.g., "http://127.0.0.1:8080") username: optionaSTRING
HIGHcrawl4ai/proxy_strategy.py0load proxies from environment variable. args: env_var: name of environment variable containing comma-separated proxy strSTRING
HIGHcrawl4ai/async_configs.py0load proxies from environment variable. args: env_var: name of environment variable containing comma-separated proxy strSTRING
HIGHdeploy/docker/c4ai-code-context.md0load proxies from environment variable. args: env_var: name of environment variable containing comma-separated proxy strSTRING
HIGHcrawl4ai/proxy_strategy.py0create a copy of this configuration with updated values. args: **kwargs: key-value pairs of configuration options to updSTRING
HIGHcrawl4ai/async_configs.py0create a copy of this configuration with updated values. args: **kwargs: key-value pairs of configuration options to updSTRING
HIGHdeploy/docker/c4ai-code-context.md0create a copy of this configuration with updated values. args: **kwargs: key-value pairs of configuration options to updSTRING
HIGHcrawl4ai/async_crawler_strategy.py0const _origattachshadow = element.prototype.attachshadow; element.prototype.attachshadow = function(init) { return _origSTRING
HIGHcrawl4ai/browser_manager.py0const _origattachshadow = element.prototype.attachshadow; element.prototype.attachshadow = function(init) { return _origSTRING
HIGHtests/browser/test_init_script_dedup.py0const _origattachshadow = element.prototype.attachshadow; element.prototype.attachshadow = function(init) { return _origSTRING
HIGHcrawl4ai/async_configs.py0recursively convert an object to a serializable dictionary using {type, params} structure for complex objects.STRING
HIGHdeploy/docker/c4ai-code-context.md0recursively convert an object to a serializable dictionary using {type, params} structure for complex objects.STRING
HIGHtests/docker/test_serialization.py0recursively convert an object to a serializable dictionary using {type, params} structure for complex objects.STRING
HIGHcrawl4ai/deep_crawling/bfs_strategy.py0batch (non-streaming) mode: processes one bfs level at a time, then yields all the results.STRING
HIGHcrawl4ai/deep_crawling/base_strategy.py0batch (non-streaming) mode: processes one bfs level at a time, then yields all the results.STRING
HIGHdeploy/docker/c4ai-code-context.md0batch (non-streaming) mode: processes one bfs level at a time, then yields all the results.STRING
HIGHcrawl4ai/deep_crawling/bfs_strategy.py0streaming mode: processes one bfs level at a time and yields results immediately as they arrive.STRING
HIGHcrawl4ai/deep_crawling/base_strategy.py0streaming mode: processes one bfs level at a time and yields results immediately as they arrive.STRING
HIGHdeploy/docker/c4ai-code-context.md0streaming mode: processes one bfs level at a time and yields results immediately as they arrive.STRING
HIGHdeploy/docker/c4ai-code-context.md0from the crawled content, extract all mentioned model names along with their fees for input and output tokens. do not miSTRING
HIGHdeploy/docker/c4ai-doc-context.md0from the crawled content, extract all mentioned model names along with their fees for input and output tokens. do not miSTRING
HIGHdocs/md_v2/complete-sdk-reference.md0from the crawled content, extract all mentioned model names along with their fees for input and output tokens. do not miSTRING
HIGHdocs/md_v2/core/quickstart.md0from the crawled content, extract all mentioned model names along with their fees for input and output tokens. do not miSTRING
HIGHdocs/examples/quickstart_examples_set_2.py0from the crawled content, extract all mentioned model names along with their fees for input and output tokens. do not miSTRING
HIGHdocs/examples/llm_extraction_openai_pricing.py0from the crawled content, extract all mentioned model names along with their fees for input and output tokens. do not miSTRING
HIGHdocs/examples/quickstart.py0from the crawled content, extract all mentioned model names along with their fees for input and output tokens. do not miSTRING
HIGHdeploy/docker/c4ai-code-context.md0(async () => { const tabs = document.queryselectorall("section.charge-methodology .tabs-menu-3 > div"); for(let tab of tSTRING
HIGHdeploy/docker/c4ai-doc-context.md0(async () => { const tabs = document.queryselectorall("section.charge-methodology .tabs-menu-3 > div"); for(let tab of tSTRING
HIGHdocs/md_v2/complete-sdk-reference.md0(async () => { const tabs = document.queryselectorall("section.charge-methodology .tabs-menu-3 > div"); for(let tab of tSTRING
HIGHdocs/md_v2/core/quickstart.md0(async () => { const tabs = document.queryselectorall("section.charge-methodology .tabs-menu-3 > div"); for(let tab of tSTRING
HIGHdocs/examples/quickstart_examples_set_2.py0(async () => { const tabs = document.queryselectorall("section.charge-methodology .tabs-menu-3 > div"); for(let tab of tSTRING
HIGHdocs/examples/quickstart.py0(async () => { const tabs = document.queryselectorall("section.charge-methodology .tabs-menu-3 > div"); for(let tab of tSTRING
HIGHdeploy/docker/c4ai-code-context.md0const button = document.queryselector('a[data-testid="pagination-next-button"]'); if (button) button.click();STRING
HIGHtests/async/test_edge_cases.py0const button = document.queryselector('a[data-testid="pagination-next-button"]'); if (button) button.click();STRING
HIGHdocs/examples/quickstart_examples_set_2.py0const button = document.queryselector('a[data-testid="pagination-next-button"]'); if (button) button.click();STRING
HIGHdocs/examples/quickstart.py0const button = document.queryselector('a[data-testid="pagination-next-button"]'); if (button) button.click();STRING
HIGHdeploy/docker/c4ai-code-context.md0(async () => { const getcurrentcommit = () => { const commits = document.queryselectorall('li.box-sc-g0xbh4-0 h4'); retuSTRING
HIGHdocs/examples/quickstart_examples_set_2.py0(async () => { const getcurrentcommit = () => { const commits = document.queryselectorall('li.box-sc-g0xbh4-0 h4'); retuSTRING
HIGHdocs/examples/quickstart.py0(async () => { const getcurrentcommit = () => { const commits = document.queryselectorall('li.box-sc-g0xbh4-0 h4'); retuSTRING
HIGHdeploy/docker/c4ai-code-context.md0part 6: wrap-up and key takeaways summarize the key concepts learned in this tutorial.STRING
HIGHdocs/examples/deepcrawl_example.py0part 6: wrap-up and key takeaways summarize the key concepts learned in this tutorial.STRING
HIGHdocs/examples/docker_config_obj.py0part 6: wrap-up and key takeaways summarize the key concepts learned in this tutorial.STRING
HIGHdeploy/docker/README.md0test the /crawl/stream endpoint with multiple urls.STRING
HIGHdeploy/docker/c4ai-doc-context.md0test the /crawl/stream endpoint with multiple urls.STRING
HIGHtests/docker/test_server_token.py0test the /crawl/stream endpoint with multiple urls.STRING
HIGHdocs/md_v2/core/self-hosting.md0test the /crawl/stream endpoint with multiple urls.STRING
HIGHdocs/examples/docker_python_rest_api.py0test the /crawl/stream endpoint with multiple urls.STRING
HIGHdeploy/docker/c4ai-doc-context.md0focus on extracting the core educational content. include: - key concepts and explanations - important code examples - eSTRING
HIGHdocs/md_v2/complete-sdk-reference.md0focus on extracting the core educational content. include: - key concepts and explanations - important code examples - eSTRING
HIGHdocs/md_v2/core/browser-crawler-config.md0focus on extracting the core educational content. include: - key concepts and explanations - important code examples - eSTRING
HIGHdocs/md_v2/core/markdown-generation.md0focus on extracting the core educational content. include: - key concepts and explanations - important code examples - eSTRING
HIGHdeploy/docker/c4ai-doc-context.md0extract the main educational content while preserving its original wording and substance completely. 1. maintain the exaSTRING
HIGHdocs/md_v2/complete-sdk-reference.md0extract the main educational content while preserving its original wording and substance completely. 1. maintain the exaSTRING
HIGHdocs/md_v2/core/markdown-generation.md0extract the main educational content while preserving its original wording and substance completely. 1. maintain the exaSTRING
HIGHdeploy/docker/c4ai-doc-context.md0focus on extracting specific types of content: - technical documentation - code examples - api references reformat the cSTRING
171 more matches not shown…
Excessive Try-Catch Wrapping1033 hits · 1052 pts
SeverityFileLineSnippetContext
LOWsetup.py40except Exception:CODE
LOWtest_webhook_implementation.py29 except Exception as e:CODE
LOWtest_webhook_implementation.py37 except Exception as e:CODE
LOWtest_webhook_implementation.py87 except Exception as e:CODE
LOWtest_webhook_implementation.py139 except Exception as e:CODE
LOWtest_webhook_implementation.py200 except Exception as e:CODE
LOWtest_webhook_implementation.py229 except Exception as e:CODE
LOWtest_webhook_implementation.py264 except Exception as e:CODE
LOWtest_llm_webhook_feature.py59 except Exception as e:CODE
LOWtest_llm_webhook_feature.py95 except Exception as e:CODE
LOWtest_llm_webhook_feature.py130 except Exception as e:CODE
LOWtest_llm_webhook_feature.py181 except Exception as e:CODE
LOWtest_llm_webhook_feature.py233 except Exception as e:CODE
LOWtest_llm_webhook_feature.py279 except Exception as e:CODE
LOWtest_llm_webhook_feature.py346 except Exception as e:CODE
LOWcrawl4ai/async_database.py82 except Exception as e:CODE
LOWcrawl4ai/async_database.py110 except Exception as e:CODE
LOWcrawl4ai/async_database.py164 except Exception as e:CODE
LOWcrawl4ai/async_database.py185 except Exception as e:CODE
LOWcrawl4ai/async_database.py217 except Exception as e:CODE
LOWcrawl4ai/async_database.py383 except Exception as e:CODE
LOWcrawl4ai/async_database.py425 except Exception as e:CODE
LOWcrawl4ai/async_database.py470 except Exception as e:CODE
LOWcrawl4ai/async_database.py511 except Exception as e:CODE
LOWcrawl4ai/async_database.py582 except Exception as e:CODE
LOWcrawl4ai/async_database.py600 except Exception as e:CODE
LOWcrawl4ai/async_database.py617 except Exception as e:CODE
LOWcrawl4ai/async_database.py633 except Exception as e:CODE
LOWcrawl4ai/ssl_certificate.py124 except Exception as e:CODE
MEDIUMcrawl4ai/ssl_certificate.py125 print(f"Error fetching/processing certificate for {url}: {e}")CODE
LOWcrawl4ai/ssl_certificate.py183 except Exception as e:CODE
MEDIUMcrawl4ai/ssl_certificate.py184 print(f"Error converting to PEM: {e}")CODE
LOWcrawl4ai/ssl_certificate.py196 except Exception as e:CODE
MEDIUMcrawl4ai/ssl_certificate.py197 print(f"Error converting to DER: {e}")CODE
LOWcrawl4ai/proxy_strategy.py45 except Exception:CODE
LOWcrawl4ai/proxy_strategy.py96 except Exception as e:CODE
MEDIUMcrawl4ai/proxy_strategy.py97 print(f"Error loading proxies from environment: {e}")CODE
MEDIUMcrawl4ai/adaptive_crawler.py1503 print(f"Error crawling {url}: {e}")CODE
MEDIUMcrawl4ai/adaptive_crawler.py1525 print(f"Error in batch crawl: {result}")CODE
LOWcrawl4ai/adaptive_crawler.py825 except Exception:CODE
LOWcrawl4ai/adaptive_crawler.py1502 except Exception as e:CODE
MEDIUMcrawl4ai/extraction_strategy.py2077 print(f"Error parsing HTML, falling back to alternative method: {e}")CODE
MEDIUMcrawl4ai/extraction_strategy.py2175 print(f"Error applying selector '{selector_str}': {e}")CODE
MEDIUMcrawl4ai/extraction_strategy.py2183 print(f"Error compiling selector '{selector_str}': {e}")CODE
MEDIUMcrawl4ai/extraction_strategy.py2236 print(f"Error handling nth-child selector: {e}")CODE
MEDIUMcrawl4ai/extraction_strategy.py2305 print(f"Error serializing HTML: {e}")CODE
MEDIUMcrawl4ai/extraction_strategy.py2314 print(f"Error getting attribute '{attribute}': {e}")CODE
MEDIUMcrawl4ai/extraction_strategy.py2400 print(f"Error applying selector '{selector_str}': {e}")CODE
MEDIUMcrawl4ai/extraction_strategy.py2406 print(f"Error compiling selector '{selector_str}': {e}")CODE
MEDIUMcrawl4ai/extraction_strategy.py830 print(f"Error in thread execution: {e}")CODE
MEDIUMcrawl4ai/extraction_strategy.py1006 print(f"Error in async extraction: {result}")CODE
MEDIUMcrawl4ai/extraction_strategy.py1175 print(f"Error extracting field {field['name']}: {str(e)}")CODE
MEDIUMcrawl4ai/extraction_strategy.py1307 print(f"Error computing field {field['name']}: {str(e)}")CODE
MEDIUMcrawl4ai/extraction_strategy.py2263 print(f"Error in fallback class/id search: {e}")CODE
MEDIUMcrawl4ai/extraction_strategy.py2292 print(f"Error extracting text: {e}")CODE
MEDIUMcrawl4ai/extraction_strategy.py1148def _extract_field(self, element, field):CODE
MEDIUMcrawl4ai/extraction_strategy.py1293def _compute_field(self, item, field):CODE
MEDIUMcrawl4ai/extraction_strategy.py2357def select_func(element):CODE
LOWcrawl4ai/extraction_strategy.py2075 except Exception as e:CODE
LOWcrawl4ai/extraction_strategy.py2080 except Exception as e2:CODE
973 more matches not shown…
Unused Imports607 hits · 492 pts
SeverityFileLineSnippetContext
LOWtest_webhook_implementation.py34CODE
LOWtest_llm_webhook_feature.py23CODE
LOWtest_llm_webhook_feature.py24CODE
LOWcrawl4ai/async_database.py15CODE
LOWcrawl4ai/adaptive_crawler.py13CODE
LOWcrawl4ai/adaptive_crawler.py14CODE
LOWcrawl4ai/adaptive_crawler.py17CODE
LOWcrawl4ai/adaptive_crawler.py878CODE
LOWcrawl4ai/link_preview.py8CODE
LOWcrawl4ai/extraction_strategy.py18CODE
LOWcrawl4ai/extraction_strategy.py29CODE
LOWcrawl4ai/extraction_strategy.py33CODE
LOWcrawl4ai/browser_adapter.py10CODE
LOWcrawl4ai/domain_mapper.py16CODE
LOWcrawl4ai/domain_mapper.py22CODE
LOWcrawl4ai/domain_mapper.py24CODE
LOWcrawl4ai/domain_mapper.py26CODE
LOWcrawl4ai/domain_mapper.py27CODE
LOWcrawl4ai/domain_mapper.py30CODE
LOWcrawl4ai/domain_mapper.py48CODE
LOWcrawl4ai/domain_mapper.py41CODE
LOWcrawl4ai/domain_mapper.py57CODE
LOWcrawl4ai/__init__.py4CODE
LOWcrawl4ai/__init__.py4CODE
LOWcrawl4ai/__init__.py6CODE
LOWcrawl4ai/__init__.py6CODE
LOWcrawl4ai/__init__.py6CODE
LOWcrawl4ai/__init__.py6CODE
LOWcrawl4ai/__init__.py6CODE
LOWcrawl4ai/__init__.py6CODE
LOWcrawl4ai/__init__.py6CODE
LOWcrawl4ai/__init__.py6CODE
LOWcrawl4ai/__init__.py6CODE
LOWcrawl4ai/__init__.py6CODE
LOWcrawl4ai/__init__.py6CODE
LOWcrawl4ai/__init__.py8CODE
LOWcrawl4ai/__init__.py8CODE
LOWcrawl4ai/__init__.py8CODE
LOWcrawl4ai/__init__.py13CODE
LOWcrawl4ai/__init__.py14CODE
LOWcrawl4ai/__init__.py14CODE
LOWcrawl4ai/__init__.py18CODE
LOWcrawl4ai/__init__.py18CODE
LOWcrawl4ai/__init__.py22CODE
LOWcrawl4ai/__init__.py22CODE
LOWcrawl4ai/__init__.py22CODE
LOWcrawl4ai/__init__.py22CODE
LOWcrawl4ai/__init__.py22CODE
LOWcrawl4ai/__init__.py22CODE
LOWcrawl4ai/__init__.py22CODE
LOWcrawl4ai/__init__.py31CODE
LOWcrawl4ai/__init__.py31CODE
LOWcrawl4ai/__init__.py32CODE
LOWcrawl4ai/__init__.py33CODE
LOWcrawl4ai/__init__.py33CODE
LOWcrawl4ai/__init__.py33CODE
LOWcrawl4ai/__init__.py33CODE
LOWcrawl4ai/__init__.py39CODE
LOWcrawl4ai/__init__.py39CODE
LOWcrawl4ai/__init__.py39CODE
547 more matches not shown…
Self-Referential Comments152 hits · 464 pts
SeverityFileLineSnippetContext
MEDIUMcrawl4ai/async_database.py677# Create a singleton instanceCOMMENT
MEDIUMcrawl4ai/ssl_certificate.py90 # Create the dictionary directlyCOMMENT
MEDIUMcrawl4ai/adaptive_crawler.py133 # Create a mock object that has the minimal interface we needCOMMENT
MEDIUMcrawl4ai/link_preview.py212 # Create a wrapper to track progressCOMMENT
MEDIUMcrawl4ai/link_preview.py241 # Create a custom progress tracking versionCOMMENT
MEDIUMcrawl4ai/extraction_strategy.py2125 # Create the wrapper function that implements the selection strategyCOMMENT
MEDIUMcrawl4ai/extraction_strategy.py2131 # Create a cache key based on element and selectorCOMMENT
MEDIUMcrawl4ai/extraction_strategy.py2356 # Create a function that will apply this selector appropriatelyCOMMENT
MEDIUMcrawl4ai/content_scraping_strategy.py919 # Create a config object for LinkPreviewCOMMENT
MEDIUMcrawl4ai/cli.py456 # Create the profileCOMMENT
MEDIUMcrawl4ai/cli.py361 # Create a profile and use it for crawlingCOMMENT
MEDIUMcrawl4ai/utils.py516 # Create the box with colored borders and lighter textCOMMENT
MEDIUMcrawl4ai/utils.py980 # Create a function that replace content of all"pre" tag with its inner textCOMMENT
MEDIUMcrawl4ai/utils.py3186 # # Create a signature based on tag and classesCOMMENT
MEDIUMcrawl4ai/browser_profiler.py158 # Create a logger if not providedCOMMENT
MEDIUMcrawl4ai/browser_profiler.py995 # Create a temporary profile directoryCOMMENT
MEDIUMcrawl4ai/browser_profiler.py1200 # Create a user data directory for the builtin browserCOMMENT
MEDIUMcrawl4ai/browser_profiler.py1382 # Create a new profileCOMMENT
MEDIUMcrawl4ai/browser_profiler.py408 # Create a profile interactivelySTRING
MEDIUMcrawl4ai/browser_profiler.py829 # Define a custom crawl functionSTRING
MEDIUMcrawl4ai/async_crawler_strategy.py1643 # Create a new CDP sessionSTRING
MEDIUMcrawl4ai/model_loader.py226 # Create the models directory if it doesn't existCOMMENT
MEDIUMcrawl4ai/async_configs.py1012 # Create a funciton returns dict of the objectCOMMENT
MEDIUMcrawl4ai/async_configs.py2073 # Create a funciton returns dict of the objectCOMMENT
MEDIUMcrawl4ai/async_configs.py2201 # Create a new config with streaming enabledSTRING
MEDIUMcrawl4ai/async_configs.py2204 # Create a new config with multiple updatesSTRING
MEDIUMcrawl4ai/async_url_seeder.py1240 # Create a bounded queue for results to prevent RAM issuesCOMMENT
MEDIUMcrawl4ai/browser_manager.py1694 # Create a new page from the chosen contextCOMMENT
MEDIUMcrawl4ai/browser_manager.py482 # Create a BrowserProfiler instance and delegate to itCOMMENT
MEDIUMcrawl4ai/browser_manager.py505 # Create a BrowserProfiler instance and delegate to itCOMMENT
MEDIUMcrawl4ai/browser_manager.py528 # Create a BrowserProfiler instance and delegate to itCOMMENT
MEDIUMcrawl4ai/chunking_strategy.py7# Define the abstract base class for chunking strategiesCOMMENT
MEDIUMcrawl4ai/chunking_strategy.py27# Create an identity chunking strategy f(x) = [x]COMMENT
MEDIUMcrawl4ai/async_webcrawler.py266 # Initialize processing variablesCOMMENT
MEDIUMcrawl4ai/async_webcrawler.py829 # Define the source selection logic using dict dispatchCOMMENT
MEDIUMcrawl4ai/deep_crawling/bfs_strategy.py51 # Create a new logger if logger is None, dict, or any other non-Logger typeCOMMENT
MEDIUMcrawl4ai/deep_crawling/bff_strategy.py62 # Create a new logger if logger is None, dict, or any other non-Logger typeCOMMENT
MEDIUMcrawl4ai/js_snippet/__init__.py4# Create a function get name of a js script, then load from the CURRENT folder of this script and return its content as COMMENT
MEDIUMcrawl4ai/components/crawler_monitor.py167 # Create the status textCOMMENT
MEDIUMcrawl4ai/components/crawler_monitor.py180 # Create a table for status countsCOMMENT
MEDIUMcrawl4ai/components/crawler_monitor.py261 # Create a table for task detailsCOMMENT
MEDIUMcrawl4ai/components/crawler_monitor.py374 # Create a more visible footer panelCOMMENT
MEDIUMtests/test_pyopenssl_security_fix.py75 # Create a basic SSL context to verify functionalityCOMMENT
MEDIUMtests/test_raw_html_redirected_url.py16 # Create a dummy decoratorCOMMENT
MEDIUMtests/test_raw_html_redirected_url.py51 # Create a large HTML (100KB+)COMMENT
MEDIUMtests/test_raw_html_edge_cases.py259 # Create a temp fileCOMMENT
MEDIUMtests/docker/test_config_object.py54 # Create the configCOMMENT
MEDIUMtests/memory/test_dispatcher_stress.py36# Create a memory restrictor to simulate limited memory environmentCOMMENT
MEDIUMtests/memory/test_dispatcher_stress.py330 # Create a nightmare scenario - multiple overlapping spikesCOMMENT
MEDIUMtests/memory/benchmark_report.py230 # Create the plotCOMMENT
MEDIUMtests/memory/benchmark_report.py307 # Create the plotCOMMENT
MEDIUMtests/memory/benchmark_report.py871 # Create the benchmark reporterSTRING
MEDIUMtests/proxy/test_proxy_config.py477 # Create a large list of proxy stringsCOMMENT
MEDIUMtests/general/test_mhtml.py27 # Create a fresh browser config and crawler instance for this testCOMMENT
MEDIUMtests/general/test_mhtml.py32 # Create a fresh crawler instanceCOMMENT
MEDIUMtests/general/test_mhtml.py89 # Create a fresh browser config and crawler instance for this testCOMMENT
MEDIUMtests/general/test_mhtml.py94 # Create a fresh crawler instanceCOMMENT
MEDIUMtests/general/test_mhtml.py129 # Create a fresh browser config and crawler instance for this testCOMMENT
MEDIUMtests/general/test_mhtml.py134 # Create a fresh crawler instanceCOMMENT
MEDIUMtests/general/test_mhtml.py167 # Create a fresh browser config and crawler instance for this testCOMMENT
92 more matches not shown…
Structural Annotation Overuse249 hits · 400 pts
SeverityFileLineSnippetContext
LOWcrawl4ai/cache_validator.py112 # Step 1: Try HEAD request with conditional headersCOMMENT
LOWcrawl4ai/cache_validator.py156 # Step 2: No conditional headers available, try fingerprint onlyCOMMENT
LOWcrawl4ai/cache_validator.py180 # Step 3: No validation data availableCOMMENT
LOWcrawl4ai/utils.py2275 # IMPORTANT: Don't use quote(unquote()) as it mangles + signs in URLsCOMMENT
LOWcrawl4ai/async_url_seeder.py914 # Step 1: Find sitemap URL and get lastmod (needed for validation)COMMENT
LOWcrawl4ai/async_url_seeder.py938 # Step 2: Check cache validity (skip if force=True)COMMENT
LOWcrawl4ai/async_url_seeder.py993 # Step 4: Write to cache (FALLBACK: if write fails, URLs still yielded above)COMMENT
LOWcrawl4ai/async_url_seeder.py952 # Step 3: Fetch fresh URLsCOMMENT
LOWcrawl4ai/cloud/cli.py253 # Step 1: Shrink (unless --no-shrink)COMMENT
LOWcrawl4ai/cloud/cli.py266 # Step 2: Package as tar.gzCOMMENT
LOWcrawl4ai/cloud/cli.py281 # Step 3: UploadCOMMENT
LOWdeploy/docker/c4ai-doc-context.md2985 # Step 1: Create a pruning filterCOMMENT
LOWdeploy/docker/c4ai-doc-context.md2995 # Step 2: Insert it into a Markdown GeneratorCOMMENT
LOWdeploy/docker/c4ai-doc-context.md2998 # Step 3: Pass it to CrawlerRunConfigCOMMENT
LOWdeploy/docker/c4ai-doc-context.md3857 # Step 1: Crawl the Web URLCOMMENT
LOWdeploy/docker/c4ai-doc-context.md3871 # Step 2: Crawl from the Local HTML FileCOMMENT
LOWdeploy/docker/c4ai-doc-context.md3885 # Step 3: Crawl Using Raw HTML ContentCOMMENT
LOWdeploy/docker/c4ai-doc-context.md4554 # Step 1: Load initial Hacker News pageCOMMENT
LOWdeploy/docker/c4ai-doc-context.md4565 # Step 2: Let's scroll and click the "More" linkCOMMENT
LOWdeploy/docker/c4ai-doc-context.md4659 # Step 1: Load initial commitsCOMMENT
LOWdeploy/docker/c4ai-doc-context.md4674 # Step 2: For subsequent pages, we run JS to click 'Next Page' if it existsCOMMENT
LOWtests/test_webhook_feature.sh104# Step 1: Save current branch and fetch PRCOMMENT
LOWtests/test_webhook_feature.sh112# Step 2: Switch to new branchCOMMENT
LOWtests/test_webhook_feature.sh117# Step 3: Activate virtual environmentCOMMENT
LOWtests/test_webhook_feature.sh128# Step 4: Install server dependenciesCOMMENT
LOWtests/test_webhook_feature.sh147# Step 5: Start Redis in backgroundCOMMENT
LOWtests/test_webhook_feature.sh183# Step 6: Create and run webhook testCOMMENT
LOWtests/test_webhook_feature.sh292# Step 7: Verify resultsCOMMENT
LOWtests/test_webhook_feature.sh303# Step 8: Cleanup happens automatically via trapCOMMENT
LOWtests/test_pyopenssl_update.py141 # Step 1: Check versionsCOMMENT
LOWtests/test_pyopenssl_update.py147 # Step 2: Test basic crawlingCOMMENT
LOWtests/test_pyopenssl_update.py153 # Step 3: Test stealth modeCOMMENT
LOWtests/WEBHOOK_TEST_README.md45#### Step 1: Branch ManagementCOMMENT
LOWtests/WEBHOOK_TEST_README.md50#### Step 2: Environment SetupCOMMENT
LOWtests/WEBHOOK_TEST_README.md55#### Step 3: Service StartupCOMMENT
LOWtests/WEBHOOK_TEST_README.md60#### Step 4: Webhook TestCOMMENT
LOWtests/WEBHOOK_TEST_README.md66#### Step 5: CleanupCOMMENT
LOWtests/proxy/test_proxy_verify.py79 # Step 1: Verify IPsCOMMENT
LOWtests/proxy/test_proxy_verify.py86 # Step 2: Get NST proxiesCOMMENT
LOWtests/proxy/test_proxy_verify.py97 # Step 3: Test Chanel with all available proxiesCOMMENT
LOWtests/general/test_async_url_seeder_bm25.py558 # Step 1: Discover and score URLsCOMMENT
LOWtests/general/test_async_url_seeder_bm25.py587 # Step 3: Verify these URLs would be good for actual crawlingCOMMENT
LOWtests/general/test_async_url_seeder_bm25.py573 # Step 2: Analyze top resultsCOMMENT
LOWtests/async/test_browser_lifecycle.py608 # Step 1: open all sessionsCOMMENT
LOWtests/async/test_browser_lifecycle.py615 # Step 2: navigate each session to a second pageCOMMENT
LOWtests/async/test_browser_lifecycle.py620 # Step 3: kill sessions one by one, verify others unaffectedCOMMENT
LOWtests/async/test_browser_lifecycle.py936 # Step 1: open sessionCOMMENT
LOWtests/async/test_browser_lifecycle.py943 # Step 2: concurrent non-session crawlsCOMMENT
LOWtests/async/test_browser_lifecycle.py952 # Step 3: kill sessionCOMMENT
LOWtests/async/test_browser_lifecycle.py955 # Step 4: trigger recycleCOMMENT
LOWtests/async/test_browser_lifecycle.py962 # Step 5: new session on fresh browserCOMMENT
LOWtests/async/test_browser_lifecycle.py970 # Step 6: verify it worksCOMMENT
LOWtests/async/test_browser_memory.py774 # Step 1: login — sets cookieCOMMENT
LOWtests/async/test_browser_memory.py779 # Step 2: dashboard — cookie should carry over via sessionCOMMENT
LOWtests/browser/test_builtin_browser.py52 # Step 1: Create a BrowserManager with builtin modeCOMMENT
LOWtests/browser/test_builtin_browser.py57 # Step 2: Check if we have a BuiltinBrowserStrategyCOMMENT
LOWtests/browser/test_builtin_browser.py69 # Step 3: Start the manager to launch or connect to builtin browserCOMMENT
LOWtests/browser/test_builtin_browser.py78 # Step 4: Get browser info from the strategyCOMMENT
LOWtests/browser/test_builtin_browser.py122 # Step 2: Get multiple pagesCOMMENT
LOWtests/browser/test_builtin_browser.py149 # Step 1: Get browser statusCOMMENT
189 more matches not shown…
Cross-Language Confusion (JS/TS)42 hits · 255 pts
SeverityFileLineSnippetContext
HIGHdocs/md_v2/ask_ai/ask-ai.js72 print(result.markdown[:300]) # Print first 300 charsCODE
HIGHdocs/md_v2/marketplace/frontend/app-detail.js155 print(result.markdown)`;CODE
HIGHdocs/md_v2/marketplace/frontend/app-detail.js172 print(result.status_code)`;CODE
HIGHdocs/md_v2/marketplace/frontend/app-detail.js191 print(result.extracted_content)`;CODE
HIGHdocs/md_v2/marketplace/frontend/app-detail.js240 print(f"Found {len(products)} products")CODE
HIGHdocs/md_v2/marketplace/frontend/app-detail.js243 print(f"- {product['title']}: {product['price']}")CODE
HIGH…md_v2/apps/crawl4ai-assistant/content/scriptBuilder.js2418 print("✅ Automation completed successfully!")CODE
HIGH…md_v2/apps/crawl4ai-assistant/content/scriptBuilder.js2419 print(f"Final URL: {result.url}")CODE
HIGH…md_v2/apps/crawl4ai-assistant/content/scriptBuilder.js2423 print("❌ Automation failed:", result.error_message)CODE
HIGH…md_v2/apps/crawl4ai-assistant/content/scriptBuilder.js2452print(f"💾 C4A Script saved to: {script_path}")STRING
HIGH…md_v2/apps/crawl4ai-assistant/content/scriptBuilder.js2453print("\\n📜 Generated C4A Script:")STRING
HIGH…md_v2/apps/crawl4ai-assistant/content/scriptBuilder.js2454print(C4A_SCRIPT)STRING
HIGH…md_v2/apps/crawl4ai-assistant/content/scriptBuilder.js2464print("\\n💡 To execute this C4A script, compile it to JavaScript first!")STRING
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1737 print(f"\\n✅ Successfully extracted {len(data)} items!")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1744 print("\\n📊 Sample results (first 2 items):")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1746 print(f"\\nItem {i}:")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1748 print(f" {key}: {value}")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1752 print("❌ Extraction failed:", result.error_message)CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1753 return NoneCODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1759 print("\\n🎯 Next steps:")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1760 print("1. Install Crawl4AI: pip install crawl4ai")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1761 print("2. Modify the URL or add multiple URLs")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1762 print("3. Customize crawler options as needed")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1763 print("4. Check 'extracted_data.json' for full results")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1817 print("✅ Schema generated successfully!")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1818 print(f"📄 Schema saved to: {schema_path}")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1819 print("\\nGenerated schema:")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1820 print(json.dumps(schema, indent=2))CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1825 print(f"❌ Error generating schema: {e}")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1826 return NoneCODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1830 print("\\n🧪 Testing extraction on live webpage...")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1837 print("❌ Schema file not found. Run generate_schema() first.")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1859 print(f"\\n✅ Successfully extracted {len(data)} items!")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1866 print("\\n📊 Sample results (first 2 items):")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1868 print(f"\\nItem {i}:")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1870 print(f" {key}: {value}")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1872 print("❌ Extraction failed:", result.error_message)CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1882 print("\\n🎯 Next steps:")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1883 print("1. Review the generated schema in 'generated_schema.json'")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1884 print("2. Uncomment the test_extraction() line to test on the live site")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1885 print("3. Use the schema in your Crawl4AI projects!")CODE
HIGH…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js1803 print("🔧 Generating extraction schema...")CODE
Deep Nesting264 hits · 212 pts
SeverityFileLineSnippetContext
LOWcrawl4ai/async_database.py102CODE
LOWcrawl4ai/async_database.py478CODE
LOWcrawl4ai/ssl_certificate.py62CODE
LOWcrawl4ai/adaptive_crawler.py871CODE
LOWcrawl4ai/adaptive_crawler.py1330CODE
LOWcrawl4ai/adaptive_crawler.py1570CODE
LOWcrawl4ai/adaptive_crawler.py1845CODE
LOWcrawl4ai/extraction_strategy.py641CODE
LOWcrawl4ai/extraction_strategy.py786CODE
LOWcrawl4ai/extraction_strategy.py843CODE
LOWcrawl4ai/extraction_strategy.py1088CODE
LOWcrawl4ai/extraction_strategy.py1178CODE
LOWcrawl4ai/extraction_strategy.py1764CODE
LOWcrawl4ai/extraction_strategy.py2109CODE
LOWcrawl4ai/extraction_strategy.py2348CODE
LOWcrawl4ai/extraction_strategy.py2126CODE
LOWcrawl4ai/extraction_strategy.py2357CODE
LOWcrawl4ai/domain_mapper.py305CODE
LOWcrawl4ai/domain_mapper.py361CODE
LOWcrawl4ai/domain_mapper.py471CODE
LOWcrawl4ai/domain_mapper.py506CODE
LOWcrawl4ai/domain_mapper.py671CODE
LOWcrawl4ai/domain_mapper.py713CODE
LOWcrawl4ai/domain_mapper.py853CODE
LOWcrawl4ai/domain_mapper.py902CODE
LOWcrawl4ai/domain_mapper.py477CODE
LOWcrawl4ai/cache_validator.py83CODE
LOWcrawl4ai/markdown_generation_strategy.py148CODE
LOWcrawl4ai/hub.py41CODE
LOWcrawl4ai/content_scraping_strategy.py231CODE
LOWcrawl4ai/content_scraping_strategy.py410CODE
LOWcrawl4ai/content_scraping_strategy.py517CODE
LOWcrawl4ai/content_scraping_strategy.py577CODE
LOWcrawl4ai/content_scraping_strategy.py615CODE
LOWcrawl4ai/user_agent_generator.py261CODE
LOWcrawl4ai/user_agent_generator.py299CODE
LOWcrawl4ai/async_dispatcher.py175CODE
LOWcrawl4ai/async_dispatcher.py228CODE
LOWcrawl4ai/async_dispatcher.py374CODE
LOWcrawl4ai/async_dispatcher.py471CODE
LOWcrawl4ai/async_dispatcher.py530CODE
LOWcrawl4ai/async_dispatcher.py635CODE
LOWcrawl4ai/cli.py110CODE
LOWcrawl4ai/cli.py501CODE
LOWcrawl4ai/cli.py580CODE
LOWcrawl4ai/cli.py1032CODE
LOWcrawl4ai/utils.py76CODE
LOWcrawl4ai/utils.py419CODE
LOWcrawl4ai/utils.py555CODE
LOWcrawl4ai/utils.py707CODE
LOWcrawl4ai/utils.py889CODE
LOWcrawl4ai/utils.py1143CODE
LOWcrawl4ai/utils.py2169CODE
LOWcrawl4ai/utils.py3084CODE
LOWcrawl4ai/utils.py3344CODE
LOWcrawl4ai/utils.py3620CODE
LOWcrawl4ai/utils.py1335CODE
LOWcrawl4ai/browser_profiler.py83CODE
LOWcrawl4ai/browser_profiler.py196CODE
LOWcrawl4ai/browser_profiler.py252CODE
204 more matches not shown…
Cross-Language Confusion41 hits · 210 pts
SeverityFileLineSnippetContext
HIGHcrawl4ai/browser_adapter.py306 window.__capturedConsole.push({CODE
HIGHcrawl4ai/browser_adapter.py340 window.__capturedErrors.push({CODE
HIGHcrawl4ai/browser_adapter.py357 window.__capturedErrors.push({CODE
HIGHcrawl4ai/browser_adapter.py360 stack: event.reason && event.reason.stack ? event.reason.stack : '',CODE
HIGHcrawl4ai/prompts.py1357if (card && card.shadowRoot) {CODE
HIGHcrawl4ai/prompts.py1366 if (card && card.shadowRoot) {CODE
HIGHcrawl4ai/async_crawler_strategy.py2063 # return {{ success: false, error: err.toString(), stack: err.stack }};COMMENT
HIGHcrawl4ai/async_crawler_strategy.py1363 htmlChunks.push(previousHTML);CODE
HIGHcrawl4ai/async_crawler_strategy.py1375 htmlChunks.push(currentHTML);CODE
HIGHcrawl4ai/async_crawler_strategy.py1404 uniqueElements.push(element.outerHTML);CODE
HIGHcrawl4ai/async_crawler_strategy.py1530 error: error.toString(),CODE
HIGHcrawl4ai/async_crawler_strategy.py1574 error: error.toString(),CODE
HIGHcrawl4ai/async_crawler_strategy.py1870 if (rect.width > 0 && rect.height > 0) {CODE
HIGHcrawl4ai/async_crawler_strategy.py2081 return {{ success: false, error: err.toString(), stack: err.stack }};CODE
HIGHcrawl4ai/async_crawler_strategy.py2212 error: error.toString(),CODE
HIGHcrawl4ai/async_crawler_strategy.py2223 error: error.toString(),CODE
HIGHcrawl4ai/async_crawler_strategy.py2344 error: e.toString()CODE
HIGHdeploy/docker/work_queue.py10limit set to 0 (or null) means "unbounded" - i.e. the previous behavior is fullySTRING
HIGHtests/test_cloud_bugs_batch.py96httpbin_anything = '<html><head></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">{"args": {}, "daCODE
HIGHtests/test_main.py73 "const loadMoreButton = Array.from(document.querySelectorAll('button')).find(button => button.textContenCODE
HIGHtests/test_virtual_scroll.py44 allData.push({CODE
HIGHtests/test_virtual_scroll.py57 items.push(`<div class="item" data-index="${item.id}">${item.text}</div>`);CODE
HIGHtests/test_docker.py91 "const loadMoreButton = Array.from(document.querySelectorAll('button')).find(button => button.textContent.inCODE
HIGHtests/releases/test_release_0.6.4.py89 function gtag(){dataLayer.push(arguments);}CODE
HIGHtests/releases/test_release_0.6.4.py125 function gtag(){dataLayer.push(arguments);}CODE
HIGHtests/docker/test_hooks_comprehensive.py465 return element ? element.getAttribute('content') : null;CODE
HIGHtests/docker/test_server_requests.py145 # It might be null, missing, or populated depending on the server's default behaviorCOMMENT
HIGHtests/general/test_async_crawler_strategy.py283# results.push(e.name);COMMENT
HIGHtests/general/test_async_crawler_strategy.py288# results.push(e.name);COMMENT
HIGHtests/async/test_parameters_and_options.py52 "const loadMoreButton = Array.from(document.querySelectorAll('button')).find(button => button.textContent.inCODE
HIGHdocs/examples/quickstart_examples_set_2.py94 js_code="const loadMoreButton = Array.from(document.querySelectorAll('button')).find(button => button.textContenCODE
HIGHdocs/examples/quickstart_examples_set_2.py361 return commits.length > 0 ? commits[0].textContent.trim() : null;CODE
HIGHdocs/examples/quickstart_examples_set_2.py371 if (newCommit && newCommit !== initialCommit) {CODE
HIGHdocs/examples/stealth_mode_example.py112 console.log('DETECTION_RESULTS:', JSON.stringify(detectionResults, null, 2));CODE
HIGHdocs/examples/rest_call.py32 loadMoreButton && loadMoreButton.click();STRING
HIGHdocs/examples/crawlai_vs_firecrawl.py53 "const loadMoreButton = Array.from(document.querySelectorAll('button')).find(button => button.textContenCODE
HIGHdocs/examples/docker_client_hooks_example.py234 return el ? el.getAttribute('content') : null;CODE
HIGHdocs/examples/quickstart.py94 js_code="const loadMoreButton = Array.from(document.querySelectorAll('button')).find(button => button.textContenCODE
HIGHdocs/examples/quickstart.py361 return commits.length > 0 ? commits[0].textContent.trim() : null;CODE
HIGHdocs/examples/quickstart.py371 if (newCommit && newCommit !== initialCommit) {CODE
HIGH…solver/capsolver_api_integration/solve_recaptcha_v3.py47 args[0] = url.toString();CODE
Redundant / Tautological Comments151 hits · 197 pts
SeverityFileLineSnippetContext
LOWtest_webhook_implementation.py240 # Check if api.py can import webhook moduleCOMMENT
LOWcrawl4ai/async_database.py49 # Check if version update is neededCOMMENT
LOWcrawl4ai/ssl_certificate.py74 # Set check_hostname to False and verify_mode to CERT_NONE temporarilyCOMMENT
LOWcrawl4ai/proxy_strategy.py244 # Check if session exists and hasn't expiredCOMMENT
LOWcrawl4ai/adaptive_crawler.py538 # Check if we have any links leftCOMMENT
LOWcrawl4ai/adaptive_crawler.py715 # Check if KB has changedCOMMENT
LOWcrawl4ai/adaptive_crawler.py1159 # Check if confidence is below minimum threshold (completely irrelevant)COMMENT
LOWcrawl4ai/extraction_strategy.py2222 # Check if there's content after the nth-child partCOMMENT
LOWcrawl4ai/content_scraping_strategy.py934 # Check if we're already in an async contextCOMMENT
LOWcrawl4ai/async_dispatcher.py288 # Check if we're in critical memory stateCOMMENT
LOWcrawl4ai/cli.py1132 # Set output to JSON if not explicitly specifiedCOMMENT
LOWcrawl4ai/cli.py1141 # Check if type does not exist show proper messageCOMMENT
LOWcrawl4ai/cli.py1400 # Check if the value should be one of the allowed optionsCOMMENT
LOWcrawl4ai/cli.py1550 # Display resultsCOMMENT
LOWcrawl4ai/utils.py1202 # Check if the text content has at least word_count_thresholdCOMMENT
LOWcrawl4ai/utils.py1208 # Check if an image has valid display and inside undesired html elementsCOMMENT
LOWcrawl4ai/utils.py3234 # Check if running in Google ColabCOMMENT
LOWcrawl4ai/utils.py290 # Check if cache is still fresh based on TTLCOMMENT
LOWcrawl4ai/utils.py297 # Check if content actually changedCOMMENT
LOWcrawl4ai/utils.py656 # Check if a path has already been saved for this browser typeCOMMENT
LOWcrawl4ai/utils.py1043 # Check if the tag contains text and if it's not just whitespaceCOMMENT
LOWcrawl4ai/utils.py1063 # Check if the tag itself is empty or all its children are empty/whitespaceCOMMENT
LOWcrawl4ai/utils.py1804 # Check if we have exhausted our max attemptsCOMMENT
LOWcrawl4ai/utils.py1897 # Check if we have exhausted our max attemptsCOMMENT
LOWcrawl4ai/utils.py2559 # Check if URL domain ends with base domainCOMMENT
LOWcrawl4ai/utils.py3326 # Check if this is a documentation/reference siteSTRING
LOWcrawl4ai/browser_profiler.py563 # Check if browser started successfullyCOMMENT
LOWcrawl4ai/browser_profiler.py1287 # Check if the browser is still runningCOMMENT
LOWcrawl4ai/browser_profiler.py1303 # Check if the process existsCOMMENT
LOWcrawl4ai/browser_profiler.py114 # Check if item matches any keep patternCOMMENT
LOWcrawl4ai/browser_profiler.py239 # Check if browser process endedCOMMENT
LOWcrawl4ai/browser_profiler.py297 # Check if browser process endedCOMMENT
LOWcrawl4ai/browser_profiler.py371 # Check if browser process endedCOMMENT
LOWcrawl4ai/browser_profiler.py658 # Check if this looks like a valid browser profileCOMMENT
LOWcrawl4ai/browser_profiler.py710 # Check if path exists and is a valid profileCOMMENT
LOWcrawl4ai/browser_profiler.py759 # Check if path exists and is a valid profileCOMMENT
LOWcrawl4ai/browser_profiler.py1115 # Check if browser started successfullyCOMMENT
LOWcrawl4ai/browser_profiler.py1194 # Check if there's an existing browser still runningCOMMENT
LOWcrawl4ai/browser_profiler.py1217 # Check if browser started successfullyCOMMENT
LOWcrawl4ai/docker_client.py94 # Check if hooks are already strings or need conversionCOMMENT
LOWcrawl4ai/async_crawler_strategy.py463 # Check if browser processing is required for file:// or raw: URLsSTRING
LOWcrawl4ai/async_crawler_strategy.py727 # Check if this is a file:// or raw: URL that needs set_content() instead of goto()STRING
LOWcrawl4ai/async_crawler_strategy.py1788 # Check if viewport-only screenshot is forcedSTRING
LOWcrawl4ai/model_loader.py195 # Check if the model directory already existsCOMMENT
LOWcrawl4ai/table_extraction.py110 # Check if this is a data table (not a layout table)COMMENT
LOWcrawl4ai/table_extraction.py760 # Check if there are any tables in the contentCOMMENT
LOWcrawl4ai/table_extraction.py769 # Check if chunking is neededCOMMENT
LOWcrawl4ai/table_extraction.py852 # Check if we got valid tablesCOMMENT
LOWcrawl4ai/table_extraction.py1024 # Check if adding this row would exceed thresholdCOMMENT
LOWcrawl4ai/async_configs.py2267 # Check if given provider starts with any of key in PROVIDER_MODELS_PREFIXESCOMMENT
LOWcrawl4ai/content_filter_strategy.py460 # Check if body is presentCOMMENT
LOWcrawl4ai/browser_manager.py1713 # Check if browser recycle threshold is hit — bump version for next requestsCOMMENT
LOWcrawl4ai/browser_manager.py1775 # Check if this signature belongs to an old browser waiting to be cleaned upCOMMENT
LOWcrawl4ai/browser_manager.py1939 # Check if any signatures from this old version remainCOMMENT
LOWcrawl4ai/browser_manager.py1337 # Check if there is value for crawlerRunConfig.proxy_config set add that to contextSTRING
LOWcrawl4ai/async_webcrawler.py506 # Check if blocked (skip for raw: URLs —COMMENT
LOWcrawl4ai/deep_crawling/bfs_strategy.py239 # Check if we've already reached max_pages before starting a new levelCOMMENT
LOWcrawl4ai/deep_crawling/bfs_strategy.py357 # Check if we've reached the limit during batch processingCOMMENT
LOWcrawl4ai/deep_crawling/filters.py170 # Check if it's a regex patternCOMMENT
LOWcrawl4ai/deep_crawling/filters.py491 # Check if domain matches any allowed domain (including subdomains)COMMENT
91 more matches not shown…
Verbosity Indicators107 hits · 176 pts
SeverityFileLineSnippetContext
LOWcrawl4ai/cache_validator.py112 # Step 1: Try HEAD request with conditional headersCOMMENT
LOWcrawl4ai/cache_validator.py156 # Step 2: No conditional headers available, try fingerprint onlyCOMMENT
LOWcrawl4ai/cache_validator.py180 # Step 3: No validation data availableCOMMENT
LOWcrawl4ai/async_url_seeder.py914 # Step 1: Find sitemap URL and get lastmod (needed for validation)COMMENT
LOWcrawl4ai/async_url_seeder.py938 # Step 2: Check cache validity (skip if force=True)COMMENT
LOWcrawl4ai/async_url_seeder.py993 # Step 4: Write to cache (FALLBACK: if write fails, URLs still yielded above)COMMENT
LOWcrawl4ai/async_url_seeder.py952 # Step 3: Fetch fresh URLsCOMMENT
LOWcrawl4ai/cloud/cli.py253 # Step 1: Shrink (unless --no-shrink)COMMENT
LOWcrawl4ai/cloud/cli.py266 # Step 2: Package as tar.gzCOMMENT
LOWcrawl4ai/cloud/cli.py281 # Step 3: UploadCOMMENT
LOWtests/test_webhook_feature.sh104# Step 1: Save current branch and fetch PRCOMMENT
LOWtests/test_webhook_feature.sh112# Step 2: Switch to new branchCOMMENT
LOWtests/test_webhook_feature.sh117# Step 3: Activate virtual environmentCOMMENT
LOWtests/test_webhook_feature.sh128# Step 4: Install server dependenciesCOMMENT
LOWtests/test_webhook_feature.sh147# Step 5: Start Redis in backgroundCOMMENT
LOWtests/test_webhook_feature.sh183# Step 6: Create and run webhook testCOMMENT
LOWtests/test_webhook_feature.sh292# Step 7: Verify resultsCOMMENT
LOWtests/test_webhook_feature.sh303# Step 8: Cleanup happens automatically via trapCOMMENT
LOWtests/test_pyopenssl_update.py141 # Step 1: Check versionsCOMMENT
LOWtests/test_pyopenssl_update.py147 # Step 2: Test basic crawlingCOMMENT
LOWtests/test_pyopenssl_update.py153 # Step 3: Test stealth modeCOMMENT
LOWtests/proxy/test_proxy_verify.py79 # Step 1: Verify IPsCOMMENT
LOWtests/proxy/test_proxy_verify.py86 # Step 2: Get NST proxiesCOMMENT
LOWtests/proxy/test_proxy_verify.py97 # Step 3: Test Chanel with all available proxiesCOMMENT
LOWtests/general/test_async_url_seeder_bm25.py558 # Step 1: Discover and score URLsCOMMENT
LOWtests/general/test_async_url_seeder_bm25.py587 # Step 3: Verify these URLs would be good for actual crawlingCOMMENT
LOWtests/general/test_async_url_seeder_bm25.py573 # Step 2: Analyze top resultsCOMMENT
LOWtests/async/test_browser_lifecycle.py608 # Step 1: open all sessionsCOMMENT
LOWtests/async/test_browser_lifecycle.py615 # Step 2: navigate each session to a second pageCOMMENT
LOWtests/async/test_browser_lifecycle.py620 # Step 3: kill sessions one by one, verify others unaffectedCOMMENT
LOWtests/async/test_browser_lifecycle.py936 # Step 1: open sessionCOMMENT
LOWtests/async/test_browser_lifecycle.py943 # Step 2: concurrent non-session crawlsCOMMENT
LOWtests/async/test_browser_lifecycle.py952 # Step 3: kill sessionCOMMENT
LOWtests/async/test_browser_lifecycle.py955 # Step 4: trigger recycleCOMMENT
LOWtests/async/test_browser_lifecycle.py962 # Step 5: new session on fresh browserCOMMENT
LOWtests/async/test_browser_lifecycle.py970 # Step 6: verify it worksCOMMENT
LOWtests/async/test_browser_memory.py774 # Step 1: login — sets cookieCOMMENT
LOWtests/async/test_browser_memory.py779 # Step 2: dashboard — cookie should carry over via sessionCOMMENT
LOWtests/browser/test_builtin_browser.py52 # Step 1: Create a BrowserManager with builtin modeCOMMENT
LOWtests/browser/test_builtin_browser.py57 # Step 2: Check if we have a BuiltinBrowserStrategyCOMMENT
LOWtests/browser/test_builtin_browser.py69 # Step 3: Start the manager to launch or connect to builtin browserCOMMENT
LOWtests/browser/test_builtin_browser.py78 # Step 4: Get browser info from the strategyCOMMENT
LOWtests/browser/test_builtin_browser.py122 # Step 2: Get multiple pagesCOMMENT
LOWtests/browser/test_builtin_browser.py149 # Step 1: Get browser statusCOMMENT
LOWtests/browser/test_builtin_browser.py160 # Step 2: Test killing the browserCOMMENT
LOWtests/browser/test_builtin_browser.py172 # Step 3: Check status after killCOMMENT
LOWtests/browser/test_builtin_browser.py184 # Step 4: Launch a new browserCOMMENT
LOWtests/browser/test_builtin_browser.py206 # Step 1: Create first managerCOMMENT
LOWtests/browser/test_builtin_browser.py211 # Step 2: Create second managerCOMMENT
LOWtests/browser/test_builtin_browser.py216 # Step 3: Start both managers (should connect to the same builtin browser)COMMENT
LOWtests/browser/test_builtin_browser.py241 # Step 4: Test using both managersCOMMENT
LOWtests/browser/test_builtin_browser.py263 # Step 5: Close both managersCOMMENT
LOWtests/browser/test_builtin_browser.py309 # Step 2: Test killing the browser while manager is activeCOMMENT
LOWtests/browser/test_builtin_browser.py103 # Step 1: Get a single pageCOMMENT
LOWtests/browser/test_builtin_browser.py282 # Step 1: Test multiple starts with the same managerCOMMENT
LOWtests/browser/test_builtin_browser.py472 # Step 1: Create and start multiple browser managers in parallelCOMMENT
LOWtests/browser/test_builtin_browser.py666 # Step 1: Create and start multiple browser managers in parallelCOMMENT
LOWtests/async_assistant/test_extract_pipeline.py62 # Step 1: StartingCOMMENT
LOWtests/async_assistant/test_extract_pipeline.py65 # Step 2: Quick crawl for analysisCOMMENT
LOWtests/async_assistant/test_extract_pipeline.py79 # Step 3: HTML Skimming using lxmlCOMMENT
47 more matches not shown…
Magic Placeholder Names15 hits · 80 pts
SeverityFileLineSnippetContext
HIGHdeploy/docker/c4ai-doc-context.md1105 llm_config = LLMConfig(provider="openai/gpt-4",api_token="sk-YOUR_API_KEY")STRING
HIGHdocs/md_v2/complete-sdk-reference.md2928 llm_config = LLMConfig(provider="openai/gpt-4",api_token="sk-YOUR_API_KEY")STRING
HIGHdocs/md_v2/core/adaptive-crawling.md119 api_token='your-api-key'CODE
HIGHdocs/md_v2/core/adaptive-crawling.md124 api_token='your-api-key'CODE
HIGHdocs/md_v2/core/adaptive-crawling.md133 'api_token': 'your-api-key'CODE
HIGHdocs/md_v2/core/adaptive-crawling.md137 'api_token': 'your-api-key'CODE
HIGHdocs/md_v2/core/table_extraction.md141 api_token="your_api_key",CODE
HIGHdocs/md_v2/core/content-selection.md305 llm_config = LLMConfig(provider="openai/gpt-4",api_token="sk-YOUR_API_KEY")CODE
HIGHdocs/md_v2/marketplace/frontend/app-detail.js181 api_token="your-api-key",CODE
HIGHdocs/md_v2/marketplace/frontend/app-detail.html167 api_token="your-api-key",CODE
HIGHdocs/md_v2/blog/releases/0.5.0.md409 llm_config = LLMConfig(provider="openai/gpt-4o", api_token="YOUR_API_KEY")CODE
HIGH…cs/examples/url_seeder/bbc_sport_research_assistant.py21- export GEMINI_API_KEY="your-api-key"STRING
HIGHdocs/examples/website-to-api/README.md68 "api_token": "your-api-key-here"CODE
HIGHdocs/examples/website-to-api/README.md160 "api_token": "your-api-key-here"CODE
HIGHdocs/examples/website-to-api/README.md204 api_token="your-api-key"CODE
Fake / Example Data53 hits · 52 pts
SeverityFileLineSnippetContext
LOWcrawl4ai/docker_client.py212 await client.authenticate("user@example.com")CODE
LOWcrawl4ai/js_snippet/update_image_dimensions.js15 if (img.src.includes("placeholder") || img.src.includes("icon")) return false;CODE
LOWdeploy/docker/WEBHOOK_EXAMPLES.md206 "author": "John Doe",CODE
LOWdeploy/docker/README.md473 # await client.authenticate("user@example.com") # See Server Configuration sectionCOMMENT
LOWdeploy/docker/README.md823 "author": "John Doe",CODE
LOWdeploy/docker/c4ai-doc-context.md2784 "email": "user@example.com"CODE
LOWdeploy/docker/c4ai-doc-context.md2791 "email": "user@example.com",CODE
LOWdeploy/docker/c4ai-doc-context.md2809 await client.authenticate("user@example.com")CODE
LOWdeploy/docker/c4ai-doc-context.md3549 ["John Doe", "34", "New York"],CODE
LOWtests/memory/test_stress_sdk.py57 self.lorem_words = " ".join("lorem ipsum dolor sit amet " * 100).split()CODE
LOWtests/memory/test_stress_sdk.py57 self.lorem_words = " ".join("lorem ipsum dolor sit amet " * 100).split()CODE
LOWtests/general/test_generate_schema_usage.py87 api_token: str = "fake-token"STRING
LOWtests/async/test_browser_memory.py37<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.CODE
LOWtests/async/test_browser_memory.py37<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.CODE
LOWtests/regression/test_reg_extraction.py363 assert any("sales@example.org" in v for v in values), (CODE
LOWtests/adaptive/test_embedding_strategy.py141 'api_token': os.getenv('OPENAI_API_KEY', 'dummy-key')CODE
LOWtests/adaptive/test_embedding_performance.py125 'api_token': 'dummy-key'CODE
LOWdocs/md_v2/core/self-hosting.md1299 "author": "John Doe",CODE
LOWdocs/md_v2/core/self-hosting.md1660 # await client.authenticate("user@example.com") # See Server Configuration sectionCOMMENT
LOWdocs/md_v2/core/c4a-script.md174| `SET` | Set input value directly | `SET \`#email\` "user@example.com"` |CODE
LOWdocs/md_v2/core/c4a-script.md204TYPE "user@example.com"CODE
LOWdocs/md_v2/core/c4a-script.md250SET `#name` "John Doe"CODE
LOWdocs/md_v2/core/c4a-script.md347TYPE "user@example.com"STRING
LOWdocs/md_v2/marketplace/README.md17python dummy_data.pyCODE
LOWdocs/md_v2/marketplace/README.md59Coming soon - for now, edit the database directly or modify `dummy_data.py`CODE
LOWdocs/md_v2/marketplace/backend/dummy_data.py154 "Review", "John Doe", ["Playwright Cloud", "Puppeteer Extra"],STRING
LOWdocs/md_v2/marketplace/backend/dummy_data.py209This is a comprehensive article about {title.lower()}. Lorem ipsum dolor sit amet, consectetur adipiscing elit.CODE
LOWdocs/md_v2/marketplace/backend/dummy_data.py209This is a comprehensive article about {title.lower()}. Lorem ipsum dolor sit amet, consectetur adipiscing elit.CODE
LOWdocs/md_v2/blog/releases/0.7.6.md105 "author": "John Doe",CODE
LOWdocs/md_v2/api/c4a-script-reference.md373TYPE "user@example.com"CODE
LOWdocs/md_v2/api/c4a-script-reference.md397SETVAR email = "user@example.com"CODE
LOWdocs/md_v2/api/c4a-script-reference.md527SET `#email` "user@example.com"CODE
LOWdocs/md_v2/api/c4a-script-reference.md766TYPE "user@example.com"CODE
LOWdocs/md_v2/api/c4a-script-reference.md894SETVAR email = "user@example.com"CODE
LOWdocs/md_v2/api/c4a-script-reference.md951SET `#name` "John Doe"CODE
LOWdocs/md_v2/assets/highlight.min.js317 }),re=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","coCODE
LOWdocs/md_v2/apps/crawl4ai-assistant/index.html616 <input type="text" id="userName" name="name" placeholder="John Doe" required>STRING
LOWdocs/md_v2/apps/c4a-script/server.py264TYPE "John Doe"CODE
LOWdocs/md_v2/apps/c4a-script/README.md149TYPE "user@example.com"CODE
LOWdocs/md_v2/apps/c4a-script/playground/index.html276 <p class="text-preview">Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>CODE
LOWdocs/md_v2/apps/c4a-script/playground/index.html276 <p class="text-preview">Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>CODE
LOWdocs/md_v2/apps/c4a-script/assets/app.js596 script: `# Multi-step form with validation\nCLICK \`a[href="#forms"]\`\nWAIT \`#survey-form\` 2\n\n# SteCODE
LOWdocs/releases_review/demo_v0.9.1.py104 has_author = "John Doe" in fitSTRING
LOWdocs/blog/release-v0.7.6.md105 "author": "John Doe",CODE
LOWdocs/examples/docker_config_obj.py124 await client.authenticate("user@example.com")CODE
LOWdocs/examples/docker_config_obj.py193 json={"email": "user@example.com"}CODE
LOWdocs/examples/c4a_script/generate_script_hello_world.py28 goal = "Fill in email 'user@example.com', password 'secret123', and submit the form"STRING
LOWdocs/examples/c4a_script/tutorial/server.py264TYPE "John Doe"CODE
LOWdocs/examples/c4a_script/tutorial/README.md149TYPE "user@example.com"CODE
LOWdocs/examples/c4a_script/tutorial/playground/index.html276 <p class="text-preview">Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>CODE
LOWdocs/examples/c4a_script/tutorial/playground/index.html276 <p class="text-preview">Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>CODE
LOWdocs/examples/c4a_script/tutorial/assets/app.js596 script: `# Multi-step form with validation\nCLICK \`a[href="#forms"]\`\nWAIT \`#survey-form\` 2\n\n# SteCODE
LOWdocs/examples/website-to-api/static/index.html89 "author": "John Doe",CODE
Over-Commented Block62 hits · 52 pts
SeverityFileLineSnippetContext
LOWdocker-compose.yml1version: '3.8'COMMENT
LOWcrawl4ai/adaptive_crawler.py201 embedding_top_k_weight: float = 0.3 # Weight for top-k average in hybrid scoringCOMMENT
LOWcrawl4ai/adaptive_crawler.py561 # if hasattr(result, 'extracted_content') and result.extracted_content:COMMENT
LOWcrawl4ai/adaptive_crawler.py761 COMMENT
LOWcrawl4ai/adaptive_crawler.py1021 COMMENT
LOWcrawl4ai/adaptive_crawler.py1041 COMMENT
LOWcrawl4ai/adaptive_crawler.py1061 # # Top-k average (top 3)COMMENT
LOWcrawl4ai/models.py161 # Anti-bot retry/proxy usage statsCOMMENT
LOWcrawl4ai/extraction_strategy.py241 # self.tokenizer = self.model.tokenizerCOMMENT
LOWcrawl4ai/__init__.py221# try:COMMENT
LOWcrawl4ai/utils.py1821 # print("Error during completion request:", str(e))COMMENT
LOWcrawl4ai/utils.py3181 # for element in tree.xpath('//*[contains(@class, "")]'):COMMENT
LOWcrawl4ai/utils.py3201 # if len(elements) > 1:COMMENT
LOWcrawl4ai/async_crawler_strategy.py841 )COMMENT
LOWcrawl4ai/async_crawler_strategy.py861 # except Error as e:COMMENT
LOWcrawl4ai/async_crawler_strategy.py2061 # return {{ success: true, result: script_result }};COMMENT
LOWcrawl4ai/async_url_seeder.py1641 # # 5. API endpoints and data filesCOMMENT
LOWcrawl4ai/async_url_seeder.py1661 # '.woff', '.woff2', '.ttf', '.eot', '.otf'COMMENT
LOWcrawl4ai/html2text/__init__.py1201 # self.inside_pre = TrueCOMMENT
LOWcrawl4ai/legacy/crawler_strategy.py101 self.options.add_argument("--headless")COMMENT
LOWdeploy/docker/server.py141COMMENT
LOWdeploy/docker/c4ai-code-context.md2001COMMENT
LOWdeploy/docker/c4ai-code-context.md5361 dispatch_result: Optional[DispatchResult] = NoneCOMMENT
LOWtests/test_webhook_feature.sh1#!/bin/bashCOMMENT
LOWtests/test_llm_simple_url.py101 # result_default = await crawler.arun(COMMENT
LOWtests/test_llm_simple_url.py121 # print(f" Default headers: {len(default_first['headers'])} columns")COMMENT
LOWtests/test_cli_docs.py21COMMENT
LOWtests/docker/test_hooks_utility.py181 # print("✓ All tests completed successfully!")COMMENT
LOWtests/docker/simple_api_test.py141 # result = self.test_get_endpoint("/schema")COMMENT
LOWtests/docker/test_serialization.py121# WebScrapingStrategy, LXMLWebScrapingStrategyCOMMENT
LOWtests/docker/test_serialization.py141# print("\nSerialized Config:")COMMENT
LOWtests/docker/test_serialization.py161# "language": "english"COMMENT
LOWtests/general/test_async_crawler_strategy.py241# async def test_js_return_values(crawler_strategy):COMMENT
LOWtests/general/test_async_crawler_strategy.py281# nonExistentFunction();COMMENT
LOWtests/async/test_error_handling.py1# import osCOMMENT
LOWtests/async/test_error_handling.py21# async def cleanup(self):COMMENT
LOWtests/async/test_error_handling.py41# # # Simulating a timeout by using a very short timeout valueCOMMENT
LOWtests/async/test_error_handling.py61# # @pytest.mark.asyncioCOMMENT
LOW…est_evaluation_scraping_methods_performance.configs.py281 # "exclude_social_media_links": {COMMENT
LOW…est_evaluation_scraping_methods_performance.configs.py301 # "combo_mode": {COMMENT
LOW…est_evaluation_scraping_methods_performance.configs.py321 # "css_selector": "section#promo-section"COMMENT
LOW…est_evaluation_scraping_methods_performance.configs.py341 # "remove_forms": TrueCOMMENT
LOW…est_evaluation_scraping_methods_performance.configs.py561COMMENT
LOW…est_evaluation_scraping_methods_performance.configs.py581 # if link_diff:COMMENT
LOWtests/async/test_chunking_and_extraction_strategies.py21 result = await crawler.arun(COMMENT
LOWtests/async/test_chunking_and_extraction_strategies.py61 assert len(extracted_data) > 0COMMENT
LOWtests/async/test_edge_cases.py21COMMENT
LOWtests/async/test_edge_cases.py41# url = "https://news.ycombinator.com/" # Hacker News has infinite scrollCOMMENT
LOWtests/browser/manager/demo_browser_manager.py461 start_time = time.time()COMMENT
LOWtests/profiler/test_create_profile.py21 COMMENT
LOWdocs/md_v2/complete-sdk-reference.md3661# ❌ Random URLs (site.com/x7f9g2h)COMMENT
LOWdocs/md_v2/advanced/hooks-auth.md81 # Example 2: (Optional) Simulate a login scenarioCOMMENT
LOWdocs/md_v2/core/self-hosting.md101# AnthropicCOMMENT
LOWdocs/md_v2/core/link-media.md281# ✅ Clean URL structure (docs.python.org/api/reference)COMMENT
LOWdocs/md_v2/ask_ai/ask-ai.js601 // NOTE: Virtual scrolling is complex. For now, we do direct rendering.COMMENT
LOWdocs/md_v2/assets/llm.txt/txt/cli.txt21### Profile Management CommandsCOMMENT
LOWdocs/md_v2/assets/llm.txt/txt/llms-full.txt5681 print(f" Content: {len(http_result.html)} chars")COMMENT
LOW…_v2/assets/llm.txt/txt/http_based_crawler_strategy.txt321 COMMENT
LOWdocs/md_v2/assets/llm.txt/txt/llms-full-v0.1.1.txt5681 print(f" Content: {len(http_result.html)} chars")COMMENT
LOWdocs/examples/docker/demo_docker_api.py1281 # await demo_param_js_execution(client)COMMENT
2 more matches not shown…
Docstring Block Structure10 hits · 50 pts
SeverityFileLineSnippetContext
HIGHcrawl4ai/extraction_strategy.py1706 Generate extraction schema from HTML content or URL(s) (sync version). Args: html (str, opSTRING
HIGHcrawl4ai/extraction_strategy.py1778 Generate extraction schema from HTML content or URL(s) (async version). Use this method when calling fSTRING
HIGHcrawl4ai/utils.py1150 Extracts and cleans content from website HTML, optimizing for useful media and contextual information. ParSTRING
HIGHcrawl4ai/utils.py3697 Convert hook function objects to string representations for Docker API. This utility simplifies the process ofSTRING
HIGHcrawl4ai/async_crawler_strategy.py301 Wait for a condition in a CSP-compliant way. Args: page: Playwright page object STRING
HIGHcrawl4ai/async_crawler_strategy.py439 Crawls a given URL or processes raw HTML/local file content based on the URL prefix. Args: STRING
HIGHcrawl4ai/async_webcrawler.py992 Runs the crawler for multiple URLs concurrently using a configurable dispatcher strategy. Args: STRING
HIGHcrawl4ai/async_webcrawler.py1134 Discovers, filters, and optionally validates URLs for a given domain(s) using sitemaps and Common CrawlSTRING
HIGHcrawl4ai/script/c4ai_script.py624Compile C4A-Script from string or list of strings to JavaScript. Args: script: C4A-Script as a string oSTRING
HIGHdeploy/docker/c4ai-code-context.md2021 Runs the crawler for multiple URLs concurrently using a configurable dispatcher strategy. Args: STRING
AI Slop Vocabulary22 hits · 34 pts
SeverityFileLineSnippetContext
MEDIUMcrawl4ai/adaptive_crawler.py1571 """Print comprehensive statistics about the knowledge baseSTRING
MEDIUMcrawl4ai/prompts.py1174GENERATE_SCRIPT_PROMPT = r"""You are a world-class browser automation specialist. Your sole purpose is to convert a natuSTRING
LOWcrawl4ai/async_crawler_strategy.py1657 # Log the error but don't raise it - we'll just return None for the MHTMLSTRING
LOWcrawl4ai/async_crawler_strategy.py341 # For timeout or other cases, just return FalseSTRING
MEDIUMcrawl4ai/async_url_seeder.py1139 # Use lxml for XML parsing if available, as it's generally more robustCOMMENT
LOWcrawl4ai/browser_manager.py183 # If CDP URL provided, just return itCOMMENT
LOWdeploy/docker/server.py1043 # if no query, just return raw contextsCOMMENT
LOWtests/test_source_sibling_selector.py309 # This is actually fine — let's just use "source" with flat fields instead.COMMENT
MEDIUMtests/docker/test_hooks_comprehensive.py521 """Run comprehensive hook tests"""STRING
MEDIUMtests/memory/test_dispatcher_stress.py269 # First, elevate memory usage to create pressureCOMMENT
MEDIUMtests/memory/benchmark_report.py374 """Generate a comprehensive comparison report of multiple test runs.STRING
MEDIUMtests/general/test_mhtml.py5import re # For more robust MHTML checksCODE
MEDIUMtests/general/test_mhtml.py54 # 3. Check for MHTML structure indicators (more robust than simple string contains)COMMENT
MEDIUMtests/general/test_async_url_seeder_bm25.py597 """Generate a comprehensive report of BM25 scoring effectiveness."""STRING
LOW…est_evaluation_scraping_methods_performance.configs.py69 # No <body> found; just return the <html> rootCOMMENT
MEDIUM…est_evaluation_scraping_methods_performance.configs.py110 # If you prefer ignoring newlines or multiple whitespace, do a more robust cleanupCOMMENT
MEDIUM…s/md_v2/apps/crawl4ai-assistant/content/click2crawl.js780 // Try to generate a robust selectorCOMMENT
LOWdocs/releases_review/v0.7.5_docker_hooks_demo.py367 # Use our reusable hook library - just pass the function objects!STRING
MEDIUMdocs/releases_review/demo_v0.7.7.py477 """Print comprehensive demo summary"""STRING
MEDIUMdocs/releases_review/demo_v0.7.7.py612 # Print comprehensive summaryCOMMENT
MEDIUMdocs/examples/stealth_mode_example.py510 # Show best practicesCOMMENT
LOWdocs/examples/docker_hooks_examples.py359 # Use our reusable hook library - just pass the function objects!STRING
AI Structural Patterns29 hits · 22 pts
SeverityFileLineSnippetContext
LOWcrawl4ai/extraction_strategy.py556CODE
LOWcrawl4ai/extraction_strategy.py1692CODE
LOWcrawl4ai/extraction_strategy.py1764CODE
LOWcrawl4ai/async_dispatcher.py149CODE
LOWcrawl4ai/table_extraction.py690CODE
LOWcrawl4ai/async_configs.py781CODE
LOWcrawl4ai/async_configs.py997CODE
LOWcrawl4ai/async_configs.py1158CODE
LOWcrawl4ai/async_configs.py1586CODE
LOWcrawl4ai/async_configs.py2217CODE
LOWcrawl4ai/async_configs.py2343CODE
LOWcrawl4ai/async_configs.py2442CODE
LOWcrawl4ai/content_filter_strategy.py835CODE
LOWcrawl4ai/browser_manager.py135CODE
LOWcrawl4ai/deep_crawling/bfs_strategy.py25CODE
LOWcrawl4ai/deep_crawling/bff_strategy.py36CODE
LOWcrawl4ai/legacy/web_crawler.py56CODE
LOWcrawl4ai/legacy/web_crawler.py82CODE
LOWcrawl4ai/legacy/web_crawler.py121CODE
LOWcrawl4ai/components/crawler_monitor.py512CODE
LOWdeploy/docker/api.py416CODE
LOWtests/memory/test_stress_sdk.py181CODE
LOWdocs/examples/docker/demo_docker_api.py290CODE
LOWdocs/examples/docker/demo_docker_api.py300CODE
LOWdocs/examples/docker/demo_docker_api.py322CODE
LOWdocs/examples/docker/demo_docker_api.py350CODE
LOWdocs/examples/docker/demo_docker_api.py377CODE
LOWdocs/examples/docker/demo_docker_api.py403CODE
LOWdocs/examples/c4a_script/api_usage_examples.py192CODE
Modern Structural Boilerplate19 hits · 18 pts
SeverityFileLineSnippetContext
LOWcrawl4ai/adaptive_crawler.py296 async def update_state(self, state: CrawlState, new_results: List[CrawlResult]) -> None:CODE
LOWcrawl4ai/adaptive_crawler.py548 async def update_state(self, state: CrawlState, new_results: List[CrawlResult]) -> None:CODE
LOWcrawl4ai/adaptive_crawler.py1233 async def update_state(self, state: CrawlState, new_results: List[CrawlResult]) -> None:CODE
LOWcrawl4ai/__init__.py114__all__ = [CODE
LOWcrawl4ai/hub.py9logger = logging.getLogger(__name__)CODE
LOWcrawl4ai/async_crawler_strategy.py2531 def set_hook(self, hook_type: str, hook_func: Callable) -> None:CODE
LOWcrawl4ai/deep_crawling/__init__.py26__all__ = [CODE
LOWcrawl4ai/script/__init__.py16__all__ = [CODE
LOWcrawl4ai/processors/pdf/__init__.py196__all__ = ["PDFCrawlerStrategy", "PDFContentScrapingStrategy"]STRING
LOWcrawl4ai/processors/pdf/processor.py22logger = logging.getLogger(__name__)CODE
LOWcrawl4ai/cloud/__init__.py12__all__ = [CODE
LOWdeploy/docker/monitor_routes.py11logger = logging.getLogger(__name__)CODE
LOWdeploy/docker/server.py488logger = logging.getLogger(__name__)CODE
LOWdeploy/docker/monitor.py14logger = logging.getLogger(__name__)CODE
LOWdeploy/docker/webhook.py16logger = logging.getLogger(__name__)CODE
LOWdeploy/docker/api.py93logger = logging.getLogger(__name__)CODE
LOWdeploy/docker/egress_broker.py163def set_egress_proxy(url: Optional[str]) -> None:CODE
LOWdeploy/docker/crawler_pool.py9logger = logging.getLogger(__name__)CODE
LOWdeploy/docker/work_queue.py104def set_job_queue(q: Optional[WorkQueue]) -> None:CODE
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALdocs/md_v2/apps/crawl4ai-assistant/libs/marked.min.js47`+s.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):t.push(s);continue}if(e){let r="Infinite loop on bytCODE
Modern AI Meta-Vocabulary4 hits · 8 pts
SeverityFileLineSnippetContext
MEDIUMcrawl4ai/utils.py3535 # Get embedding model from config or use defaultSTRING
MEDIUMtests/adaptive/test_llm_embedding.py85 # "event-driven architecture patterns"COMMENT
MEDIUMdocs/md_v2/core/adaptive-crawling.md169 embedding_llm_config=None, # Use for API-based embeddings (embedding model)CODE
MEDIUMdocs/examples/adaptive_crawling/llm_config_example.py85 # "event-driven architecture patterns"COMMENT
Example Usage Blocks6 hits · 8 pts
SeverityFileLineSnippetContext
LOWcrawl4ai/user_agent_generator.py417# Example usage:COMMENT
LOWcrawl4ai/user_agent_generator.py420 # Usage example:COMMENT
LOWcrawl4ai/browser_profiler.py1379 # Example usageCOMMENT
LOWcrawl4ai/docker_client.py209# Example usageCOMMENT
LOWcrawl4ai/processors/pdf/processor.py456# Usage exampleCOMMENT
LOWtests/profiler/test_create_profile.py6 # Example usageCOMMENT
Dead Code4 hits · 8 pts
SeverityFileLineSnippetContext
MEDIUMcrawl4ai/deep_crawling/crazy.py96CODE
MEDIUMcrawl4ai/legacy/web_crawler.py80CODE
MEDIUMdeploy/docker/webhook.py183CODE
MEDIUMdeploy/docker/webhook.py186CODE
Slop Phrases4 hits · 6 pts
SeverityFileLineSnippetContext
LOWcrawl4ai/models.py327# When removing this code in the future, make sure to:COMMENT
MEDIUMcrawl4ai/table_extraction.py1268 This is a basic implementation - for complex CSS selectors,STRING
MEDIUMcrawl4ai/processors/pdf/__init__.py137 # For simple cases, you can use the sync versionSTRING
MEDIUMdocs/examples/undetected_simple_demo.py88 # Test URLs - you can change theseCOMMENT