An open API service indexing awesome lists of open source software.

https://github.com/xscriptor/shinobi


https://github.com/xscriptor/shinobi

Last synced: 9 days ago
JSON representation

Awesome Lists containing this project

README

          

Shinobi



Silent Web Scraper — Anti-Blocking Download System


**Language / Idioma**
[English](#) | [Español](./docs/esp/README.md)

XWA submodule focused on silent web scraping with anti-blocking — under active development



Overview ·
Capabilities ·
Anti-Blocking ·
Quick Start ·
Launch Script ·
Docker Compose ·
Standalone ·
Modes ·
Env Variables ·
Docs


Overview

Shinobi is a stealth web scraper with a single web interface. It downloads entire sites — HTML, CSS, JS, images, PDFs — while evading detection through multiple anti-blocking layers.


Interface
Directory
Language
Type


Shinobi Web
/ (monorepo root)
Rust (Axum) + Angular 19
Web application (standalone or Docker)

Capabilities




  • Recursive Crawling — BFS page discovery with configurable depth and max pages


  • JavaScript Rendering — Headless Chromium engine for SPA/React/Vue/Angular sites


  • Asset Download — HTML, CSS, JS, images, PDFs, archives, media, fonts


  • File Type Filtering — Select which file extensions to download


  • Same-Domain Scoping — Stay within target domain or crawl freely


  • Real-Time Progress — SSE live stream with pages scraped, files downloaded, current URL


  • Downloaded File Browser — Browse and open downloaded files from the web UI


  • Two Operation Modes:


    • Fast Test — Pure Rust, zero external deps, crawl + download + anti-blocking


    • Deep Research — Python sidecar adds structured data extraction (JSON-LD, microdata, Open Graph, RDFa), NLP analysis (summary, entities, keywords), custom CSS selectors, and enriched email/phone extraction



Anti-Blocking System




  • User-Agent Rotation — 15 real browser UAs (Chrome, Firefox, Safari, Edge, mobile)


  • Header Randomization — Accept, Accept-Language, Sec-CH-UA, Sec-Fetch-* per request


  • Request Delay + Jitter — Configurable base delay with random jitter


  • Exponential Backoff — Retry with jitter on failures (configurable attempts)


  • Rate Limit Handling — Detects HTTP 429/503, waits, retries with longer backoff


  • Proxy Support — HTTP/HTTPS/SOCKS5 proxy rotation


Quick Start

Launch Script (Recommended)


./shinobi.sh --fast       # Rust backend + frontend (Fast Test mode)

./shinobi.sh --deep # Rust + Python extractor (Fast Test + Deep Research)
./shinobi.sh --docker # Everything via docker-compose
./shinobi.sh --help # Full usage help

Web Version (Docker Compose)


docker compose up -d --build


  • Web UI: http://localhost:8080

  • Extractor API: http://localhost:9090 (Deep Research only)

Standalone (No Docker)


Fast Test mode (Rust only)

cargo run --release

Full stack (Rust + Python extractor)
./shinobi.sh --deep


Web UI at http://localhost:8080. Downloaded files stored in ./downloads/.

Execution Modes

ModeCommandDescription
Fast Test./shinobi.sh --fastCrawling + asset download + anti-blocking. No external dependencies.
Deep Research./shinobi.sh --deepAdds Python sidecar for structured data extraction (JSON-LD, microdata, OG), NLP analysis (summary, entities, keywords), and custom CSS selectors.
Docker./shinobi.sh --dockerBoth services via docker-compose.
Python Only./shinobi.sh --python-onlyExtractor standalone for development.

Environment Variables

VariableDefaultDescription
PORT8080HTTP listen port (Rust)
DATA_DIRdownloadsDownloaded files directory
RUST_LOGshinobi=info,tower_http=infoLogging verbosity
EXTRACTOR_URLhttp://localhost:9090Python extractor endpoint (Deep Research)


Related Documents

DocumentDescription
docs/manual.mdDevelopment and production deployment guide
docs/ui-architecture.mdFrontend architecture specification
ROADMAP.mdDevelopment phases and milestones
docs/project-structure.mdDetailed codebase structure with file-by-file breakdown and API reference



X


X Web

&

X Github Profile

&

Xscriptor web