Where Are the Username Scanning Modules Located in the user-scanner Codebase?

The username scanning modules in user-scanner are located under user_scanner/user_scan, with each platform organized by category subdirectories such as social/, political/, and entertainment/.

The kaifcodec/user-scanner repository structures its username-checking logic in a clean, hierarchical package. Understanding this layout is essential for contributing new platforms, debugging existing validators, or importing specific checkers into your own scripts.

user_scanner/user_scan Directory Structure

All username scanning modules reside in the user_scanner/user_scan package. The directory is partitioned by category folders, with one Python file per supported site.

The canonical path pattern is:


user_scanner/user_scan/<category>/<site>.py

Each module exposes a function named validate_<site> that returns a standardized Result object indicating whether a username is available, taken, or resulted in an error.

Platform Examples by Category

Social Platforms

Political Platforms

Additional categories like entertainment/ and others follow the same convention—one .py file per site with a matching validate_* function.

How the Orchestrator Discovers Modules

The orchestrator at user_scanner/core/orchestrator.py automatically discovers and loads all username scanning modules. It traverses the user_scanner/user_scan package, imports each validate_<site> function dynamically, and executes scans against supplied handles.

This design eliminates manual registration—adding a new platform only requires creating the file in the appropriate category folder.

Practical Code Examples

Run Scans Across All Platforms

from user_scanner.core.orchestrator import run_user_scans

# Scan usernames against every supported site

results = run_user_scans(["alice", "bob123"])

for username, site_results in results.items():
    print(f"--- {username} ---")
    for site, result in site_results.items():
        print(f"{site}: {result.status} ({result.extra})")

Import a Single Validator Directly

from user_scanner.user_scan.social.zhihu import validate_zhihu
from user_scanner.core.result import Result

res: Result = validate_zhihu("alice")
print(res.status)   # "available", "taken", or "error"

print(res.extra)    # metadata like profile URL or avatar

Key Supporting Files

File Purpose
user_scanner/core/orchestrator.py Dynamically loads all validate_<site> functions and coordinates scan execution
user_scanner/core/result.py Defines the Result dataclass returned by every validator
user_scanner/core/engine.py Provides low-level HTTP utilities (generic requests, impersonation) used by validators

Summary

  • Username scanning modules are stored in user_scanner/user_scan/<category>/<site>.py
  • Each module implements validate_<site>(username) -> Result
  • The orchestrator auto-discovers modules—no registration boilerplate required
  • Categories include social/, political/, entertainment/, and more
  • Import individual validators for custom scripts, or use run_user_scans() for bulk checks

Frequently Asked Questions

How do I add a new username scanning platform to user-scanner?

Create a new Python file in the appropriate category folder under user_scanner/user_scan/. Define a function named validate_<your_site> that accepts a username string and returns a Result object from user_scanner.core.result. The orchestrator will automatically detect and include your module in subsequent scans.

What does the Result object contain after a username scan?

According to user_scanner/core/result.py, the Result dataclass includes at minimum a status field (typically "available", "taken", or "error") and an extra field for additional metadata such as profile URLs, avatar links, or error messages. Specific validators may populate extended fields depending on platform capabilities.

Can I run username scans for only specific categories or sites?

While run_user_scans() executes all discovered validators, you can bypass the orchestrator entirely by importing individual validate_<site> functions directly from their module paths, as shown in the single-validator example above. This approach gives you full control over which platforms to query.

Why are username scanning modules organized by category rather than alphabetically?

The categorical structure in user_scanner/user_scan/ reflects logical groupings of platforms by domain (social networks, political sites, entertainment services). This organization improves discoverability for contributors and allows the orchestrator to potentially filter or prioritize scans by category in future enhancements.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →