Top Related Projects
Stalk your Friends. Find their Instagram, FB and Twitter Profiles using Image Recognition and Reverse Image Search.
🕵️♂️ Collect a dossier on a person by username from thousands of sites
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
🕵️♂️ 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
-
Clone the repository:
git clone https://github.com/sherlock-project/sherlock.git
-
Navigate to the Sherlock directory:
cd sherlock
-
Install the requirements:
python3 -m pip install -r requirements.txt
-
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.
🕵️♂️ 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:
- maigret uses async/await for potentially improved performance
- maigret includes an optional parsing step for collected data
- Sherlock's implementation is simpler and more straightforward
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", "")
🕵️♂️ 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 designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Hunt down social media accounts by username across 400+ social networks
Installation ⢠Usage ⢠Contributing
Installation
Command | Notes | |
---|---|---|
PyPI | pipx install sherlock-project | pip may be used in place of pipx |
Docker | docker pull sherlock/sherlock | |
Debian family | apt install sherlock | Kali, Parrot, Debian Testing and Sid |
BlackArch | pacman -S sherlock | |
Homebrew | brew 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! â¤ï¸
License
MIT © Sherlock Project
Original Creator - Siddharth Dushantha
Top Related Projects
Stalk your Friends. Find their Instagram, FB and Twitter Profiles using Image Recognition and Reverse Image Search.
🕵️♂️ Collect a dossier on a person by username from thousands of sites
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
🕵️♂️ Offensive Google framework.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot