Convert Figma logo to code with AI

sherlock-project logosherlock

Hunt down social media accounts by username across social networks

57,727
6,677
57,727
210

Top Related Projects

Stalk your Friends. Find their Instagram, FB and Twitter Profiles using Image Recognition and Reverse Image Search.

10,065

🕵️‍♂️ Collect a dossier on a person by username from thousands of sites

7,293

holehe allows you to check if the mail is used on different sites like twitter, instagram and will retrieve information on sites with the forgotten password function.

API, CLI, and Web App for analyzing and finding a person's profile in 1000 social media \ websites

OSINT Tool: Generate username lists for companies on LinkedIn

15,468

🕵️‍♂️ Offensive Google framework.

Quick Overview

Sherlock is an open-source tool designed to hunt down social media accounts by username across various social networks. It's a powerful command-line utility that can search for a given username on over 300 sites simultaneously, making it an invaluable resource for OSINT (Open Source Intelligence) investigations, identity verification, or simply finding someone's online presence.

Pros

  • Extensive coverage: Searches across 300+ social networks and websites
  • Fast and efficient: Utilizes asynchronous requests for quick results
  • Regularly updated: The community actively maintains and expands the site list
  • Flexible output options: Results can be saved in various formats (text, CSV, JSON)

Cons

  • Potential for false positives: Some sites may return positive results for non-existent accounts
  • Limited to username searches: Doesn't support other identifiers like email or phone number
  • Command-line interface: May be intimidating for non-technical users
  • Dependency on site structures: Changes to websites may break functionality until updated

Code Examples

# Basic usage: Search for a single username
python3 sherlock username
# Search for multiple usernames
python3 sherlock username1 username2 username3
# Save results to a specific output directory
python3 sherlock username --output /path/to/results
# Use a proxy for requests
python3 sherlock username --proxy 127.0.0.1:8080

Getting Started

  1. Clone the repository:

    git clone https://github.com/sherlock-project/sherlock.git
    
  2. Navigate to the Sherlock directory:

    cd sherlock
    
  3. Install the requirements:

    python3 -m pip install -r requirements.txt
    
  4. Run Sherlock with a username:

    python3 sherlock username
    

For more advanced usage and options, refer to the project's README and documentation on GitHub.

Competitor Comparisons

Stalk your Friends. Find their Instagram, FB and Twitter Profiles using Image Recognition and Reverse Image Search.

Pros of EagleEye

  • Focuses on facial recognition and image analysis
  • Provides more in-depth information about a person's online presence through image searches
  • Offers visualization of connections between found profiles

Cons of EagleEye

  • Less actively maintained compared to Sherlock
  • Requires more setup and dependencies
  • Limited to image-based searches, potentially missing text-based profiles

Code Comparison

Sherlock (Python):

def sherlock(username):
    for site in sites:
        url = site['url'].format(username)
        response = requests.get(url)
        if response.status_code == 200:
            print(f"Found on {site['name']}")

EagleEye (Python):

def eagleeye(image_path):
    face_encoding = face_recognition.face_encodings(image)[0]
    for social_media in social_media_sites:
        matches = face_recognition.compare_faces(social_media_encodings, face_encoding)
        if True in matches:
            print(f"Match found on {social_media}")

While Sherlock focuses on username-based searches across multiple platforms, EagleEye specializes in facial recognition and image analysis. Sherlock is more actively maintained and easier to set up, but EagleEye provides deeper insights through image-based searches. The code snippets illustrate their different approaches: Sherlock checks for username availability, while EagleEye compares facial features across social media platforms.

10,065

🕵️‍♂️ Collect a dossier on a person by username from thousands of sites

Pros of maigret

  • Supports more sites (2000+) compared to Sherlock's ~300 sites
  • Includes additional features like parsing and analyzing collected data
  • Offers more flexible search options, including custom site support

Cons of maigret

  • May have a steeper learning curve due to additional features
  • Potentially slower execution time due to the larger number of sites checked
  • Less frequent updates compared to Sherlock

Code comparison

Sherlock:

def sherlock(username, site_data, timeout=60):
    results = {}
    for site in site_data:
        results[site] = check_username(username, site_data[site], timeout)
    return results

maigret:

async def maigret(username, sites, timeout=60, parse=True):
    results = {}
    for site in sites:
        results[site] = await check_username(username, site, timeout)
        if parse and results[site]:
            results[site]['parsed'] = parse_info(results[site]['raw'])
    return results

The main differences in the code snippets are:

  1. maigret uses async/await for potentially improved performance
  2. maigret includes an optional parsing step for collected data
  3. Sherlock's implementation is simpler and more straightforward
7,293

holehe allows you to check if the mail is used on different sites like twitter, instagram and will retrieve information on sites with the forgotten password function.

Pros of holehe

  • Focuses specifically on email address verification across various websites
  • Provides more detailed information about each account found, including registration date and last connection
  • Generally faster execution due to its specialized focus

Cons of holehe

  • Limited to email-based searches, unlike Sherlock's broader username-based approach
  • Supports fewer platforms compared to Sherlock's extensive list of supported sites
  • Less actively maintained, with fewer recent updates and contributions

Code Comparison

Sherlock:

async def sherlock(username, site_data, query_notify):
    for site in site_data:
        await sherlock_site(username, site, query_notify)

holehe:

def holehe(email):
    for website in websites:
        result = website(email)
        if result:
            print_result(result)

Both projects use similar approaches, iterating through a list of supported websites and checking for user presence. However, Sherlock's implementation is asynchronous, potentially offering better performance for large-scale searches.

API, CLI, and Web App for analyzing and finding a person's profile in 1000 social media \ websites

Pros of social-analyzer

  • Offers a web-based GUI in addition to CLI, making it more user-friendly for non-technical users
  • Provides more detailed information about profiles, including profile picture analysis and metadata extraction
  • Supports a wider range of social media platforms and websites (300+)

Cons of social-analyzer

  • Slower processing time due to more comprehensive analysis
  • May require additional dependencies and setup compared to Sherlock's simpler installation process
  • Less frequent updates and potentially lower community support

Code Comparison

Sherlock:

def sherlock(username, site_data, timeout=60):
    results = {}
    for site in site_data:
        url = site['url'].format(username)
        response = requests.get(url, timeout=timeout)
        if response.status_code == 200:
            results[site['name']] = url
    return results

social-analyzer:

def find_username_normal(req):
    for site in sites:
        url = site['url'].format(req['string'])
        response = requests.get(url, headers=headers, timeout=10)
        if site['check_text'] in response.text:
            req['found'].append({'name': site['name'], 'url': url})
    return req

Both projects use similar approaches for username searching, but social-analyzer includes additional features for more comprehensive analysis and data extraction.

OSINT Tool: Generate username lists for companies on LinkedIn

Pros of linkedin2username

  • Focused specifically on LinkedIn, providing more targeted and in-depth results for this platform
  • Generates potential email addresses based on common patterns, enhancing the utility for professional networking
  • Lightweight and easy to use, with minimal dependencies

Cons of linkedin2username

  • Limited to a single platform (LinkedIn), whereas Sherlock searches across multiple social media sites
  • Requires LinkedIn authentication, which may be a barrier for some users
  • Less actively maintained, with fewer recent updates compared to Sherlock

Code Comparison

linkedin2username:

def get_company_employees(self, company):
    employees = []
    for page in range(1, 101):
        results = self.search_linkedin(company, page)
        if not results:
            break
        employees.extend(results)
    return employees

Sherlock:

def sherlock(username, site_data, query_notify, tor, unique_tor, proxy=None):
    results = {}
    for social_network, net_info in site_data.items():
        results[social_network] = {"url_main": net_info.get("urlMain")}
        url = net_info["url"].format(username)
        results[social_network]["url"] = url
        results[social_network]["exists"] = "yes"
        results[social_network]["http_status"] = net_info.get("errorType", "")
15,468

🕵️‍♂️ Offensive Google framework.

Pros of GHunt

  • Focuses specifically on Google accounts, providing more in-depth information
  • Offers advanced features like Google Photos metadata extraction
  • Includes a graphical user interface for easier use

Cons of GHunt

  • Limited to Google accounts, while Sherlock covers multiple platforms
  • Requires more setup and dependencies
  • May have potential legal and ethical concerns due to its depth of information gathering

Code Comparison

Sherlock:

def sherlock(username):
    for site in sites:
        url = site['url'].format(username)
        response = requests.get(url)
        if response.status_code == 200:
            print(f"Found on {site['name']}")

GHunt:

def ghunt(email):
    gaia_id = get_gaia_id(email)
    if gaia_id:
        profile = get_google_profile(gaia_id)
        photos = get_google_photos(gaia_id)
        print(f"Profile: {profile}")
        print(f"Photos: {photos}")

Both projects aim to gather information about individuals online, but they differ in scope and approach. Sherlock is a broader tool that searches for usernames across multiple platforms, while GHunt focuses exclusively on Google accounts, providing more detailed information within that ecosystem. Sherlock's code is simpler and more straightforward, iterating through a list of sites to check for username presence. GHunt's code involves more complex operations, such as retrieving Google-specific IDs and fetching detailed profile and photo information.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README



Hunt down social media accounts by username across 400+ social networks

Installation    â€¢    Usage    â€¢    Contributing

Installation

CommandNotes
PyPIpipx install sherlock-projectpip may be used in place of pipx
Dockerdocker pull sherlock/sherlock
Debian familyapt install sherlockKali, Parrot, Debian Testing and Sid
BlackArchpacman -S sherlock
Homebrewbrew install sherlock

See all alternative installation methods here

Usage

To search for only one user:

sherlock user123

To search for more than one user:

sherlock user1 user2 user3

Accounts found will be stored in an individual text file with the corresponding username (e.g user123.txt).

$ sherlock --help
usage: sherlock [-h] [--version] [--verbose] [--folderoutput FOLDEROUTPUT]
                [--output OUTPUT] [--tor] [--unique-tor] [--csv] [--xlsx]
                [--site SITE_NAME] [--proxy PROXY_URL] [--json JSON_FILE]
                [--timeout TIMEOUT] [--print-all] [--print-found] [--no-color]
                [--browse] [--local] [--nsfw]
                USERNAMES [USERNAMES ...]

Sherlock: Find Usernames Across Social Networks (Version 0.14.3)

positional arguments:
  USERNAMES             One or more usernames to check with social networks.
                        Check similar usernames using {?} (replace to '_', '-', '.').

optional arguments:
  -h, --help            show this help message and exit
  --version             Display version information and dependencies.
  --verbose, -v, -d, --debug
                        Display extra debugging information and metrics.
  --folderoutput FOLDEROUTPUT, -fo FOLDEROUTPUT
                        If using multiple usernames, the output of the results will be
                        saved to this folder.
  --output OUTPUT, -o OUTPUT
                        If using single username, the output of the result will be saved
                        to this file.
  --tor, -t             Make requests over Tor; increases runtime; requires Tor to be
                        installed and in system path.
  --unique-tor, -u      Make requests over Tor with new Tor circuit after each request;
                        increases runtime; requires Tor to be installed and in system
                        path.
  --csv                 Create Comma-Separated Values (CSV) File.
  --xlsx                Create the standard file for the modern Microsoft Excel
                        spreadsheet (xlsx).
  --site SITE_NAME      Limit analysis to just the listed sites. Add multiple options to
                        specify more than one site.
  --proxy PROXY_URL, -p PROXY_URL
                        Make requests over a proxy. e.g. socks5://127.0.0.1:1080
  --json JSON_FILE, -j JSON_FILE
                        Load data from a JSON file or an online, valid, JSON file.
  --timeout TIMEOUT     Time (in seconds) to wait for response to requests (Default: 60)
  --print-all           Output sites where the username was not found.
  --print-found         Output sites where the username was found.
  --no-color            Don't color terminal output
  --browse, -b          Browse to all results on default browser.
  --local, -l           Force the use of the local data.json file.
  --nsfw                Include checking of NSFW sites from default list.

Credits

Thank you to everyone who has contributed to Sherlock! ❤️

Sherlock Project Star History Chart

License

MIT © Sherlock Project
Original Creator - Siddharth Dushantha