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

Uploaded Python 3

File details

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

File metadata

  • Download URL: canopy_scanner-0.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 b3f15e1b0c5b1478cf32ac7903d6722d107a7b30824ab4bd75060672de009d77
MD5 511d0c1df711b8add6b001a45aa4841f
BLAKE2b-256 7fbb65ff80ab8dadac2a95d1c987aaee7b1464e03a762011149ca7570e8bccdc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: canopy_scanner-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 18.2 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b37d0173c4947c007686ad3cfb303dfae626971251ebeb78b5899deffe252c2a
MD5 758cbf4340ce785c74a0953109ff77b9
BLAKE2b-256 1b69b29f41aba88e03295313a85388b28a8b3bbf5e1ae75a0d19379216b2449e

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