Skip to main content

An OSINT tool for intelligence gathering and username enumeration

Project description

Canopy is a Python-based OSINT (Open-Source Intelligence) framework designed to help individuals discover, organize, and analyze publicly available information about their own digital footprint.
Note: Canopy was developed and tested exclusively on my own publicly available data as a learning and portfolio project.

Project Goals

  • Understand how publicly available information is indexed and exposed online
  • Practice structured OSINT methodology using search engines
  • Correlate results from multiple sources into meaningful categories
  • Demonstrate ethical boundaries and legal awareness in OSINT work

Features

  • Multi-platform username enumeration across social media, coding sites, gaming platforms, and more.
  • Avoids false positives using fingerprint-based validation.
  • Supports local caching of platform fingerprints to speed up scans.
  • Multi-threaded, high-performance scanning with optional rate-limiting and delays.
  • Generates reports in JSON, CSV, HTML, or TXT formats.
  • CLI interface for easy integration into scripts or automation workflows.
  • Categorized results for better organization (e.g., social, professional, gaming).
usage: canopy.py [-h] [-u USERNAME] [-U USERNAMES] [-t THREADS] [--timeout TIMEOUT] [--delay DELAY]
                 [--rate-limit RATE_LIMIT] [-c CATEGORIES] [-p PLATFORMS] [--exclude EXCLUDE] [--only-found]
                 [--list-categories] [-o OUTPUT] [-f {json,csv,html,txt}] [-v] [-q] [--print-found]

Canopy - Username Enumeration Tool

options:
  -h, --help            show this help message and exit

Target Options:
  -u, --username USERNAME
                        Username to search for
  -U, --usernames USERNAMES
                        File containing list of usernames (one per line)

Performance Options:
  -t, --threads THREADS
                        Number of concurrent threads (default: 10)
  --timeout TIMEOUT     Request timeout in seconds (default: 10)
  --delay DELAY         Delay between requests in seconds (default: 0)
  --rate-limit RATE_LIMIT
                        Max requests per second (default: unlimited)

Filtering Options:
  -c, --categories CATEGORIES
                        Comma-separated categories to check (e.g., social,gaming)
  -p, --platforms PLATFORMS
                        Comma-separated specific platforms to check
  --exclude EXCLUDE     Comma-separated platforms to exclude
  --only-found          Only show found accounts
  --list-categories     Show all available platform categories and exit

Output Options:
  -o, --output OUTPUT   Output file path
  -f, --format {json,csv,html,txt}
                        Output format: json, csv, html, txt (default: json)
  -v, --verbose         Verbose output
  -q, --quiet           Minimal output (only results)
  --print-found         Print found accounts in real-time

    Examples:
      canopy -u johndoe
      canopy -u johndoe -t 50 --timeout 15
      canopy -u johndoe -o report.json --format json
      canopy -u johndoe --categories social,gaming
      canopy --list-categories

Installation

Clone the repository:

git clone https://github.com/guyvolvo/Canopy.git
cd Canopy

Legal & Ethical Disclaimer

This framework is intended strictly for self-OSINT, educational use, or explicit consent-based research.
This tool should be used to analyze:
  • Your own digital footprint
  • Accounts, domains, and identifiers you own
  • Targets for which you have explicit written permission
  • Using this tool against private individuals without consent may violate privacy laws and platform Terms of Service.
  • I have no responsibility for misuse of this software.

Canopy collects metadata only, such as:

  • Page titles
  • URLs
  • Search snippets
  • Source domain

It does not:

  • Bypass CAPTCHAs
  • Scrape authenticated content
  • Harvest private data
  • Enumerate personal contact lists

Theoretical Project Structure (Generated by ChatGPT and Cluade Made for reference so I can follow along and add or remove things as I see fit):

GPT Workflow :

canopy/
├── README.md
├── DISCLAIMER.md
├── methodology/
│ └── osint_methodology.md
├── canopy/
│ ├── query_generator.py
│ ├── collector.py
│ ├── parser.py
│ └── correlator.py
├── output/
│ └── sample_report.md
└── lessons_learned.md\

Claude workflow :

Canopy/
├── main.py # Entry point, CLI interface
├── platforms.json # Platform database
├── query_generator.py # Generate queries from usernames
├── username_checker.py # Check if username exists on platforms
├── data_collector.py # Collect and aggregate data
├── report_generator.py # Format and export results
├── config.py # Configuration settings
├── utils.py # Helper functions
└── requirements.txt # Dependencies\

platforms.json inspired by the Sherlock OSINT project :)

Methodology

  • Canopy uses a structured OSINT approach:
  • Generate a list of platforms to query (social, professional, gaming).
  • Create URL patterns for a target username.
  • Validate account existence using HTTP responses, redirects, error messages, and HTML fingerprints.
  • Aggregate results into structured reports.
  • Optionally store fingerprints locally to avoid redundant requests.
  • This ensures high accuracy while reducing false positives.

Best Practices

  • Only scan accounts you own or have explicit permission to analyze.
  • Use --threads and --rate-limit responsibly to avoid being blocked by platforms.
  • Review your JSON/CSV/HTML reports for patterns before taking any action.
  • Update platforms.json regularly to include new platforms.
  • Periodically refresh fingerprints for platforms that change their 404 pages.

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

canopy_scanner-0.1.0.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

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

canopy_scanner-0.1.0-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for canopy_scanner-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2847524e0dba683bb1015c03b074436a2bc23be482b827f3d96e9837b71fde5f
MD5 0eba5de2a148dc4325056694aa488e9f
BLAKE2b-256 4a04e619df58695758a12a4d38dfed8fc36141ed96b696031e6cc5d9f9f460f1

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for canopy_scanner-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 05080ce963ea2edfec4f6c19e5419e1b541d61f70929a1de7a1d977ed2165b05
MD5 94b7a7dc9d35912a3237f1048df7d920
BLAKE2b-256 2111443db5ecb6cb1a353d985e5a6ec12bdc48172049274e1c2681befd5ef6d5

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