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.1.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.1-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: canopy_scanner-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 5a8addb317a27a4abc8ce1ea1ff074180b0c0232c2584631590d8f28c1891a46
MD5 82dd5e2096526799f95817aca8bca847
BLAKE2b-256 760cf9a52a88f58d9b65fa078de3d5a80181cc9fa681328349b4ae4786ff926f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: canopy_scanner-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 701ff8227799125cca9a214987a45b96f98d6c48ad7ee57e6c35184d405247d3
MD5 3ec2d7d015fd4af3e4376b2441f7b792
BLAKE2b-256 d009fe95793c2d07895f6c324384c8fa60ba47075d2e58980f729793decf5177

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