Skip to main content

scrapalyser

PyPI version Python 3.9+ License: MIT

Pre-scraping intelligence tool. Scan any website before writing a single line of scraper.


Install

# Core (curl_cffi engine)
pip install scrapalyser

# With Playwright support
pip install scrapalyser[playwright]
playwright install chromium

Usage

import scrapalyser

# Simple scan — returns a dict
report = scrapalyser.scan("https://example.com")
print(report)

# Full options
report = scrapalyser.scan(
    url="https://example.com",
    output="txt",           # "json" (default) or "txt"
    lang="fr",              # "en" (default), "fr", "es", "br"
    save="report.txt",      # optional — write output to file
    engine="curl",          # "curl" (default) or "playwright"
    headless=True,          # True (default) or False — playwright only
    screenshot="shot.png",  # optional — playwright only
)

Example output

JSON

{
  "url": "https://example.com",
  "scanned_at": "2026-05-19T12:32:00Z",
  "status_code": 200,
  "engine": "curl",
  "antibot": {
    "detected": true,
    "name": "Cloudflare Turnstile"
  },
  "technology": {
    "type": "React"
  },
  "js_required": true,
  "api": {
    "detected": true,
    "endpoints": [
      "https://api.example.com/v1/search"
    ]
  },
  "robots_txt": {
    "found": true,
    "url": "https://example.com/robots.txt"
  },
  "sitemap": {
    "found": true,
    "url": "https://example.com/sitemap.xml"
  },
  "login_wall": {
    "detected": false,
    "type": null
  }
}

TXT (French)

═══════════════════════════════════════════
        SCRAPALYSER RAPPORT
        https://example.com
        Scanné le : 2026-05-19T12:32:00Z
        Status : 200
═══════════════════════════════════════════

[ANTI-BOT]
  ⚠️  Détecté : Cloudflare Turnstile

[TECHNOLOGIE]
  🖥️  Type : React

[JAVASCRIPT]
  ⚠️  JS requis : Oui → utiliser Playwright/Selenium

[API DÉTECTÉES]
  ✅  https://api.example.com/v1/search

[ROBOTS.TXT]
  ✅  https://example.com/robots.txt

[SITEMAP]
  ✅  https://example.com/sitemap.xml

[LOGIN WALL]
  ✅  Aucun login requis

═══════════════════════════════════════════

Features

  • 🛡️ Anti-bot detection — Cloudflare, DataDome, PerimeterX, Akamai, Kasada, Imperva, Sucuri, reCAPTCHA, hCaptcha + Unknown/Custom antibot detection
  • 🖥️ Technology detection — React, Vue, Angular, Next.js, Nuxt, Svelte, WordPress, Shopify, Drupal, Joomla, Wix, Webflow
  • ⚡ JS requirement detection — know before you write whether requests is enough or Playwright is needed
  • 🌐 API endpoint discovery — via CSP headers, inline scripts, and XHR/Fetch interception (Playwright mode)
  • 🤖 robots.txt parser — URL extraction with common path variants (/robot.txt, /robots.txt)
  • 🗺️ Sitemap detection — via robots.txt or direct probe (/sitemap.xml, /sitemaps.xml...)
  • 🔐 Login wall detection — form, redirect, button, OAuth
  • 📸 Screenshot — capture the page as seen by the browser (Playwright mode)
  • 🚫 Blocked by antibot — if the site blocks you, all fields return "blocked by antibot" instantly
  • 🌍 Multi-language output — fr, en, es, br
  • 📄 JSON & TXT export — machine-readable or human-readable

Engines

Feature curl playwright
Speed ⚡ Fast 🐢 Slower
JS execution ❌ ✅
XHR/Fetch API detection ❌ ✅
Screenshot ❌ ✅
Bot bypass Partial Better with headless=False

Anti-bot detection

When the site blocks you (403, captcha page), scrapalyser reports which antibot is responsible and marks all other fields as "blocked by antibot" — so you know exactly what you're up against before writing anything.

Supported:

Solution Detection method
Cloudflare / Turnstile cf-ray header, __cf_bm cookie
DataDome x-datadome header, datadome cookie
PerimeterX _px cookie, script patterns
Akamai ak_bmsc / bm_sz cookies
Kasada kkrta / kasada.io scripts
Imperva x-iinfo header, incap_ses cookie
Sucuri x-sucuri-id header
reCAPTCHA script pattern
hCaptcha script pattern
Unknown / Custom suspicious headers, cookies, obfuscated scripts

Contributing

  1. Fork the repo
  2. Create a feature branch (git checkout -b feat/my-feature)
  3. Commit your changes
  4. Open a pull request

License

MIT — see LICENSE.

Metadata

Release files for scrapalyser 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scrapalyser 0.1.2
File Size Uploaded Provenance
scrapalyser-0.1.2.tar.gz 15.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for scrapalyser 0.1.2
File Interpreter ABI Platform
scrapalyser-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 33.5 kB

Release files / scrapalyser-0.1.2.tar.gz

Download URL scrapalyser-0.1.2.tar.gz
Size 15.6 kB
Tags Source
SHA-256 checksum
How to use checksums
1591c2c90d8ea2ef9f66ac8e4e1763e386002bac7212504c2f793487517a5cbc
BLAKE2b-256 checksum
How to use checksums
1248a90a3582ff99d8763488c39cd6602845ef6dc22cff38c0deccadc8e187be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release files / scrapalyser-0.1.2-py3-none-any.whl

Download URL scrapalyser-0.1.2-py3-none-any.whl
Size 17.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
00e9d486e1659656b8f7e63e65dc3a45cec2bcff759116b3edfa4a58c2cbbf4e
BLAKE2b-256 checksum
How to use checksums
f6f3b1d8ecb617804ef34aade6a0a17af2522f7294b4dae7b2fa75939f6dcff8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Security for scrapalyser 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page