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_osint-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_osint-0.1.0-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: canopy_osint-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_osint-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bc3f6e4d270f0c90e8262bed9a3e408fbbac505b1270f35e7b1d6284a833a26d
MD5 fc5f78ed4a003c153b9f2e23f6bd94c9
BLAKE2b-256 4686e8f5d532e0ae55a895a4e2d9c920cd54e4929582bdbbc73a4010c14ac91b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for canopy_osint-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 568c07ae1a9afc6184dc8e5183d70af8f1bcf814f3bfc84d39d4b43276559b18
MD5 64aad2c23d462a48c93a588ac5b4b19e
BLAKE2b-256 9054bbea0712f3bd1f60d499a117699800cc2e72c3ab4279974ac1397e0358a4

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