This document provides detailed usage instructions for all crawlers in the EyeOfWeb system.
| Crawler | Selenium | Docker | Description |
|---|---|---|---|
single_domain.py |
❌ | ✅ | Single domain/URL scanning |
rss_crawler.py |
❌ | ✅ | RSS/Atom feed scanning |
google_search_crawler.py |
❌ | ✅ | Google/DuckDuckGo search results |
google_images_crawler.py |
✅ | ❌ | Google Images scanning |
twitter_crawler_file_based.py |
✅ | ❌ | Twitter profile scanning (from file) |
twitter_crawler_google_based.py |
✅ | ❌ | Twitter profile scanning (from Google) |
facebook_crawler.py |
✅ | ❌ | Facebook profile scanning |
pyrogram_telegram_crawler_main.py |
❌ | ✅ | Telegram scanning (Pyrogram API) |
telethon_telegram_crawler_main.py |
❌ | ✅ | Telegram scanning (Telethon API) |
flicker_crawler.py |
✅ | ❌ | Flickr image scanning |
pip install -r docker_crawler_requirements.txtpip install -r crawler_requirements.txt
# + Chrome/Firefox browser must be installedconfig/config.jsonfile (auto-generated in Docker)- PostgreSQL and Milvus connection
- InsightFace model (buffalo_l or antelopev2)
File: single_domain.py
Scans a single website or URL list, detecting faces in images.
| Parameter | Required | Default | Description |
|---|---|---|---|
--url |
* | - | Single URL to scan |
--file |
* | - | File containing URL list |
--max-depth |
✅ | - | Maximum crawl depth |
--risk-level |
❌ | - | Risk level (low/medium/high) |
--category |
❌ | - | Category tag |
--ignore-db |
❌ | 0 | Skip database check (1/0) |
--ignore-content |
❌ | 0 | Skip content check (1/0) |
--save-image |
❌ | False | Save images locally |
*= Either--urlor--fileis required
# Single URL scan
python single_domain.py --url "https://example.com" --max-depth 3
# Scan from URL list file
python single_domain.py --file urls.txt --max-depth 2 --risk-level high
# Deep scan (all options)
python single_domain.py \
--url "https://example.com" \
--max-depth 5 \
--risk-level medium \
--category "news" \
--ignore-db 0 \
--save-imagehttps://example1.com
https://example2.com/page
https://example3.com/category/article
File: rss_crawler.py
Continuously scans RSS/Atom feeds and detects faces in news articles.
| Parameter | Required | Default | Description |
|---|---|---|---|
--rss |
❌ | rss.txt | RSS URLs file |
--risk-level |
✅ | - | Risk level |
--category |
✅ | - | Category tag |
# Use default rss.txt file
python rss_crawler.py --risk-level low --category "news"
# Custom RSS file
python rss_crawler.py --rss my_feeds.txt --risk-level medium --category "tech"https://feeds.bbci.co.uk/news/rss.xml
https://rss.nytimes.com/services/xml/rss/nyt/World.xml
https://www.theguardian.com/world/rss
- Reads URLs from RSS file
- Parses each feed with feedparser
- Scans each article with SingleNewsCrawler
- Waits 1 hour and repeats (infinite loop)
Note: Can be stopped with CTRL+C
File: google_search_crawler.py
Scans websites from Google/DuckDuckGo search results.
| Parameter | Required | Default | Description |
|---|---|---|---|
--query |
✅ | - | Search query |
--num-results |
❌ | 10 | Number of results |
--backend |
❌ | playwright | Browser backend (playwright or selenium) |
--risk-level |
❌ | - | Risk level |
--category |
❌ | - | Category |
- Speed: Up to 10x faster than Selenium.
- Parallel Scanning: Concurrent page scanning using multi-tab (default 3 tabs) for search results.
- Facebook Integration: High-speed scanning for Facebook profiles and search results using optimized crawler.
- Privacy: Advanced anti-bot measures included.
# Simple search
python google_search_crawler.py --query "example search"
# Advanced search
python google_search_crawler.py \
--query "site:example.com inurl:profile" \
--num-results 50 \
--risk-level highFile: google_images_crawler.py
⚠️ Requires Selenium - Does NOT work in Docker
Searches Google Images and performs face detection.
| Parameter | Required | Default | Description |
|---|---|---|---|
--keyword |
✅ | - | Search keyword |
--scroll_count |
✅ | - | Page scroll count |
python google_images_crawler.py --keyword "person name" --scroll_count 10File: twitter_crawler_file_based.py
⚠️ Requires Selenium - Does NOT work in Docker
Reads Twitter/X profile URLs from a file and scans them.
| Parameter | Required | Default | Description |
|---|---|---|---|
--file |
✅ | - | Twitter URL/username file |
--threads |
❌ | 3 | Thread count (max 3) |
--headless |
❌ | True | Headless mode |
--driver_path |
❌ | - | ChromeDriver path |
--temp_folder |
❌ | temp | Temporary folder |
python twitter_crawler_file_based.py --file twitter_users.txt
python twitter_crawler_file_based.py \
--file twitter_users.txt \
--threads 2 \
--headlesshttps://twitter.com/user1
https://x.com/user2
@user3
user4
File: twitter_crawler_google_based.py
⚠️ Requires Selenium - Does NOT work in Docker
Finds Twitter profiles from Google search results and scans them.
python twitter_crawler_google_based.pyFile: facebook_crawler.py
⚠️ Requires Selenium - Does NOT work in Docker
Searches for people/profiles on Facebook and scans profile photos.
| Parameter | Required | Default | Description |
|---|---|---|---|
--keyword |
* | - | Search keyword |
--file |
* | - | Keywords file |
--scroll_count |
❌ | 5 | Scroll count |
--scroll_pause_time |
❌ | 2 | Scroll pause time (sec) |
--headless |
❌ | True | Headless mode |
--driver_path |
❌ | - | ChromeDriver path |
--temp_folder |
❌ | temp | Temporary folder |
--backend |
❌ | selenium | Browser backend (selenium or playwright) |
*= Either--keywordor--fileis required
# Single keyword
python facebook_crawler.py --keyword "John Doe"
# Multiple keywords (comma-separated)
python facebook_crawler.py --keyword "John Doe,Jane Smith"
# Keywords from file
python facebook_crawler.py --file keywords.txt --scroll_count 10File: pyrogram_telegram_crawler_main.py
Scans Telegram groups and channels using Pyrogram API.
- Telegram API ID and API Hash (my.telegram.org)
- Telegram settings in
config/config.json
Edit these variables in the file:
API_ID = 12345 # Telegram API ID
API_HASH = 'your_api_hash' # Telegram API Hash
SESSION_NAME = 'session' # Session file namepython pyrogram_telegram_crawler_main.py- Connects to Telegram (asks for phone and code on first run)
- Lists all groups and channels
- Downloads images from messages and profile photos
- Performs face detection with InsightFace
- Saves to database
File: telethon_telegram_crawler_main.py
Scans Telegram groups and channels using Telethon API. Alternative to Pyrogram.
Edit these variables in the file:
API_ID = 12345 # Telegram API ID
API_HASH = 'your_api_hash' # Telegram API Hash
SESSION_NAME = 'session' # Session file namePROCESS_REALTIME_MESSAGES = True # Process real-time messages
PROCESS_ONLY_SENDER_PROFILES = True # Process only sender profilespython telethon_telegram_crawler_main.pyFile: flicker_crawler.py
⚠️ Requires Selenium - Does NOT work in Docker
Searches Flickr for images and performs face detection.
python flicker_crawler.py --keyword "search term"# Connect to container
sudo docker exec -it eyeofweb_crawler bash
# Run NON-Selenium crawlers
python single_domain.py --url "https://example.com" --max-depth 3
python rss_crawler.py --risk-level low --category "news"
python google_search_crawler.py --query "search term"
python pyrogram_telegram_crawler_main.py# Virtual environment
python3 -m venv crawler_venv
source crawler_venv/bin/activate
# Install dependencies
pip install -r crawler_requirements.txt
# Run Selenium-based crawlers
python twitter_crawler_file_based.py --file users.txt
python google_images_crawler.py --keyword "search" --scroll_count 5
python facebook_crawler.py --keyword "person name"low- Low riskmedium- Medium riskhigh- High riskcritical- Critical risk
Custom categories can be defined:
newssocial_mediatechnologysports- etc.
In Selenium-based crawlers, the browser runs invisibly. Use --no-headless for debugging.
Failed To Load Config File: config/config.json
Solution: Run python generate_config.py or restart Docker container.
WebDriverException: chromedriver not found
Solution:
pip install webdriver-manager
# or download ChromeDriver manuallyModel not found: buffalo_l
Solution: Model downloads automatically, check internet connection.
EyeOfWeb Crawler Suite - Powered by InsightFace, Selenium & Telegram API 🕸️