Scan timing: clone 1.59s · analysis 51.53s · 4.1 MB · GitHub API rate-limit (preflight)
https://github.com/D4Vinci/Scrapling
· scanned 2026-06-04 04:11 UTC (1 day, 6 hours ago)
· 10 languages
265 findings (131 legacy + 134 scanner) 76th percentile · Python · medium (20-100K LoC) Scanner says 85 (lower by 8)
Last scanned 1 day, 6 hours ago · v2 · 198 findings from 2 sources. Findings combine the legacy security pipeline AND the multi-layer engine (atlas, wiring, flows, ranked) AND verified AI agent contributions.
| Component | Sub-score | Weight | Contribution |
|---|---|---|---|
structure_score |
75.0 | 0.15 | 11.25 |
security_score |
49.7 | 0.25 | 12.43 |
testing_score |
97.0 | 0.20 | 19.40 |
documentation_score |
96.0 | 0.15 | 14.40 |
practices_score |
99.0 | 0.15 | 14.85 |
code_quality |
46.9 | 0.10 | 4.69 |
| Overall | 1.00 | 77.0 |
All 1802 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
benchmark |
software | healthy | benchmarks.py:22 |
wrapper |
software | healthy | benchmarks.py:24 |
test_lxml |
software | healthy | benchmarks.py:47 |
test_bs4_lxml |
software | healthy | benchmarks.py:59 |
test_bs4_html5lib |
software | healthy | benchmarks.py:64 |
test_pyquery |
software | healthy | benchmarks.py:69 |
test_scrapling |
software | healthy | benchmarks.py:74 |
test_parsel |
software | healthy | benchmarks.py:82 |
test_mechanicalsoup |
software | healthy | benchmarks.py:87 |
test_selectolax |
software | healthy | benchmarks.py:94 |
display |
software | healthy | benchmarks.py:98 |
test_scrapling_text |
software | healthy | benchmarks.py:111 |
test_autoscraper |
software | healthy | benchmarks.py:116 |
clean |
software | healthy | cleanup.py:6 |
test_url |
software | healthy | tests/ai/test_ai_mcp.py:242 |
server |
software | healthy | tests/ai/test_ai_mcp.py:246 |
test_get_tool |
software | healthy | tests/ai/test_ai_mcp.py:34 |
test_bulk_get_tool |
software | healthy | tests/ai/test_ai_mcp.py:42 |
test_fetch_tool |
software | healthy | tests/ai/test_ai_mcp.py:50 |
test_bulk_fetch_tool |
software | healthy | tests/ai/test_ai_mcp.py:57 |
test_stealthy_fetch_tool |
software | healthy | tests/ai/test_ai_mcp.py:63 |
test_bulk_stealthy_fetch_tool |
software | healthy | tests/ai/test_ai_mcp.py:70 |
test_open_and_close_session |
software | healthy | tests/ai/test_ai_mcp.py:89 |
test_list_sessions |
software | healthy | tests/ai/test_ai_mcp.py:103 |
test_fetch_with_session |
software | healthy | tests/ai/test_ai_mcp.py:125 |
test_bulk_fetch_with_session |
software | healthy | tests/ai/test_ai_mcp.py:143 |
test_session_type_mismatch |
software | healthy | tests/ai/test_ai_mcp.py:155 |
test_close_nonexistent_session |
software | healthy | tests/ai/test_ai_mcp.py:166 |
test_fetch_with_nonexistent_session |
software | healthy | tests/ai/test_ai_mcp.py:172 |
test_fetch_with_closed_session |
software | healthy | tests/ai/test_ai_mcp.py:178 |
test_open_session_with_custom_id |
software | healthy | tests/ai/test_ai_mcp.py:188 |
test_open_session_duplicate_id_raises |
software | healthy | tests/ai/test_ai_mcp.py:197 |
_png_height |
software | healthy | tests/ai/test_ai_mcp.py:207 |
_serve_html |
software | healthy | tests/ai/test_ai_mcp.py:213 |
do_GET |
software | healthy | tests/ai/test_ai_mcp.py:217 |
log_message |
software | healthy | tests/ai/test_ai_mcp.py:224 |
test_screenshot_png_with_dynamic_session |
software | healthy | tests/ai/test_ai_mcp.py:250 |
test_screenshot_jpeg_with_quality |
software | healthy | tests/ai/test_ai_mcp.py:264 |
test_screenshot_with_stealthy_session |
software | healthy | tests/ai/test_ai_mcp.py:275 |
test_screenshot_full_page_taller_than_viewport |
software | healthy | tests/ai/test_ai_mcp.py:286 |
test_screenshot_invalid_session_id_raises |
software | healthy | tests/ai/test_ai_mcp.py:303 |
test_screenshot_quality_with_png_raises |
software | healthy | tests/ai/test_ai_mcp.py:309 |
test_none_returns_none |
software | healthy | tests/ai/test_ai_mcp.py:322 |
test_empty_dict_returns_none |
software | healthy | tests/ai/test_ai_mcp.py:325 |
test_valid_credentials_returns_tuple |
software | healthy | tests/ai/test_ai_mcp.py:328 |
test_missing_password_raises |
software | healthy | tests/ai/test_ai_mcp.py:332 |
test_missing_username_raises |
software | healthy | tests/ai/test_ai_mcp.py:336 |
configure_selector_mock |
software | healthy | tests/cli/test_cli.py:13 |
html_url |
software | healthy | tests/cli/test_cli.py:28 |
runner |
software | healthy | tests/cli/test_cli.py:32 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
TestMCPServer |
software | healthy | tests/ai/test_ai_mcp.py:22 |
TestSessionManagement |
software | healthy | tests/ai/test_ai_mcp.py:77 |
_Handler |
software | healthy | tests/ai/test_ai_mcp.py:216 |
TestScreenshot |
software | healthy | tests/ai/test_ai_mcp.py:238 |
TestNormalizeCredentials |
software | healthy | tests/ai/test_ai_mcp.py:319 |
TestCLI |
software | healthy | tests/cli/test_cli.py:24 |
TestCurlParser |
software | healthy | tests/cli/test_shell_functionality.py:8 |
TestConvertor |
software | healthy | tests/cli/test_shell_functionality.py:88 |
TestCustomShell |
software | healthy | tests/cli/test_shell_functionality.py:176 |
TestValidators |
software | healthy | tests/fetchers/test_validator.py:9 |
TestCyclicRotationStrategy |
software | healthy | tests/fetchers/test_proxy_rotation.py:9 |
TestProxyRotatorCreation |
software | healthy | tests/fetchers/test_proxy_rotation.py:38 |
TestProxyRotatorRotation |
software | healthy | tests/fetchers/test_proxy_rotation.py:97 |
TestCustomStrategies |
software | healthy | tests/fetchers/test_proxy_rotation.py:135 |
TestProxyRotatorProperties |
software | healthy | tests/fetchers/test_proxy_rotation.py:194 |
TestProxyRotatorThreadSafety |
software | healthy | tests/fetchers/test_proxy_rotation.py:221 |
TestIsProxyError |
software | healthy | tests/fetchers/test_proxy_rotation.py:257 |
CustomError |
software | healthy | tests/fetchers/test_proxy_rotation.py:299 |
TestConstants |
software | healthy | tests/fetchers/test_constants.py:4 |
TestPageInfo |
software | healthy | tests/fetchers/test_pages.py:6 |
TestPagePool |
software | healthy | tests/fetchers/test_pages.py:53 |
TestResponseFactory |
software | healthy | tests/fetchers/test_response_handling.py:7 |
TestErrorScenarios |
software | healthy | tests/fetchers/test_response_handling.py:60 |
TestRandomBrowserSelection |
software | healthy | tests/fetchers/test_impersonate_list.py:11 |
TestFetcherWithImpersonateList |
software | healthy | tests/fetchers/test_impersonate_list.py:42 |
TestFetcherSessionWithImpersonateList |
software | healthy | tests/fetchers/test_impersonate_list.py:84 |
TestImpersonateTypeValidation |
software | healthy | tests/fetchers/test_impersonate_list.py:133 |
TestConstructProxyDict |
software | healthy | tests/fetchers/test_utils.py:142 |
TestFingerprintFunctions |
software | healthy | tests/fetchers/test_utils.py:185 |
TestResponse |
software | healthy | tests/fetchers/test_utils.py:212 |
_MockRequest |
software | healthy | tests/fetchers/test_utils.py:251 |
_MockRoute |
software | healthy | tests/fetchers/test_utils.py:259 |
_AsyncMockRoute |
software | healthy | tests/fetchers/test_utils.py:274 |
TestCreateInterceptHandler |
software | healthy | tests/fetchers/test_utils.py:289 |
TestCreateAsyncInterceptHandler |
software | healthy | tests/fetchers/test_utils.py:362 |
TestIsDomainBlocked |
software | healthy | tests/fetchers/test_utils.py:401 |
TestAdDomains |
software | healthy | tests/fetchers/test_utils.py:434 |
TestBlockAdsConfig |
software | healthy | tests/fetchers/test_utils.py:454 |
TestBaseFetcher |
software | healthy | tests/fetchers/test_base.py:6 |
TestMergeRequestArgsSkipsBrowserParams |
software | healthy | tests/fetchers/test_merge_request_args.py:11 |
TestFetcherSession |
software | healthy | tests/fetchers/sync/test_requests_session.py:7 |
TestStealthConstants |
software | healthy | tests/fetchers/sync/test_stealth_session.py:8 |
TestStealthySession |
software | healthy | tests/fetchers/sync/test_stealth_session.py:38 |
TestFetcher |
software | healthy | tests/fetchers/sync/test_requests.py:21 |
TestDynamicFetcher |
software | healthy | tests/fetchers/sync/test_dynamic.py:10 |
TestFetcherSession |
software | healthy | tests/fetchers/async/test_requests_session.py:6 |
TestAsyncStealthySession |
software | healthy | tests/fetchers/async/test_stealth_session.py:12 |
TestAsyncFetcher |
software | healthy | tests/fetchers/async/test_requests.py:22 |
TestStealthyFetcher |
software | healthy | tests/fetchers/async/test_stealth.py:11 |
TestDynamicFetcherAsync |
software | healthy | tests/fetchers/async/test_dynamic.py:10 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
benchmarks.py |
software | healthy | benchmarks.py |
.bandit.yml |
software | healthy | .bandit.yml |
README.md |
software | healthy | README.md |
zensical.toml |
software | healthy | zensical.toml |
CONTRIBUTING.md |
software | healthy | CONTRIBUTING.md |
Dockerfile |
software | healthy | Dockerfile |
.pre-commit-config.yaml |
software | healthy | .pre-commit-config.yaml |
server.json |
software | healthy | server.json |
.readthedocs.yaml |
software | healthy | .readthedocs.yaml |
cleanup.py |
software | healthy | cleanup.py |
ROADMAP.md |
software | healthy | ROADMAP.md |
pyproject.toml |
software | healthy | pyproject.toml |
CODE_OF_CONDUCT.md |
software | healthy | CODE_OF_CONDUCT.md |
ruff.toml |
software | healthy | ruff.toml |
__init__.py |
software | healthy | tests/__init__.py |
requirements.txt |
software | healthy | tests/requirements.txt |
__init__.py |
software | healthy | tests/ai/__init__.py |
test_ai_mcp.py |
software | healthy | tests/ai/test_ai_mcp.py |
__init__.py |
software | healthy | tests/cli/__init__.py |
test_cli.py |
software | healthy | tests/cli/test_cli.py |
test_shell_functionality.py |
software | healthy | tests/cli/test_shell_functionality.py |
test_validator.py |
software | healthy | tests/fetchers/test_validator.py |
test_proxy_rotation.py |
software | healthy | tests/fetchers/test_proxy_rotation.py |
__init__.py |
software | healthy | tests/fetchers/__init__.py |
test_constants.py |
software | healthy | tests/fetchers/test_constants.py |
test_pages.py |
software | healthy | tests/fetchers/test_pages.py |
test_response_handling.py |
software | healthy | tests/fetchers/test_response_handling.py |
test_impersonate_list.py |
software | healthy | tests/fetchers/test_impersonate_list.py |
test_utils.py |
software | healthy | tests/fetchers/test_utils.py |
test_base.py |
software | healthy | tests/fetchers/test_base.py |
test_merge_request_args.py |
software | healthy | tests/fetchers/test_merge_request_args.py |
__init__.py |
software | healthy | tests/fetchers/sync/__init__.py |
test_requests_session.py |
software | healthy | tests/fetchers/sync/test_requests_session.py |
test_stealth_session.py |
software | healthy | tests/fetchers/sync/test_stealth_session.py |
test_requests.py |
software | healthy | tests/fetchers/sync/test_requests.py |
test_dynamic.py |
software | healthy | tests/fetchers/sync/test_dynamic.py |
__init__.py |
software | healthy | tests/fetchers/async/__init__.py |
test_requests_session.py |
software | healthy | tests/fetchers/async/test_requests_session.py |
test_stealth_session.py |
software | healthy | tests/fetchers/async/test_stealth_session.py |
test_requests.py |
software | healthy | tests/fetchers/async/test_requests.py |
test_stealth.py |
software | healthy | tests/fetchers/async/test_stealth.py |
test_dynamic.py |
software | healthy | tests/fetchers/async/test_dynamic.py |
test_dynamic_session.py |
software | healthy | tests/fetchers/async/test_dynamic_session.py |
__init__.py |
software | healthy | tests/spiders/__init__.py |
test_sitemap.py |
software | healthy | tests/spiders/test_sitemap.py |
test_checkpoint.py |
software | healthy | tests/spiders/test_checkpoint.py |
test_session.py |
software | healthy | tests/spiders/test_session.py |
test_robotstxt.py |
software | healthy | tests/spiders/test_robotstxt.py |
test_links.py |
software | healthy | tests/spiders/test_links.py |
test_spider.py |
software | healthy | tests/spiders/test_spider.py |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
ai |
software | healthy | tests/ai |
cli |
software | healthy | tests/cli |
fetchers |
software | healthy | tests/fetchers |
sync |
software | healthy | tests/fetchers/sync |
async |
software | healthy | tests/fetchers/async |
spiders |
software | healthy | tests/spiders |
core |
software | healthy | tests/core |
parser |
software | healthy | tests/parser |
docs |
software | healthy | docs |
ai |
software | healthy | docs/ai |
stylesheets |
software | healthy | docs/stylesheets |
development |
software | healthy | docs/development |
parsing |
software | healthy | docs/parsing |
cli |
software | healthy | docs/cli |
api-reference |
software | healthy | docs/api-reference |
spiders |
software | healthy | docs/spiders |
overrides |
software | healthy | docs/overrides |
fetching |
software | healthy | docs/fetching |
tutorials |
software | healthy | docs/tutorials |
agent-skill |
software | healthy | agent-skill |
Scrapling-Skill |
software | healthy | agent-skill/Scrapling-Skill |
references |
software | healthy | agent-skill/Scrapling-Skill/references |
parsing |
software | healthy | agent-skill/Scrapling-Skill/references/parsing |
spiders |
software | healthy | agent-skill/Scrapling-Skill/references/spiders |
fetching |
software | healthy | agent-skill/Scrapling-Skill/references/fetching |
examples |
software | healthy | agent-skill/Scrapling-Skill/examples |
scrapling |
software | healthy | scrapling |
engines |
software | healthy | scrapling/engines |
_browsers |
software | healthy | scrapling/engines/_browsers |
toolbelt |
software | healthy | scrapling/engines/toolbelt |
fetchers |
software | healthy | scrapling/fetchers |
spiders |
software | healthy | scrapling/spiders |
templates |
software | healthy | scrapling/spiders/templates |
core |
software | healthy | scrapling/core |
utils |
software | healthy | scrapling/core/utils |
.github |
software | healthy | .github |
ISSUE_TEMPLATE |
software | healthy | .github/ISSUE_TEMPLATE |
workflows |
software | healthy | .github/workflows |
| Label | Layer | Status | Path |
|---|---|---|---|
DOCKER_PASSWORD |
cicd | healthy | — |
GITHUB_TOKEN |
cicd | healthy | — |
DOCKER_USERNAME |
cicd | healthy | — |
CONTAINER_TOKEN |
cicd | healthy | — |
GHCR_IMAGE |
cicd | healthy | — |
DOCKERHUB_IMAGE |
cicd | healthy | — |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::release-and-publish |
cicd | healthy | .github/workflows/release-and-publish.yml |
gha::tests |
cicd | healthy | .github/workflows/tests.yml |
gha::code-quality |
cicd | healthy | .github/workflows/code-quality.yml |
gha::docker-build |
cicd | healthy | .github/workflows/docker-build.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
create-release-and-publish |
cicd | healthy | .github/workflows/release-and-publish.yml |
tests |
cicd | healthy | .github/workflows/tests.yml |
code-quality |
cicd | healthy | .github/workflows/code-quality.yml |
build-and-push |
cicd | healthy | .github/workflows/docker-build.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-7psg9q90 |
software | healthy | /tmp/repobility-clone-7psg9q90 |
| Label | Layer | Status | Path |
|---|---|---|---|
sqlite |
data | healthy | tests/core/test_storage_core.py |
| Label | Layer | Status | Path |
|---|---|---|---|
storage |
data | healthy | scrapling/core/storage.py |
| Label | Layer | Status | Path |
|---|---|---|---|
port:8000 |
network | healthy | Dockerfile |
| Label | Layer | Status | Path |
|---|---|---|---|
127.0.0.1 |
network | healthy | tests/ai/test_ai_mcp.py |
| Label | Layer | Status | Path |
|---|---|---|---|
nginx |
network | healthy | tests/spiders/test_spider.py |
| Label | Layer | Status | Path |
|---|---|---|---|
image::Dockerfile |
hardware | healthy | Dockerfile |
| Label | Layer | Status | Path |
|---|---|---|---|
gpu (detected) |
hardware | healthy | scrapling/engines/constants.py |
| Label | Layer | Status | Path |
|---|---|---|---|
vps::gcp |
hardware | healthy | scrapling/engines/toolbelt/ad_domains.py |
This page is publicly accessible at:
https://repobility.com/scan/a5c84e5c-c138-49af-9b50-4766d4aaf498/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/a5c84e5c-c138-49af-9b50-4766d4aaf498/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.