Skip to main content

AI-powered web vulnerability scanner based on OWASP Top 10

Project description

AIScanner 🔍

PyPI version Python License CI

AIScanner is an AI-powered web vulnerability scanner that automatically crawls URLs and flags security risks based on the OWASP Top 10.


✨ Features

  • 🌐 Recursive web crawler — follows internal links up to a configurable depth
  • 🧠 Technology detection — identifies WordPress, React, Angular, Vue, Django, Bootstrap, jQuery, Next.js, and more
  • 🛡️ OWASP Top 10 checks — detects XSS, SQL Injection exposure, missing CSRF tokens, sensitive data exposure, and open redirects
  • 🎯 Severity classification — each risk is tagged CRITICAL / HIGH / MEDIUM / LOW / SAFE
  • 📄 JSON output — results are saved to crawl_results.json
  • 💬 Language detection — detects the page language (English, French, Spanish, …)

📦 Installation

pip install AIScanner

Requires Python 3.9 or higher.


🚀 Quick Start

As a CLI tool

After installation, the aiscanner command is available globally:

aiscanner

You will be prompted to enter a URL:

🔎 Enter URL to crawl: https://example.com

As a Python library

from AIScanner import WebAnalyzer, WebCrawler

# Analyze a single URL
analyzer = WebAnalyzer(".")
result = analyzer.analyze("https://example.com")

print(result["language"])    # e.g. "English"
print(result["tech_stack"])  # e.g. ["Bootstrap", "jQuery"]
for risk in result["risks"]:
    print(f"[{risk['severity']}] {risk['owasp_id']}: {risk['name']}")

# Crawl an entire site (max 2 levels deep)
crawler = WebCrawler(".", analyzer, max_depth=2)
results = crawler.run("https://example.com")
# results is a dict: { url -> analysis_result }

🧩 Project Structure

src/AIScanner/
├── __init__.py           # Public API
├── exceptions.py         # Custom exceptions
├── logger.py             # Pre-configured logger
└── crawler/
    ├── __init__.py
    ├── crawl.py          # WebCrawler — recursive URL crawler
    └── web_analyzer.py   # WebAnalyzer — tech detection + OWASP checks

🛡️ OWASP Checks Performed

OWASP ID Check Severity
A01 Broken Access Control — Form without CSRF protection MEDIUM
A02 Sensitive Data Exposure — password/credit card/SSN in page text CRITICAL
A03 XSS — inline <script> tags found HIGH
A03 SQL Injection exposure — SQL error strings in page HIGH
A05 Missing X-Frame-Options / Content-Security-Policy LOW
A10 Open Redirect — ?redirect= or ?next= parameters MEDIUM

⚙️ Configuration

Parameter Default Description
max_depth 2 How many link levels deep to crawl
base_path "." Directory where crawl_results.json is saved

🔧 Development Setup

git clone https://github.com/prodip1023/AIScanner.git
cd AIScanner

# Install with dev dependencies
pip install -e ".[testing]"

# Run tests
pytest -v tests/

# Lint
flake8 src

# Type check
mypy src

📤 Publishing (maintainers)

# 1. Bump version in pyproject.toml and src/AIScanner/__init__.py
# 2. Commit and tag
git tag v0.1.0
git push origin v0.1.0
# GitHub Actions will automatically build and publish to PyPI

📄 License

Apache 2.0 © 2024 prodip1023

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiscanner-0.1.0.tar.gz (13.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aiscanner-0.1.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file aiscanner-0.1.0.tar.gz.

File metadata

  • Download URL: aiscanner-0.1.0.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.5

File hashes

Hashes for aiscanner-0.1.0.tar.gz
Algorithm Hash digest
SHA256 02a131740da8f44c930b17373583b0e3e7c191b40f29c3910ff33fde67a53e05
MD5 1cc3b0e778251bf5883a78387fc739c9
BLAKE2b-256 13183d98bb782da1cff6c361aa09397c8675debacd37ed5ac576261c85106ef4

See more details on using hashes here.

File details

Details for the file aiscanner-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: aiscanner-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.5

File hashes

Hashes for aiscanner-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7798ac788ffbb7b01b6e6bee76ea7e7f907b10e0ade7ff55b24fe9b5fc24411a
MD5 669dcec54bbc9153f02fe1ab601813e3
BLAKE2b-256 59032f60ce97ada97e228c0b29d172c339040eccb330e2fca8bd14b8ad65d471

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page