├── CNAME
├── __init__.py
├── bg.jpeg
├── findme.png
├── requirements.txt
├── MANIFEST.in
├── .github
├── FUNDING.yml
└── workflows
│ └── publish.yml
├── LICENSE
├── setup.py
├── data.schema.json
├── index.html
├── findme.py
├── README.md
├── script.js
├── 404.html
├── style.css
└── data.json
/CNAME:
--------------------------------------------------------------------------------
1 | findme.hackbit.org
--------------------------------------------------------------------------------
/__init__.py:
--------------------------------------------------------------------------------
1 | __version__ = "1.0.7"
2 |
--------------------------------------------------------------------------------
/bg.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0xSaikat/findme/HEAD/bg.jpeg
--------------------------------------------------------------------------------
/findme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0xSaikat/findme/HEAD/findme.png
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | colorama>=0.4.4
2 | requests>=2.25.1
3 | jsonschema>=4.0.0
4 | termcolor>=1.1.0
5 |
6 |
--------------------------------------------------------------------------------
/MANIFEST.in:
--------------------------------------------------------------------------------
1 | include README.md
2 | include LICENSE
3 | include requirements.txt
4 | include data.json
5 | include data.schema.json
6 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
12 | polar: # Replace with a single Polar username
13 | buy_me_a_coffee: dontsaikat
14 | thanks_dev: # Replace with a single thanks.dev username
15 | custom: 0x82Bcf49437dc29ec5Ebc3dCc4f5e8A7F8D2068DB
16 |
--------------------------------------------------------------------------------
/.github/workflows/publish.yml:
--------------------------------------------------------------------------------
1 | name: Publish to PyPI
2 |
3 | on:
4 | release:
5 | types: [published]
6 | workflow_dispatch:
7 |
8 | permissions:
9 | id-token: write
10 | contents: read
11 |
12 | jobs:
13 | pypi-publish:
14 | name: Upload release to PyPI
15 | runs-on: ubuntu-latest
16 | environment:
17 | name: release
18 | url: https://pypi.org/p/findme-osint
19 | steps:
20 | - name: Checkout code
21 | uses: actions/checkout@v4
22 |
23 | - name: Set up Python
24 | uses: actions/setup-python@v5
25 | with:
26 | python-version: '3.x'
27 |
28 | - name: Install dependencies
29 | run: |
30 | python -m pip install --upgrade pip
31 | pip install build twine
32 |
33 | - name: Build package
34 | run: python -m build
35 |
36 | - name: Check package
37 | run: twine check dist/*
38 |
39 | - name: Publish to PyPI
40 | uses: pypa/gh-action-pypi-publish@release/v1
41 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2025 Sakil Hasan Saikat
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/setup.py:
--------------------------------------------------------------------------------
1 | from setuptools import setup
2 | import os
3 |
4 | try:
5 | with open("README.md", "r", encoding="utf-8") as fh:
6 | long_description = fh.read()
7 | except FileNotFoundError:
8 | long_description = "FindME - Hunt down social media accounts by username across 400+ social networks"
9 |
10 | setup(
11 | name="findme-osint",
12 | version="1.0.7",
13 | py_modules=["findme"],
14 | include_package_data=True,
15 | data_files=[
16 | ('', ['data.json', 'data.schema.json']),
17 | ],
18 | entry_points={
19 | "console_scripts": [
20 | "findme=findme:main",
21 | ],
22 | },
23 | install_requires=[
24 | "requests>=2.25.1",
25 | "jsonschema>=4.0.0",
26 | "termcolor>=1.1.0",
27 | ],
28 | author="Sakil Hasan Saikat (0xSaikat)",
29 | author_email="saikat@hackbit.org",
30 | description="Hunt down social media accounts by username across 400+ social networks",
31 | long_description=long_description,
32 | long_description_content_type="text/markdown",
33 | url="https://github.com/0xSaikat/findme",
34 | project_urls={
35 | "Bug Tracker": "https://github.com/0xSaikat/findme/issues",
36 | "Source Code": "https://github.com/0xSaikat/findme",
37 | "Homepage": "https://saikat.hackbit.org",
38 | },
39 | classifiers=[
40 | "Programming Language :: Python :: 3",
41 | "Programming Language :: Python :: 3.6",
42 | "Programming Language :: Python :: 3.7",
43 | "Programming Language :: Python :: 3.8",
44 | "Programming Language :: Python :: 3.9",
45 | "Programming Language :: Python :: 3.10",
46 | "Programming Language :: Python :: 3.11",
47 | "Programming Language :: Python :: 3.12",
48 | "License :: OSI Approved :: MIT License",
49 | "Operating System :: OS Independent",
50 | "Development Status :: 4 - Beta",
51 | "Intended Audience :: Developers",
52 | "Intended Audience :: Information Technology",
53 | "Topic :: Security",
54 | "Topic :: Internet",
55 | "Environment :: Console",
56 | ],
57 | keywords="osint cybersecurity username-search reconnaissance social-media hackbit findme",
58 | python_requires='>=3.6',
59 | )
60 |
--------------------------------------------------------------------------------
/data.schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json-schema.org/draft/2020-12/schema",
3 | "title": "Sherlock Target Manifest",
4 | "description": "Social media targets to probe for the existence of known usernames",
5 | "type": "object",
6 | "properties": {
7 | "$schema": { "type": "string" }
8 | },
9 | "patternProperties": {
10 | "^(?!\\$).*?$": {
11 | "type": "object",
12 | "description": "Target name and associated information (key should be human readable name)",
13 | "required": [ "url", "urlMain", "errorType", "username_claimed" ],
14 | "properties": {
15 | "url": { "type": "string" },
16 | "urlMain": { "type": "string" },
17 | "urlProbe": { "type": "string" },
18 | "username_claimed": { "type": "string" },
19 | "regexCheck": { "type": "string" },
20 | "isNSFW": { "type": "boolean" },
21 | "headers": { "type": "object" },
22 | "request_payload": { "type": "object" },
23 | "__comment__": {
24 | "type": "string",
25 | "description": "Used to clarify important target information if (and only if) a commit message would not suffice.\nThis key should not be parsed anywhere within Sherlock."
26 | },
27 | "tags": {
28 | "oneOf": [
29 | { "$ref": "#/$defs/tag" },
30 | { "type": "array", "items": { "$ref": "#/$defs/tag" } }
31 | ]
32 | },
33 | "request_method": {
34 | "type": "string",
35 | "enum": [ "GET", "POST", "HEAD", "PUT" ]
36 | },
37 | "errorType": {
38 | "type": "string",
39 | "enum": [ "message", "response_url", "status_code" ]
40 | },
41 | "errorMsg": {
42 | "oneOf": [
43 | { "type": "string" },
44 | { "type": "array", "items": { "type": "string" } }
45 | ]
46 | },
47 | "errorCode": {
48 | "oneOf": [
49 | { "type": "integer" },
50 | { "type": "array", "items": { "type": "integer" } }
51 | ]
52 | },
53 | "errorUrl": { "type": "string" },
54 | "response_url": { "type": "string" }
55 | },
56 | "dependencies": {
57 | "errorMsg": {
58 | "properties" : { "errorType": { "const": "message" } }
59 | },
60 | "errorUrl": {
61 | "properties": { "errorType": { "const": "response_url" } }
62 | },
63 | "errorCode": {
64 | "properties": { "errorType": { "const": "status_code" } }
65 | }
66 | },
67 | "if": { "properties": { "errorType": { "const": "message" } } },
68 | "then": { "required": [ "errorMsg" ] },
69 | "else": {
70 | "if": { "properties": { "errorType": { "const": "response_url" } } },
71 | "then": { "required": [ "errorUrl" ] }
72 | },
73 | "additionalProperties": false
74 | }
75 | },
76 | "additionalProperties": false,
77 | "$defs": {
78 | "tag": { "type": "string", "enum": [ "adult", "gaming" ] }
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | FindMe - Social Media Account Finder
43 |
44 |
45 |
46 |
47 |
48 |
49 |
54 |
55 |
56 |
57 |
58 |
59 |
Search Accounts
60 |
61 |
62 |
63 |
Scanning 0 platforms...
64 |
65 |
66 |
67 |
68 |
72 |
76 |
77 |
0
78 |
Total Platforms
79 |
80 |
81 |
82 |
83 |
84 |
85 | Show All Results
86 |
87 |
88 |
89 |
Export Results
90 |
91 | 📄 Export as JSON
92 | 📊 Export as CSV
93 | 📝 Export as TXT
94 | 📋 Copy to Clipboard
95 |
96 |
97 |
98 |
99 |
100 |
101 |
🚀
102 |
Fast Search
103 |
Concurrent scanning across multiple platforms for instant results
104 |
105 |
106 |
🌐
107 |
500+ Platforms
108 |
Search across popular social media and professional networks
109 |
110 |
111 |
🔒
112 |
Privacy First
113 |
All searches are performed client-side, no data stored
114 |
115 |
116 |
⚡
117 |
Open Source
118 |
Fully transparent code available on GitHub
119 |
120 |
121 |
122 |
128 |
129 |
130 |
131 |
132 |
133 |
--------------------------------------------------------------------------------
/findme.py:
--------------------------------------------------------------------------------
1 | import json
2 | import sys
3 | import os
4 | import requests
5 | from jsonschema import validate, ValidationError
6 | from concurrent.futures import ThreadPoolExecutor, as_completed
7 | from termcolor import colored
8 |
9 | def get_data_file_path(filename):
10 | """Get the path to data files - checks multiple locations."""
11 |
12 | possible_paths = [
13 | filename,
14 | os.path.join(os.path.dirname(os.path.abspath(__file__)), filename),
15 | os.path.join(os.path.dirname(__file__), filename),
16 | ]
17 |
18 | try:
19 | import site
20 |
21 | for site_dir in site.getsitepackages():
22 | possible_paths.append(os.path.join(site_dir, filename))
23 |
24 | user_site = site.getusersitepackages()
25 | if user_site:
26 | possible_paths.append(os.path.join(user_site, filename))
27 | except:
28 | pass
29 |
30 | possible_paths.extend([
31 | os.path.join(sys.prefix, filename),
32 | os.path.join(sys.prefix, 'share', filename),
33 | os.path.join(sys.prefix, 'lib', filename),
34 | ])
35 |
36 | # Try each path
37 | for path in possible_paths:
38 | if os.path.exists(path):
39 | return path
40 |
41 | raise FileNotFoundError(
42 | f"Cannot find {filename}. Searched in:\n" +
43 | "\n".join(f" - {p}" for p in possible_paths[:5])
44 | )
45 |
46 |
47 | def load_targets(json_file, schema_file):
48 | """Load and validate the target platforms from a JSON file."""
49 | try:
50 | json_path = get_data_file_path(json_file)
51 | schema_path = get_data_file_path(schema_file)
52 | except FileNotFoundError as e:
53 | print(colored(f"Error: {e}", "red"))
54 | print(colored("\nThis usually means the package wasn't installed correctly.", "yellow"))
55 | print(colored("Try reinstalling: pip install --force-reinstall findme-osint", "yellow"))
56 | exit(1)
57 |
58 | with open(json_path, 'r') as file:
59 | data = json.load(file)
60 |
61 | with open(schema_path, 'r') as schema:
62 | schema_data = json.load(schema)
63 | try:
64 | validate(instance=data, schema=schema_data)
65 | except ValidationError as e:
66 | print(f"Schema validation error: {e}")
67 | exit(1)
68 |
69 | return data
70 |
71 |
72 | def check_username(platform, username):
73 | """Check if a username exists on a platform."""
74 | url = platform["url"].format(username)
75 | try:
76 | response = requests.get(url, headers=platform.get("headers", {}), timeout=5)
77 | if response.status_code in [403, 404]:
78 | return None
79 | if platform["errorType"] == "status_code":
80 | if response.status_code == 200:
81 | return url
82 | elif platform["errorType"] == "message":
83 | error_msgs = platform["errorMsg"]
84 | error_msgs = error_msgs if isinstance(error_msgs, list) else [error_msgs]
85 | for msg in error_msgs:
86 | if msg in response.text:
87 | return None
88 | return url
89 | except Exception:
90 | return None
91 |
92 |
93 | def search_username_concurrently(username, platforms, max_threads=10, show_progress=True):
94 | """Search for a username across multiple platforms using threading."""
95 | results = []
96 |
97 |
98 | valid_platforms = {name: platform for name, platform in platforms.items() if not name.startswith("$")}
99 | total_platforms = len(valid_platforms)
100 | completed = 0
101 | found_count = 0
102 |
103 | if show_progress and total_platforms > 0:
104 | print(colored(f"Searching across {total_platforms} platforms...\n", "cyan"))
105 |
106 | with ThreadPoolExecutor(max_threads) as executor:
107 | future_to_platform = {
108 | executor.submit(check_username, platform, username): name
109 | for name, platform in valid_platforms.items()
110 | }
111 |
112 | for future in as_completed(future_to_platform):
113 | platform_name = future_to_platform[future]
114 | completed += 1
115 |
116 | try:
117 | result = future.result()
118 | if result:
119 | results.append((platform_name, result))
120 | found_count += 1
121 | status_icon = colored('✓', 'green')
122 | status_text = colored('FOUND', 'green')
123 | else:
124 | status_icon = colored('○', 'yellow')
125 | status_text = colored('NOT FOUND', 'yellow')
126 | except Exception:
127 | status_icon = colored('✗', 'red')
128 | status_text = colored('ERROR', 'red')
129 |
130 | if show_progress and total_platforms > 0:
131 |
132 | percentage = (completed / total_platforms) * 100
133 | progress_bar_length = 40
134 | filled = int(progress_bar_length * completed / total_platforms)
135 | bar = '█' * filled + '░' * (progress_bar_length - filled)
136 |
137 | progress_line = (
138 | f"\r[{bar}] {percentage:.1f}% | "
139 | f"{status_icon} {platform_name[:20]:20s} | "
140 | f"Completed: {completed}/{total_platforms} | "
141 | f"Found: {colored(str(found_count), 'green')}"
142 | )
143 | sys.stdout.write(progress_line)
144 | sys.stdout.flush()
145 |
146 | if show_progress and total_platforms > 0:
147 |
148 | bar = '█' * 40
149 | final_line = (
150 | f"\r[{bar}] 100.0% | "
151 | f"Completed: {total_platforms}/{total_platforms} | "
152 | f"Found: {colored(str(found_count), 'green')}/{total_platforms}"
153 | )
154 | sys.stdout.write(final_line)
155 | sys.stdout.flush()
156 | print("\n")
157 |
158 | return results
159 |
160 |
161 | def print_banner():
162 | """Print the banner with styled text."""
163 | banner = (
164 | "\033[1;32m"
165 | "\n"
166 | "╭─────[By 0xSaikat]───────────────────────────────────╮\n"
167 | "│ │\n"
168 | "│ _______ ____ _________ │\n"
169 | "│ / ____(_)___ ____/ / |/ / ____/ │\n"
170 | "│ / /_ / / __ \\/ __ / /|_/ / __/ │\n"
171 | "│ / __/ / / / / / /_/ / / / / /___ │\n"
172 | "│ /_/ /_/_/ /_/\\__,_/_/ /_/_____/ V-1.0 │\n"
173 | "│ │\n"
174 | "╰─────────────────────────────────[hackbit.org]───────╯\n"
175 | "\033[0m"
176 | )
177 | print(banner)
178 |
179 |
180 | def main():
181 | print_banner()
182 | print()
183 |
184 | platforms = load_targets("data.json", "data.schema.json")
185 | username = input(colored("[", "green") + colored("*", "red") + colored("]", "green") + " Enter username to search social account: ")
186 | print(colored("\n[", "green") + colored("*", "red") + colored("] Checking username ", "green", attrs=["bold"]) + colored(username, "red", attrs=["bold"]) + colored(" on:\n", "green", attrs=["bold"]))
187 |
188 | results = search_username_concurrently(username, platforms, show_progress=True)
189 | if results:
190 | for platform_name, url in results:
191 | print(f"{colored('[', 'green')}{colored('+', 'red')}{colored(']', 'green')} {colored(platform_name, 'green', attrs=['bold'])}: {url}")
192 |
193 | else:
194 | print(colored("[-] No accounts found.", "red", attrs=["bold"]))
195 |
196 | print("\n" + colored("[", "green") + colored("*", "red") + colored("]", "green") + " " + colored("Search completed.", "green", attrs=["bold"]))
197 |
198 |
199 |
200 | if __name__ == "__main__":
201 | main()
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # FindME - A Powerful Tool for Social Media Account Discovery by Username
2 |
3 | 
4 |    
5 |
6 | FindME is a powerful and simple-to-use CLI-based tool that helps users search for social media and online platform profiles associated with a given username. Whether you're performing reconnaissance, verifying your digital footprint, or simply curious about username availability, FindME provides results quickly and efficiently.
7 |
8 | 
9 | 
10 |
11 | **🔍 Hunt down social media accounts by username across 400+ social networks**
12 |
13 | ## 🌐 Try It Online
14 |
15 | **Web Version Available:** [findme.hackbit.org](https://findme.hackbit.org)
16 |
17 | Try FindME directly in your browser without any installation!
18 |
19 | ---
20 |
21 | ## 📦 Installation
22 |
23 | ### Option 1: Install from PyPI (Recommended)
24 |
25 | ```bash
26 | pip install findme-osint
27 | ```
28 |
29 | ### Option 2: Install from Source
30 |
31 | ```bash
32 | git clone https://github.com/0xSaikat/findme.git
33 | cd findme
34 | pip install -r requirements.txt
35 | ```
36 |
37 | ---
38 |
39 | ## 🚀 Usage
40 |
41 | ### If installed via PyPI:
42 | ```bash
43 | findme
44 | ```
45 |
46 | ### If running from source:
47 | ```bash
48 | python3 findme.py
49 | ```
50 |
51 | Simply enter a username when prompted, and FindME will search across 400+ platforms!
52 |
53 | ---
54 |
55 | ## 🎯 Platforms Supported
56 |
57 | FindME searches for usernames on **400+ platforms** including:
58 |
59 | - **Developer Platforms:** GitHub, GitLab, HackerOne, HackerRank
60 | - **Social Media:** Twitter, Instagram, Facebook, LinkedIn
61 | - **Gaming:** Steam, Xbox, PlayStation, Twitch
62 | - **Creative:** Behance, Dribbble, DeviantArt, ArtStation
63 | - **Professional:** Medium, DEV Community, Stack Overflow
64 | - **Entertainment:** YouTube, Vimeo, DailyMotion, Spotify
65 | - **And many more...**
66 |
67 | ---
68 |
69 | ## 💡 How It Works
70 |
71 | 1. **Input a username** when prompted
72 | 2. **FindME searches** the username across 400+ predefined platforms concurrently
73 | 3. **Displays results** with links to profiles where the username exists
74 | 4. **Real-time progress** with color-coded status indicators
75 |
76 | ---
77 |
78 | ## 🎯 Use Cases
79 |
80 | - **🔐 Cybersecurity Research:** Perform reconnaissance to identify potential threats or vulnerabilities linked to a username
81 | - **👤 Digital Footprint Verification:** Verify and track your own online presence to manage your digital identity effectively
82 | - **✅ Username Availability Check:** Quickly assess the availability of usernames across various platforms for branding or personal use
83 | - **🔎 OSINT Investigation:** Assist investigators in tracking online activities or gathering public information about individuals
84 | - **🛡️ Security Audits:** Identify unauthorized use of usernames or brand impersonation
85 |
86 | ---
87 |
88 | ## ⚡ Features
89 |
90 | - **🚀 Fast & Efficient:** Multi-threaded concurrent searching for quick results
91 | - **🎨 Beautiful CLI:** Color-coded output with real-time progress bars
92 | - **📊 Comprehensive:** Searches across 400+ social networks and platforms
93 | - **🔒 Privacy-Focused:** No data collection, all searches are performed securely
94 | - **🪶 Lightweight:** Minimal resource usage, works on any system
95 | - **🌍 Cross-Platform:** Compatible with Windows, macOS, and Linux
96 | - **📖 Open-Source:** Transparent code that you can review and contribute to
97 | - **🌐 Web Version:** Try it online at [findme.hackbit.org](https://findme.hackbit.org)
98 |
99 | ---
100 |
101 | ## 🛠️ Technical Specifications
102 |
103 | - **Language:** Python 3.6+
104 | - **Architecture:** Multi-threaded concurrent HTTP requests
105 | - **Dependencies:** requests, jsonschema, termcolor
106 | - **Performance:** Searches 400+ platforms in under 30 seconds
107 | - **Installation:** Available on PyPI for easy installation
108 | - **CLI Interface:** Interactive command-line tool with progress tracking
109 |
110 | ---
111 |
112 | ## 🤝 Contributing
113 |
114 | Contributions are welcome! Here's how you can help:
115 |
116 | 1. **Fork the repository**
117 | 2. **Create a feature branch:** `git checkout -b feature-name`
118 | 3. **Commit your changes:** `git commit -m 'Add some feature'`
119 | 4. **Push to the branch:** `git push origin feature-name`
120 | 5. **Open a Pull Request**
121 |
122 | ### Adding New Platforms
123 |
124 | To add support for new platforms, edit `data.json` with the platform details:
125 | ```json
126 | {
127 | "PlatformName": {
128 | "errorMsg": "Not Found",
129 | "errorType": "message",
130 | "regexCheck": "^[a-zA-Z0-9_-]{3,20}$",
131 | "url": "https://platform.com/{}",
132 | "urlMain": "https://platform.com/",
133 | "username_claimed": "example_user"
134 | }
135 | }
136 | ```
137 |
138 | **Fields explained:**
139 | - `errorMsg`: The error message text to check for when username doesn't exist
140 | - `errorType`: Either `"message"` (check response text) or `"status_code"` (check HTTP status)
141 | - `regexCheck`: Optional regex pattern to validate username format
142 | - `url`: Platform URL with `{}` as placeholder for username
143 | - `urlMain`: Main homepage of the platform
144 | - `username_claimed`: Example of a known existing username for testing
145 |
146 | ---
147 |
148 | ## 📝 Changelog
149 |
150 | ### v1.0.7 (Latest)
151 | - ✅ Fixed data files packaging issue
152 | - ✅ Improved file path handling for installed package
153 | - ✅ Better error messages
154 |
155 | ### v1.0.6
156 | - ✅ Initial PyPI release
157 | - ✅ Support for 400+ platforms
158 | - ✅ Multi-threaded concurrent searching
159 | - ✅ Beautiful CLI interface
160 |
161 | ---
162 |
163 | ## 🔗 Links
164 |
165 | - **PyPI Package:** [pypi.org/project/findme-osint](https://pypi.org/project/findme-osint/)
166 | - **Web Version:** [findme.hackbit.org](https://findme.hackbit.org)
167 | - **GitHub Repository:** [github.com/0xSaikat/findme](https://github.com/0xSaikat/findme)
168 | - **Documentation:** [GitHub Wiki](https://github.com/0xSaikat/findme/wiki)
169 | - **Report Issues:** [GitHub Issues](https://github.com/0xSaikat/findme/issues)
170 |
171 | ---
172 |
173 | ## 👤 About the Author
174 |
175 | I am **Sakil Hasan Saikat (0xSaikat)**, a cybersecurity enthusiast and the founder of [HackBit](https://hackbit.org). I specialize in offensive security, penetration testing, and building automated tools for cybersecurity research. My passion for ethical hacking has driven me to create several tools that contribute to the security community.
176 |
177 | - **Website:** [saikat.hackbit.org](https://saikat.hackbit.org)
178 | - **LinkedIn:** [linkedin.com/in/0xsaikat](https://www.linkedin.com/in/0xsaikat/)
179 | - **GitHub:** [github.com/0xSaikat](https://github.com/0xSaikat)
180 | - **Twitter:** [@0xSaikat](https://twitter.com/0xSaikat)
181 |
182 | ---
183 |
184 | ## 🏢 About HackBit
185 |
186 | [**HackBit**](https://hackbit.org) is a cybersecurity-focused organization committed to discovering vulnerabilities, creating solutions, and making the internet a safer place. We build open-source security tools and contribute to the global cybersecurity community.
187 |
188 | **Mission:** *Waving the Internet Securely!*
189 |
190 | Join us in our mission to secure the digital world.
191 |
192 | ---
193 |
194 | ## 📄 License
195 |
196 | This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.
197 |
198 | ---
199 |
200 | ## ⭐ Support the Project
201 |
202 | If you find FindME useful, please consider:
203 | - ⭐ **Starring the repository** on GitHub
204 | - ⚠️ **Reporting bugs** or suggesting features
205 | - 🤝 **Contributing** to the codebase
206 | - 📢 **Sharing** with the community
207 |
208 | ---
209 |
210 | ## 👥 Contributors
211 |
212 | 
213 |
214 |
215 |
216 |
217 |
218 | ---
219 |
220 | ## 📊 Stats
221 |
222 | 
223 | 
224 | 
225 |
226 | ---
227 |
228 |
229 |
230 | By the Hackers for the Hackers!
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
--------------------------------------------------------------------------------
/script.js:
--------------------------------------------------------------------------------
1 | function createSpaceBackground() {
2 | const spaceBackground = document.getElementById('spaceBackground');
3 |
4 | for (let i = 0; i < 200; i++) {
5 | const star = document.createElement('div');
6 | star.className = 'star';
7 | const size = Math.random() * 3;
8 | star.style.width = size + 'px';
9 | star.style.height = size + 'px';
10 | star.style.left = Math.random() * 100 + '%';
11 | star.style.top = Math.random() * 100 + '%';
12 | star.style.animationDelay = Math.random() * 4 + 's';
13 | star.style.animationDuration = (Math.random() * 3 + 3) + 's';
14 | spaceBackground.appendChild(star);
15 | }
16 |
17 | function createComet() {
18 | const comet = document.createElement('div');
19 | comet.className = 'comet';
20 | comet.style.left = Math.random() * 100 + '%';
21 | comet.style.top = Math.random() * 50 + '%';
22 | comet.style.animationDuration = (Math.random() * 2 + 2) + 's';
23 | spaceBackground.appendChild(comet);
24 | setTimeout(() => comet.remove(), 3000);
25 | }
26 |
27 | setInterval(createComet, 2000);
28 |
29 | for (let i = 0; i < 3; i++) {
30 | const nebula = document.createElement('div');
31 | nebula.className = 'nebula';
32 | const size = Math.random() * 300 + 200;
33 | nebula.style.width = size + 'px';
34 | nebula.style.height = size + 'px';
35 | nebula.style.left = Math.random() * 100 + '%';
36 | nebula.style.top = Math.random() * 100 + '%';
37 | const colors = ['rgba(0, 255, 136, 0.3)', 'rgba(0, 212, 255, 0.3)', 'rgba(138, 43, 226, 0.3)'];
38 | nebula.style.background = colors[i % colors.length];
39 | nebula.style.animationDelay = i * 3 + 's';
40 | spaceBackground.appendChild(nebula);
41 | }
42 | }
43 |
44 | async function loadPlatforms() {
45 | try {
46 | const response = await fetch('https://raw.githubusercontent.com/0xSaikat/findme/main/data.json');
47 | const data = await response.json();
48 | const platforms = {};
49 | for (const [key, value] of Object.entries(data)) {
50 | if (!key.startsWith('$') && typeof value === 'object' && value.url) {
51 | platforms[key] = value;
52 | }
53 | }
54 | return platforms;
55 | } catch (error) {
56 | console.error('Error loading platforms:', error);
57 | return {};
58 | }
59 | }
60 |
61 | let searchResults = [];
62 | let showingAll = false;
63 |
64 | async function checkUsername(platform, username, platformName) {
65 | const url = platform.url.replace('{}', username);
66 |
67 | const corsProxy = 'https://corsproxy.io/?';
68 | const proxiedUrl = corsProxy + encodeURIComponent(url);
69 |
70 | try {
71 | const response = await fetch(proxiedUrl, {
72 | method: 'GET',
73 | redirect: 'follow'
74 | });
75 |
76 | if (response.ok && response.status !== 404) {
77 | return { name: platformName, url: url, found: true };
78 | }
79 | return null;
80 | } catch (error) {
81 | return null;
82 | }
83 | }
84 |
85 | function displayResults(results, showAll = false) {
86 | const resultsDiv = document.getElementById('results');
87 | const exportSection = document.getElementById('exportSection');
88 | const statsBar = document.getElementById('statsBar');
89 | const showMoreSection = document.getElementById('showMoreSection');
90 |
91 | const existingResults = resultsDiv.querySelectorAll('.result-item');
92 |
93 | if (results.length === 0) {
94 | resultsDiv.innerHTML = 'No accounts found. The username may not exist on these platforms.
';
95 | exportSection.classList.remove('show');
96 | statsBar.classList.remove('show');
97 | showMoreSection.classList.remove('show');
98 | } else {
99 | const displayCount = showAll ? results.length : Math.min(6, results.length);
100 |
101 | if (showAll || existingResults.length !== displayCount) {
102 | resultsDiv.innerHTML = '';
103 |
104 | for (let i = 0; i < displayCount; i++) {
105 | const result = results[i];
106 | const resultItem = document.createElement('div');
107 | resultItem.className = 'result-item';
108 | resultItem.style.animationDelay = (i * 0.05) + 's';
109 | resultItem.innerHTML = `
110 | ${result.name}
111 | ${result.url}
112 |
115 | `;
116 | resultsDiv.appendChild(resultItem);
117 | }
118 | }
119 |
120 | if (results.length > 6 && !showAll) {
121 | showMoreSection.classList.add('show');
122 | document.getElementById('showMoreBtn').textContent = `Show All ${results.length} Results`;
123 | } else {
124 | showMoreSection.classList.remove('show');
125 | }
126 |
127 | exportSection.classList.add('show');
128 | statsBar.classList.add('show');
129 | }
130 |
131 | resultsDiv.classList.add('show');
132 | }
133 |
134 | async function searchUsername(username) {
135 | const platforms = await loadPlatforms();
136 | const results = [];
137 | const platformEntries = Object.entries(platforms);
138 |
139 | document.getElementById('totalCount').textContent = platformEntries.length;
140 | document.getElementById('platformCount').textContent = platformEntries.length;
141 | document.getElementById('scannedCount').textContent = '0';
142 | document.getElementById('foundCount').textContent = '0';
143 |
144 | searchResults = [];
145 |
146 | let scanned = 0;
147 |
148 | for (let i = 0; i < platformEntries.length; i++) {
149 | const [name, platform] = platformEntries[i];
150 |
151 | document.getElementById('currentCheck').textContent = `Checking: ${name}`;
152 |
153 | const result = await checkUsername(platform, username, name);
154 |
155 | if (result) {
156 | results.push(result);
157 | searchResults.push(result);
158 | document.getElementById('foundCount').textContent = results.length;
159 |
160 | displayResults(results, showingAll);
161 | }
162 |
163 | scanned++;
164 | document.getElementById('scannedCount').textContent = scanned;
165 |
166 | await new Promise(resolve => setTimeout(resolve, 50));
167 | }
168 |
169 | document.getElementById('currentCheck').textContent = 'Scan complete!';
170 |
171 | displayResults(results, showingAll);
172 |
173 | return results;
174 | }
175 |
176 | function exportAsJSON() {
177 | const dataStr = JSON.stringify(searchResults, null, 2);
178 | downloadFile(dataStr, 'findme-results.json', 'application/json');
179 | }
180 |
181 | function exportAsCSV() {
182 | let csv = 'Platform,URL\n';
183 | searchResults.forEach(result => {
184 | csv += `"${result.name}","${result.url}"\n`;
185 | });
186 | downloadFile(csv, 'findme-results.csv', 'text/csv');
187 | }
188 |
189 | function exportAsTXT() {
190 | let txt = 'FindMe Search Results\n';
191 | txt += '='.repeat(50) + '\n\n';
192 | searchResults.forEach(result => {
193 | txt += `${result.name}: ${result.url}\n`;
194 | });
195 | downloadFile(txt, 'findme-results.txt', 'text/plain');
196 | }
197 |
198 | function copyToClipboard() {
199 | let text = '';
200 | searchResults.forEach(result => {
201 | text += `${result.name}: ${result.url}\n`;
202 | });
203 | navigator.clipboard.writeText(text).then(() => {
204 | alert('Results copied to clipboard!');
205 | });
206 | }
207 |
208 | function downloadFile(content, filename, contentType) {
209 | const blob = new Blob([content], { type: contentType });
210 | const url = window.URL.createObjectURL(blob);
211 | const link = document.createElement('a');
212 | link.href = url;
213 | link.download = filename;
214 | link.click();
215 | window.URL.revokeObjectURL(url);
216 | }
217 |
218 | document.getElementById('searchBtn').addEventListener('click', async () => {
219 | const username = document.getElementById('usernameInput').value.trim();
220 |
221 | if (!username) {
222 | alert('Please enter a username');
223 | return;
224 | }
225 |
226 | const searchBtn = document.getElementById('searchBtn');
227 | const loader = document.getElementById('loader');
228 | const results = document.getElementById('results');
229 | const exportSection = document.getElementById('exportSection');
230 | const statsBar = document.getElementById('statsBar');
231 | const showMoreSection = document.getElementById('showMoreSection');
232 |
233 | searchBtn.disabled = true;
234 | loader.classList.add('active');
235 | results.classList.remove('show');
236 | results.innerHTML = '';
237 | exportSection.classList.remove('show');
238 | showMoreSection.classList.remove('show');
239 | statsBar.classList.add('show');
240 | showingAll = false;
241 |
242 | const foundResults = await searchUsername(username);
243 |
244 | loader.classList.remove('active');
245 | searchBtn.disabled = false;
246 | displayResults(foundResults, false);
247 | });
248 |
249 | document.getElementById('showMoreBtn').addEventListener('click', () => {
250 | showingAll = true;
251 |
252 | if (searchResults.length > 0) {
253 | displayResults(searchResults, true);
254 | }
255 | });
256 |
257 | document.getElementById('usernameInput').addEventListener('keypress', (e) => {
258 | if (e.key === 'Enter') {
259 | document.getElementById('searchBtn').click();
260 | }
261 | });
262 |
263 | createSpaceBackground();
264 |
--------------------------------------------------------------------------------
/404.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 404 - Page Not Found | HackBit
7 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
255 |
256 |
257 | > HackBit Security Platform
258 |
259 |
260 |
404
261 |
NOT FOUND
262 |
263 | The requested resource could not be located in our secure database.
264 | This page may have been moved, deleted, or is protected by our security protocols.
265 | Click anywhere or press any key to return home.
266 |
267 |
268 |
269 | saikat@hackbit:~$ ls -la /var/www/html/
270 | drwxr-xr-x 2 root root 4096 Jul 22 15:30 .
271 | drwxr-xr-x 3 root root 4096 Jul 22 15:29 ..
272 | -rw-r--r-- 1 root root 612 Jul 22 15:30 index.html
273 | File not found: 404 error detected
274 |
275 |
276 |
280 |
281 |
282 |
283 |
286 |
287 |
346 |
347 |
348 |
--------------------------------------------------------------------------------
/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
9 | background: #000;
10 | color: #fff;
11 | min-height: 100vh;
12 | overflow-x: hidden;
13 | position: relative;
14 | }
15 |
16 | .space-background {
17 | position: fixed;
18 | top: 0;
19 | left: 0;
20 | width: 100%;
21 | height: 100%;
22 | z-index: 0;
23 | background: radial-gradient(ellipse at bottom, #1b2735 0%, #090a0f 100%);
24 | overflow: hidden;
25 | }
26 |
27 | .star {
28 | position: absolute;
29 | background: white;
30 | border-radius: 50%;
31 | animation: twinkle 4s infinite;
32 | }
33 |
34 | @keyframes twinkle {
35 | 0%, 100% { opacity: 0.3; transform: scale(1); }
36 | 50% { opacity: 1; transform: scale(1.2); }
37 | }
38 |
39 | .comet {
40 | position: absolute;
41 | width: 2px;
42 | height: 2px;
43 | background: white;
44 | border-radius: 50%;
45 | animation: shoot 3s linear infinite;
46 | }
47 |
48 | @keyframes shoot {
49 | 0% {
50 | transform: translateX(0) translateY(0);
51 | opacity: 1;
52 | }
53 | 100% {
54 | transform: translateX(-300px) translateY(300px);
55 | opacity: 0;
56 | }
57 | }
58 |
59 | .comet::before {
60 | content: '';
61 | position: absolute;
62 | top: 0;
63 | right: 0;
64 | width: 50px;
65 | height: 1px;
66 | background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.8) 100%);
67 | }
68 |
69 | .nebula {
70 | position: absolute;
71 | border-radius: 50%;
72 | filter: blur(40px);
73 | opacity: 0.3;
74 | animation: nebulaPulse 10s infinite alternate;
75 | }
76 |
77 | @keyframes nebulaPulse {
78 | 0% { transform: scale(1); opacity: 0.2; }
79 | 100% { transform: scale(1.5); opacity: 0.4; }
80 | }
81 |
82 | .container {
83 | position: relative;
84 | z-index: 1;
85 | max-width: 1200px;
86 | margin: 0 auto;
87 | padding: 20px;
88 | }
89 |
90 | header {
91 | text-align: center;
92 | padding: 60px 20px 40px;
93 | animation: fadeInDown 1s ease;
94 | }
95 |
96 | @keyframes fadeInDown {
97 | from {
98 | opacity: 0;
99 | transform: translateY(-30px);
100 | }
101 | to {
102 | opacity: 1;
103 | transform: translateY(0);
104 | }
105 | }
106 |
107 | .logo {
108 | font-size: 4.5rem;
109 | font-weight: 900;
110 | font-family: 'Arial Black', 'Impact', sans-serif;
111 | background: linear-gradient(135deg, #00ff88, #00d4ff, #00ff88);
112 | -webkit-background-clip: text;
113 | -webkit-text-fill-color: transparent;
114 | background-clip: text;
115 | margin-bottom: 10px;
116 | letter-spacing: 3px;
117 | text-transform: uppercase;
118 | }
119 |
120 | .tagline {
121 | font-size: 1.2rem;
122 | color: #aaa;
123 | margin-bottom: 20px;
124 | }
125 |
126 | .author {
127 | color: #00ff88;
128 | font-size: 0.9rem;
129 | margin-top: 10px;
130 | }
131 |
132 | .author a {
133 | color: #00ff88;
134 | text-decoration: none;
135 | transition: all 0.3s ease;
136 | border-bottom: 1px solid transparent;
137 | }
138 |
139 | .author a:hover {
140 | color: #00d4ff;
141 | border-bottom: 1px solid #00d4ff;
142 | }
143 |
144 | .search-section {
145 | background: rgba(255, 255, 255, 0.05);
146 | backdrop-filter: blur(10px);
147 | border: 1px solid rgba(255, 255, 255, 0.1);
148 | border-radius: 20px;
149 | padding: 40px;
150 | margin: 40px auto;
151 | max-width: 600px;
152 | box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
153 | animation: fadeInUp 1s ease;
154 | }
155 |
156 | @keyframes fadeInUp {
157 | from {
158 | opacity: 0;
159 | transform: translateY(30px);
160 | }
161 | to {
162 | opacity: 1;
163 | transform: translateY(0);
164 | }
165 | }
166 |
167 | .input-group {
168 | position: relative;
169 | margin-bottom: 30px;
170 | }
171 |
172 | input[type="text"] {
173 | width: 100%;
174 | padding: 18px 24px;
175 | font-size: 1.1rem;
176 | background: rgba(255, 255, 255, 0.1);
177 | border: 2px solid rgba(0, 255, 136, 0.3);
178 | border-radius: 12px;
179 | color: #fff;
180 | outline: none;
181 | transition: all 0.3s ease;
182 | }
183 |
184 | input[type="text"]:focus {
185 | border-color: #00ff88;
186 | background: rgba(255, 255, 255, 0.15);
187 | }
188 |
189 | input[type="text"]::placeholder {
190 | color: #888;
191 | }
192 |
193 | .search-btn {
194 | width: 100%;
195 | padding: 18px;
196 | font-size: 1.1rem;
197 | font-weight: bold;
198 | background: linear-gradient(135deg, #00ff88, #00d4ff);
199 | border: none;
200 | border-radius: 12px;
201 | color: #0a0a0a;
202 | cursor: pointer;
203 | transition: all 0.3s ease;
204 | }
205 |
206 | .search-btn:hover {
207 | transform: translateY(-2px);
208 | }
209 |
210 | .search-btn:active {
211 | transform: translateY(0);
212 | }
213 |
214 | .search-btn:disabled {
215 | opacity: 0.6;
216 | cursor: not-allowed;
217 | }
218 |
219 | .loader {
220 | display: none;
221 | text-align: center;
222 | margin: 30px 0;
223 | }
224 |
225 | .loader.active {
226 | display: block;
227 | }
228 |
229 | .spinner {
230 | border: 3px solid rgba(255, 255, 255, 0.1);
231 | border-top: 3px solid #00ff88;
232 | border-radius: 50%;
233 | width: 50px;
234 | height: 50px;
235 | animation: spin 1s linear infinite;
236 | margin: 0 auto;
237 | }
238 |
239 | @keyframes spin {
240 | 0% { transform: rotate(0deg); }
241 | 100% { transform: rotate(360deg); }
242 | }
243 |
244 | .stats-bar {
245 | display: none;
246 | margin-top: 20px;
247 | padding: 15px;
248 | background: rgba(255, 255, 255, 0.05);
249 | border-radius: 10px;
250 | text-align: center;
251 | }
252 |
253 | .stats-bar.show {
254 | display: block;
255 | }
256 |
257 | .stats-item {
258 | display: inline-block;
259 | margin: 0 20px;
260 | color: #aaa;
261 | }
262 |
263 | .stats-value {
264 | color: #00ff88;
265 | font-weight: bold;
266 | font-size: 1.2rem;
267 | }
268 |
269 | .current-check {
270 | margin-top: 10px;
271 | color: #888;
272 | font-size: 0.9rem;
273 | min-height: 20px;
274 | }
275 |
276 | .results {
277 | margin-top: 40px;
278 | opacity: 0;
279 | transform: translateY(20px);
280 | transition: all 0.5s ease;
281 | }
282 |
283 | .results.show {
284 | opacity: 1;
285 | transform: translateY(0);
286 | }
287 |
288 | .result-item {
289 | background: rgba(255, 255, 255, 0.05);
290 | border: 1px solid rgba(0, 255, 136, 0.2);
291 | border-radius: 12px;
292 | padding: 20px;
293 | margin-bottom: 15px;
294 | display: flex;
295 | justify-content: space-between;
296 | align-items: center;
297 | transition: all 0.3s ease;
298 | animation: slideIn 0.5s ease;
299 | }
300 |
301 | @keyframes slideIn {
302 | from {
303 | opacity: 0;
304 | transform: translateX(-20px);
305 | }
306 | to {
307 | opacity: 1;
308 | transform: translateX(0);
309 | }
310 | }
311 |
312 | .result-item:hover {
313 | background: rgba(255, 255, 255, 0.1);
314 | border-color: #00ff88;
315 | transform: translateX(10px);
316 | }
317 |
318 | .platform-name {
319 | font-weight: bold;
320 | color: #00ff88;
321 | font-size: 1.1rem;
322 | flex: 1;
323 | }
324 |
325 | .result-url {
326 | font-size: 0.85rem;
327 | color: #888;
328 | margin-left: 15px;
329 | max-width: 300px;
330 | overflow: hidden;
331 | text-overflow: ellipsis;
332 | white-space: nowrap;
333 | }
334 |
335 | .result-actions {
336 | display: flex;
337 | gap: 10px;
338 | }
339 |
340 | .visit-btn {
341 | padding: 8px 16px;
342 | background: rgba(0, 255, 136, 0.2);
343 | border: 1px solid #00ff88;
344 | border-radius: 8px;
345 | color: #00ff88;
346 | text-decoration: none;
347 | transition: all 0.3s ease;
348 | font-weight: 600;
349 | font-size: 0.9rem;
350 | }
351 |
352 | .visit-btn:hover {
353 | background: #00ff88;
354 | color: #0a0a0a;
355 | }
356 |
357 | .no-results {
358 | text-align: center;
359 | padding: 40px;
360 | color: #ff4444;
361 | font-size: 1.1rem;
362 | }
363 |
364 | .show-more-section {
365 | text-align: center;
366 | margin-top: 20px;
367 | display: none;
368 | }
369 |
370 | .show-more-section.show {
371 | display: block;
372 | }
373 |
374 | .show-more-btn {
375 | padding: 12px 30px;
376 | background: rgba(0, 212, 255, 0.2);
377 | border: 1px solid #00d4ff;
378 | border-radius: 10px;
379 | color: #00d4ff;
380 | cursor: pointer;
381 | transition: all 0.3s ease;
382 | font-weight: 600;
383 | font-size: 0.95rem;
384 | }
385 |
386 | .show-more-btn:hover {
387 | background: #00d4ff;
388 | color: #0a0a0a;
389 | }
390 |
391 | .export-section {
392 | margin-top: 30px;
393 | padding-top: 30px;
394 | border-top: 1px solid rgba(255, 255, 255, 0.1);
395 | display: none;
396 | }
397 |
398 | .export-section.show {
399 | display: block;
400 | }
401 |
402 | .export-buttons {
403 | display: flex;
404 | gap: 15px;
405 | justify-content: center;
406 | flex-wrap: wrap;
407 | }
408 |
409 | .export-btn {
410 | padding: 12px 24px;
411 | background: rgba(0, 212, 255, 0.2);
412 | border: 1px solid #00d4ff;
413 | border-radius: 10px;
414 | color: #00d4ff;
415 | cursor: pointer;
416 | transition: all 0.3s ease;
417 | font-weight: 600;
418 | font-size: 0.95rem;
419 | }
420 |
421 | .export-btn:hover {
422 | background: #00d4ff;
423 | color: #0a0a0a;
424 | }
425 |
426 | .features {
427 | display: grid;
428 | grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
429 | gap: 30px;
430 | margin-top: 60px;
431 | padding: 0 20px;
432 | }
433 |
434 | .feature-card {
435 | background: rgba(255, 255, 255, 0.05);
436 | backdrop-filter: blur(10px);
437 | border: 1px solid rgba(255, 255, 255, 0.1);
438 | border-radius: 15px;
439 | padding: 30px;
440 | text-align: center;
441 | transition: all 0.3s ease;
442 | }
443 |
444 | .feature-card:hover {
445 | transform: translateY(-10px);
446 | border-color: #00ff88;
447 | }
448 |
449 | .feature-icon {
450 | font-size: 3rem;
451 | margin-bottom: 15px;
452 | }
453 |
454 | .feature-title {
455 | font-size: 1.3rem;
456 | color: #00ff88;
457 | margin-bottom: 10px;
458 | }
459 |
460 | .feature-desc {
461 | color: #aaa;
462 | line-height: 1.6;
463 | }
464 |
465 | footer {
466 | text-align: center;
467 | padding: 40px 20px;
468 | margin-top: 60px;
469 | border-top: 1px solid rgba(255, 255, 255, 0.1);
470 | }
471 |
472 | .github-link {
473 | display: inline-block;
474 | margin-top: 20px;
475 | padding: 12px 30px;
476 | background: rgba(255, 255, 255, 0.1);
477 | border: 1px solid #00ff88;
478 | border-radius: 10px;
479 | color: #00ff88;
480 | text-decoration: none;
481 | transition: all 0.3s ease;
482 | font-weight: 600;
483 | }
484 |
485 | .github-link:hover {
486 | background: #00ff88;
487 | color: #0a0a0a;
488 | }
489 |
490 | @media (max-width: 768px) {
491 | .logo {
492 | font-size: 2.5rem;
493 | }
494 |
495 | .search-section {
496 | padding: 30px 20px;
497 | }
498 |
499 | .features {
500 | grid-template-columns: 1fr;
501 | }
502 |
503 | .result-url {
504 | display: none;
505 | }
506 | }
507 |
--------------------------------------------------------------------------------
/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "data.schema.json",
3 | "1337x": {
4 | "errorMsg": [
5 | "Error something went wrong. ",
6 | "404 Not Found "
7 | ],
8 | "errorType": "message",
9 | "regexCheck": "^[A-Za-z0-9]{4,12}$",
10 | "url": "https://www.1337x.to/user/{}/",
11 | "urlMain": "https://www.1337x.to/",
12 | "username_claimed": "FitGirl"
13 | },
14 | "2Dimensions": {
15 | "errorType": "status_code",
16 | "url": "https://2Dimensions.com/a/{}",
17 | "urlMain": "https://2Dimensions.com/",
18 | "username_claimed": "blue"
19 | },
20 | "3dnews": {
21 | "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430.",
22 | "errorType": "message",
23 | "url": "http://forum.3dnews.ru/member.php?username={}",
24 | "urlMain": "http://forum.3dnews.ru/",
25 | "username_claimed": "red"
26 | },
27 | "7Cups": {
28 | "errorType": "status_code",
29 | "url": "https://www.7cups.com/@{}",
30 | "urlMain": "https://www.7cups.com/",
31 | "username_claimed": "blue"
32 | },
33 | "8tracks": {
34 | "errorType": "message",
35 | "errorMsg": "\"available\":true",
36 | "headers": {
37 | "Accept-Language": "en-US,en;q=0.5"
38 | },
39 | "url": "https://8tracks.com/{}",
40 | "urlProbe": "https://8tracks.com/users/check_username?login={}&format=jsonh",
41 | "urlMain": "https://8tracks.com/",
42 | "username_claimed": "blue"
43 | },
44 | "9GAG": {
45 | "errorType": "status_code",
46 | "url": "https://www.9gag.com/u/{}",
47 | "urlMain": "https://www.9gag.com/",
48 | "username_claimed": "blue"
49 | },
50 | "APClips": {
51 | "errorMsg": "Amateur Porn Content Creators",
52 | "errorType": "message",
53 | "isNSFW": true,
54 | "url": "https://apclips.com/{}",
55 | "urlMain": "https://apclips.com/",
56 | "username_claimed": "onlybbyraq"
57 | },
58 | "About.me": {
59 | "errorType": "status_code",
60 | "url": "https://about.me/{}",
61 | "urlMain": "https://about.me/",
62 | "username_claimed": "blue"
63 | },
64 | "Academia.edu": {
65 | "errorType": "status_code",
66 | "regexCheck": "^[^.]*$",
67 | "url": "https://independent.academia.edu/{}",
68 | "urlMain": "https://www.academia.edu/",
69 | "username_claimed": "blue"
70 | },
71 | "AdmireMe.Vip": {
72 | "errorMsg": "Page Not Found",
73 | "errorType": "message",
74 | "isNSFW": true,
75 | "url": "https://admireme.vip/{}",
76 | "urlMain": "https://admireme.vip/",
77 | "username_claimed": "DemiDevil"
78 | },
79 | "Air Pilot Life": {
80 | "errorMsg": "Oops! That page doesn\u2019t exist or is private",
81 | "errorType": "message",
82 | "url": "https://airlinepilot.life/u/{}",
83 | "urlMain": "https://airlinepilot.life/",
84 | "username_claimed": "chris"
85 | },
86 | "Airbit": {
87 | "errorType": "status_code",
88 | "url": "https://airbit.com/{}",
89 | "urlMain": "https://airbit.com/",
90 | "username_claimed": "airbit"
91 | },
92 | "Airliners": {
93 | "errorType": "status_code",
94 | "url": "https://www.airliners.net/user/{}/profile/photos",
95 | "urlMain": "https://www.airliners.net/",
96 | "username_claimed": "yushinlin"
97 | },
98 | "All Things Worn": {
99 | "errorMsg": "Sell Used Panties",
100 | "errorType": "message",
101 | "isNSFW": true,
102 | "url": "https://www.allthingsworn.com/profile/{}",
103 | "urlMain": "https://www.allthingsworn.com",
104 | "username_claimed": "pink"
105 | },
106 | "AllMyLinks": {
107 | "errorMsg": "Not Found",
108 | "errorType": "message",
109 | "regexCheck": "^[a-z0-9][a-z0-9-]{2,32}$",
110 | "url": "https://allmylinks.com/{}",
111 | "urlMain": "https://allmylinks.com/",
112 | "username_claimed": "blue"
113 | },
114 | "AniWorld": {
115 | "errorMsg": "Dieses Profil ist nicht verf\u00fcgbar",
116 | "errorType": "message",
117 | "url": "https://aniworld.to/user/profil/{}",
118 | "urlMain": "https://aniworld.to/",
119 | "username_claimed": "blue"
120 | },
121 | "Anilist": {
122 | "errorType": "status_code",
123 | "regexCheck": "^[A-Za-z0-9]{2,20}$",
124 | "request_method": "POST",
125 | "request_payload": {
126 | "query": "query($name:String){User(name:$name){id}}",
127 | "variables": {
128 | "name": "{}"
129 | }
130 | },
131 | "url": "https://anilist.co/user/{}/",
132 | "urlMain": "https://anilist.co/",
133 | "urlProbe": "https://graphql.anilist.co/",
134 | "username_claimed": "Josh"
135 | },
136 | "Apple Developer": {
137 | "errorType": "status_code",
138 | "url": "https://developer.apple.com/forums/profile/{}",
139 | "urlMain": "https://developer.apple.com",
140 | "username_claimed": "lio24d"
141 | },
142 | "Apple Discussions": {
143 | "errorMsg": "The page you tried was not found. You may have used an outdated link or may have typed the address (URL) incorrectly.",
144 | "errorType": "message",
145 | "url": "https://discussions.apple.com/profile/{}",
146 | "urlMain": "https://discussions.apple.com",
147 | "username_claimed": "jason"
148 | },
149 | "Archive of Our Own": {
150 | "errorType": "status_code",
151 | "regexCheck": "^[^.]*?$",
152 | "url": "https://archiveofourown.org/users/{}",
153 | "urlMain": "https://archiveofourown.org/",
154 | "username_claimed": "test"
155 | },
156 | "Archive.org": {
157 | "__comment__": "'The resource could not be found' relates to archive downtime",
158 | "errorMsg": [
159 | "could not fetch an account with user item identifier",
160 | "The resource could not be found",
161 | "Internet Archive services are temporarily offline"
162 | ],
163 | "errorType": "message",
164 | "url": "https://archive.org/details/@{}",
165 | "urlMain": "https://archive.org",
166 | "urlProbe": "https://archive.org/details/@{}?noscript=true",
167 | "username_claimed": "blue"
168 | },
169 | "ArtStation": {
170 | "errorType": "status_code",
171 | "url": "https://www.artstation.com/{}",
172 | "urlMain": "https://www.artstation.com/",
173 | "username_claimed": "Blue"
174 | },
175 | "Asciinema": {
176 | "errorType": "status_code",
177 | "url": "https://asciinema.org/~{}",
178 | "urlMain": "https://asciinema.org",
179 | "username_claimed": "red"
180 | },
181 | "Ask Fedora": {
182 | "errorType": "status_code",
183 | "url": "https://ask.fedoraproject.org/u/{}",
184 | "urlMain": "https://ask.fedoraproject.org/",
185 | "username_claimed": "red"
186 | },
187 | "AskFM": {
188 | "errorMsg": "Well, apparently not anymore.",
189 | "errorType": "message",
190 | "regexCheck": "^[a-zA-Z0-9_]{3,40}$",
191 | "url": "https://ask.fm/{}",
192 | "urlMain": "https://ask.fm/",
193 | "username_claimed": "blue"
194 | },
195 | "Atcoder": {
196 | "errorType": "status_code",
197 | "url": "https://atcoder.jp/users/{}",
198 | "urlMain": "https://atcoder.jp/",
199 | "username_claimed": "ksun48"
200 | },
201 | "Audiojungle": {
202 | "errorType": "status_code",
203 | "regexCheck": "^[a-zA-Z0-9_]+$",
204 | "url": "https://audiojungle.net/user/{}",
205 | "urlMain": "https://audiojungle.net/",
206 | "username_claimed": "blue"
207 | },
208 | "Autofrage": {
209 | "errorType": "status_code",
210 | "url": "https://www.autofrage.net/nutzer/{}",
211 | "urlMain": "https://www.autofrage.net/",
212 | "username_claimed": "autofrage"
213 | },
214 | "Avizo": {
215 | "errorType": "response_url",
216 | "errorUrl": "https://www.avizo.cz/",
217 | "url": "https://www.avizo.cz/{}/",
218 | "urlMain": "https://www.avizo.cz/",
219 | "username_claimed": "blue"
220 | },
221 | "BLIP.fm": {
222 | "errorType": "status_code",
223 | "regexCheck": "^[a-zA-Z0-9_]{1,30}$",
224 | "url": "https://blip.fm/{}",
225 | "urlMain": "https://blip.fm/",
226 | "username_claimed": "blue"
227 | },
228 | "BOOTH": {
229 | "errorType": "response_url",
230 | "errorUrl": "https://booth.pm/",
231 | "regexCheck": "^[\\w@-]+?$",
232 | "url": "https://{}.booth.pm/",
233 | "urlMain": "https://booth.pm/",
234 | "username_claimed": "blue"
235 | },
236 | "Bandcamp": {
237 | "errorType": "status_code",
238 | "url": "https://www.bandcamp.com/{}",
239 | "urlMain": "https://www.bandcamp.com/",
240 | "username_claimed": "blue"
241 | },
242 | "Bazar.cz": {
243 | "errorType": "response_url",
244 | "errorUrl": "https://www.bazar.cz/error404.aspx",
245 | "url": "https://www.bazar.cz/{}/",
246 | "urlMain": "https://www.bazar.cz/",
247 | "username_claimed": "pianina"
248 | },
249 | "Behance": {
250 | "errorType": "status_code",
251 | "url": "https://www.behance.net/{}",
252 | "urlMain": "https://www.behance.net/",
253 | "username_claimed": "blue"
254 | },
255 | "Bezuzyteczna": {
256 | "errorType": "status_code",
257 | "url": "https://bezuzyteczna.pl/uzytkownicy/{}",
258 | "urlMain": "https://bezuzyteczna.pl",
259 | "username_claimed": "Jackson"
260 | },
261 | "BiggerPockets": {
262 | "errorType": "status_code",
263 | "url": "https://www.biggerpockets.com/users/{}",
264 | "urlMain": "https://www.biggerpockets.com/",
265 | "username_claimed": "blue"
266 | },
267 | "BioHacking": {
268 | "errorType": "status_code",
269 | "url": "https://forum.dangerousthings.com/u/{}",
270 | "urlMain": "https://forum.dangerousthings.com/",
271 | "username_claimed": "blue"
272 | },
273 | "BitBucket": {
274 | "errorType": "status_code",
275 | "regexCheck": "^[a-zA-Z0-9-_]{1,30}$",
276 | "url": "https://bitbucket.org/{}/",
277 | "urlMain": "https://bitbucket.org/",
278 | "username_claimed": "white"
279 | },
280 | "Bitwarden Forum": {
281 | "errorType": "status_code",
282 | "regexCheck": "^(?![.-])[a-zA-Z0-9_.-]{3,20}$",
283 | "url": "https://community.bitwarden.com/u/{}/summary",
284 | "urlMain": "https://bitwarden.com/",
285 | "username_claimed": "blue"
286 | },
287 | "Blipfoto": {
288 | "errorType": "status_code",
289 | "url": "https://www.blipfoto.com/{}",
290 | "urlMain": "https://www.blipfoto.com/",
291 | "username_claimed": "blue"
292 | },
293 | "Blogger": {
294 | "errorType": "status_code",
295 | "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
296 | "url": "https://{}.blogspot.com",
297 | "urlMain": "https://www.blogger.com/",
298 | "username_claimed": "blue"
299 | },
300 | "BoardGameGeek": {
301 | "errorType": "message",
302 | "regexCheck": "^[a-zA-Z0-9_]*$",
303 | "errorMsg": "User not found",
304 | "url": "https://boardgamegeek.com/user/{}",
305 | "urlMain": "https://boardgamegeek.com",
306 | "username_claimed": "blue"
307 | },
308 | "BongaCams": {
309 | "errorType": "status_code",
310 | "isNSFW": true,
311 | "url": "https://pt.bongacams.com/profile/{}",
312 | "urlMain": "https://pt.bongacams.com",
313 | "username_claimed": "asuna-black"
314 | },
315 | "Bookcrossing": {
316 | "errorType": "status_code",
317 | "url": "https://www.bookcrossing.com/mybookshelf/{}/",
318 | "urlMain": "https://www.bookcrossing.com/",
319 | "username_claimed": "blue"
320 | },
321 | "BraveCommunity": {
322 | "errorType": "status_code",
323 | "url": "https://community.brave.com/u/{}/",
324 | "urlMain": "https://community.brave.com/",
325 | "username_claimed": "blue"
326 | },
327 | "BugCrowd": {
328 | "errorType": "status_code",
329 | "url": "https://bugcrowd.com/{}",
330 | "urlMain": "https://bugcrowd.com/",
331 | "username_claimed": "ppfeister"
332 | },
333 | "BuyMeACoffee": {
334 | "errorType": "status_code",
335 | "regexCheck": "[a-zA-Z0-9]{3,15}",
336 | "url": "https://buymeacoff.ee/{}",
337 | "urlMain": "https://www.buymeacoffee.com/",
338 | "urlProbe": "https://www.buymeacoffee.com/{}",
339 | "username_claimed": "red"
340 | },
341 | "BuzzFeed": {
342 | "errorType": "status_code",
343 | "url": "https://buzzfeed.com/{}",
344 | "urlMain": "https://buzzfeed.com/",
345 | "username_claimed": "blue"
346 | },
347 | "CGTrader": {
348 | "errorType": "status_code",
349 | "regexCheck": "^[^.]*?$",
350 | "url": "https://www.cgtrader.com/{}",
351 | "urlMain": "https://www.cgtrader.com",
352 | "username_claimed": "blue"
353 | },
354 | "CNET": {
355 | "errorType": "status_code",
356 | "regexCheck": "^[a-z].*$",
357 | "url": "https://www.cnet.com/profiles/{}/",
358 | "urlMain": "https://www.cnet.com/",
359 | "username_claimed": "melliott"
360 | },
361 | "CSSBattle": {
362 | "errorType": "status_code",
363 | "url": "https://cssbattle.dev/player/{}",
364 | "urlMain": "https://cssbattle.dev",
365 | "username_claimed": "beo"
366 | },
367 | "CTAN": {
368 | "errorType": "status_code",
369 | "url": "https://ctan.org/author/{}",
370 | "urlMain": "https://ctan.org/",
371 | "username_claimed": "briggs"
372 | },
373 | "Caddy Community": {
374 | "errorType": "status_code",
375 | "url": "https://caddy.community/u/{}/summary",
376 | "urlMain": "https://caddy.community/",
377 | "username_claimed": "taako_magnusen"
378 | },
379 | "Car Talk Community": {
380 | "errorType": "status_code",
381 | "url": "https://community.cartalk.com/u/{}/summary",
382 | "urlMain": "https://community.cartalk.com/",
383 | "username_claimed": "always_fixing"
384 | },
385 | "Carbonmade": {
386 | "errorType": "response_url",
387 | "errorUrl": "https://carbonmade.com/fourohfour?domain={}.carbonmade.com",
388 | "regexCheck": "^[\\w@-]+?$",
389 | "url": "https://{}.carbonmade.com",
390 | "urlMain": "https://carbonmade.com/",
391 | "username_claimed": "jenny"
392 | },
393 | "Career.habr": {
394 | "errorMsg": "\u041e\u0448\u0438\u0431\u043a\u0430 404 ",
395 | "errorType": "message",
396 | "url": "https://career.habr.com/{}",
397 | "urlMain": "https://career.habr.com/",
398 | "username_claimed": "blue"
399 | },
400 | "Championat": {
401 | "errorType": "status_code",
402 | "url": "https://www.championat.com/user/{}",
403 | "urlMain": "https://www.championat.com/",
404 | "username_claimed": "blue"
405 | },
406 | "Chaos": {
407 | "errorType": "status_code",
408 | "url": "https://chaos.social/@{}",
409 | "urlMain": "https://chaos.social/",
410 | "username_claimed": "ordnung"
411 | },
412 | "Chatujme.cz": {
413 | "errorMsg": "Neexistujic\u00ed profil",
414 | "errorType": "message",
415 | "regexCheck": "^[a-zA-Z][a-zA-Z1-9_-]*$",
416 | "url": "https://profil.chatujme.cz/{}",
417 | "urlMain": "https://chatujme.cz/",
418 | "username_claimed": "david"
419 | },
420 | "ChaturBate": {
421 | "errorType": "status_code",
422 | "isNSFW": true,
423 | "url": "https://chaturbate.com/{}",
424 | "urlMain": "https://chaturbate.com",
425 | "username_claimed": "cute18cute"
426 | },
427 | "Chess": {
428 | "errorMsg": "Username is valid",
429 | "errorType": "message",
430 | "regexCheck": "^[a-z1-9]{3,25}$",
431 | "url": "https://www.chess.com/member/{}",
432 | "urlMain": "https://www.chess.com/",
433 | "urlProbe": "https://www.chess.com/callback/user/valid?username={}",
434 | "username_claimed": "blue"
435 | },
436 | "Choice Community": {
437 | "errorType": "status_code",
438 | "url": "https://choice.community/u/{}/summary",
439 | "urlMain": "https://choice.community/",
440 | "username_claimed": "gordon"
441 | },
442 | "Clapper": {
443 | "errorType": "status_code",
444 | "url": "https://clapperapp.com/{}",
445 | "urlMain": "https://clapperapp.com/",
446 | "username_claimed": "blue"
447 | },
448 | "CloudflareCommunity": {
449 | "errorType": "status_code",
450 | "url": "https://community.cloudflare.com/u/{}",
451 | "urlMain": "https://community.cloudflare.com/",
452 | "username_claimed": "blue"
453 | },
454 | "Clozemaster": {
455 | "errorMsg": "Oh no! Player not found.",
456 | "errorType": "message",
457 | "url": "https://www.clozemaster.com/players/{}",
458 | "urlMain": "https://www.clozemaster.com",
459 | "username_claimed": "green"
460 | },
461 | "Clubhouse": {
462 | "errorType": "status_code",
463 | "url": "https://www.clubhouse.com/@{}",
464 | "urlMain": "https://www.clubhouse.com",
465 | "username_claimed": "waniathar"
466 | },
467 | "Code Snippet Wiki": {
468 | "errorMsg": "This user has not filled out their profile page yet",
469 | "errorType": "message",
470 | "url": "https://codesnippets.fandom.com/wiki/User:{}",
471 | "urlMain": "https://codesnippets.fandom.com",
472 | "username_claimed": "bob"
473 | },
474 | "Codeberg": {
475 | "errorType": "status_code",
476 | "url": "https://codeberg.org/{}",
477 | "urlMain": "https://codeberg.org/",
478 | "username_claimed": "blue"
479 | },
480 | "Codecademy": {
481 | "errorMsg": "This profile could not be found",
482 | "errorType": "message",
483 | "url": "https://www.codecademy.com/profiles/{}",
484 | "urlMain": "https://www.codecademy.com/",
485 | "username_claimed": "blue"
486 | },
487 | "Codechef": {
488 | "errorType": "response_url",
489 | "errorUrl": "https://www.codechef.com/",
490 | "url": "https://www.codechef.com/users/{}",
491 | "urlMain": "https://www.codechef.com/",
492 | "username_claimed": "blue"
493 | },
494 | "Codeforces": {
495 | "errorType": "status_code",
496 | "url": "https://codeforces.com/profile/{}",
497 | "urlMain": "https://codeforces.com/",
498 | "urlProbe": "https://codeforces.com/api/user.info?handles={}",
499 | "username_claimed": "tourist"
500 | },
501 | "Codepen": {
502 | "errorType": "status_code",
503 | "url": "https://codepen.io/{}",
504 | "urlMain": "https://codepen.io/",
505 | "username_claimed": "blue"
506 | },
507 | "Coders Rank": {
508 | "errorMsg": "not a registered member",
509 | "errorType": "message",
510 | "regexCheck": "^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$",
511 | "url": "https://profile.codersrank.io/user/{}/",
512 | "urlMain": "https://codersrank.io/",
513 | "username_claimed": "rootkit7628"
514 | },
515 | "Coderwall": {
516 | "errorType": "status_code",
517 | "url": "https://coderwall.com/{}",
518 | "urlMain": "https://coderwall.com",
519 | "username_claimed": "hacker"
520 | },
521 | "Codewars": {
522 | "errorType": "status_code",
523 | "url": "https://www.codewars.com/users/{}",
524 | "urlMain": "https://www.codewars.com",
525 | "username_claimed": "example"
526 | },
527 | "Coinvote": {
528 | "errorType": "status_code",
529 | "url": "https://coinvote.cc/profile/{}",
530 | "urlMain": "https://coinvote.cc/",
531 | "username_claimed": "blue"
532 | },
533 | "ColourLovers": {
534 | "errorType": "status_code",
535 | "url": "https://www.colourlovers.com/lover/{}",
536 | "urlMain": "https://www.colourlovers.com/",
537 | "username_claimed": "blue"
538 | },
539 | "Contently": {
540 | "errorType": "response_url",
541 | "errorUrl": "https://contently.com",
542 | "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
543 | "url": "https://{}.contently.com/",
544 | "urlMain": "https://contently.com/",
545 | "username_claimed": "jordanteicher"
546 | },
547 | "Coroflot": {
548 | "errorType": "status_code",
549 | "url": "https://www.coroflot.com/{}",
550 | "urlMain": "https://coroflot.com/",
551 | "username_claimed": "blue"
552 | },
553 | "Cracked": {
554 | "errorType": "response_url",
555 | "errorUrl": "https://www.cracked.com/",
556 | "url": "https://www.cracked.com/members/{}/",
557 | "urlMain": "https://www.cracked.com/",
558 | "username_claimed": "blue"
559 | },
560 | "Crevado": {
561 | "errorType": "status_code",
562 | "regexCheck": "^[\\w@-]+?$",
563 | "url": "https://{}.crevado.com",
564 | "urlMain": "https://crevado.com/",
565 | "username_claimed": "blue"
566 | },
567 | "Crowdin": {
568 | "errorType": "status_code",
569 | "regexCheck": "^[a-zA-Z0-9._-]{2,255}$",
570 | "url": "https://crowdin.com/profile/{}",
571 | "urlMain": "https://crowdin.com/",
572 | "username_claimed": "blue"
573 | },
574 | "Cryptomator Forum": {
575 | "errorType": "status_code",
576 | "url": "https://community.cryptomator.org/u/{}",
577 | "urlMain": "https://community.cryptomator.org/",
578 | "username_claimed": "michael"
579 | },
580 | "Cults3D": {
581 | "errorMsg": "Oh dear, this page is not working!",
582 | "errorType": "message",
583 | "url": "https://cults3d.com/en/users/{}/creations",
584 | "urlMain": "https://cults3d.com/en",
585 | "username_claimed": "brown"
586 | },
587 | "CyberDefenders": {
588 | "errorMsg": "Blue Team Training for SOC analysts and DFIR - CyberDefenders ",
589 | "errorType": "message",
590 | "regexCheck": "^[^\\/:*?\"<>|@]{3,50}$",
591 | "request_method": "GET",
592 | "url": "https://cyberdefenders.org/p/{}",
593 | "urlMain": "https://cyberdefenders.org/",
594 | "username_claimed": "mlohn"
595 | },
596 | "DEV Community": {
597 | "errorType": "status_code",
598 | "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
599 | "url": "https://dev.to/{}",
600 | "urlMain": "https://dev.to/",
601 | "username_claimed": "blue"
602 | },
603 | "DMOJ": {
604 | "errorMsg": "No such user",
605 | "errorType": "message",
606 | "url": "https://dmoj.ca/user/{}",
607 | "urlMain": "https://dmoj.ca/",
608 | "username_claimed": "junferno"
609 | },
610 | "DailyMotion": {
611 | "errorType": "status_code",
612 | "url": "https://www.dailymotion.com/{}",
613 | "urlMain": "https://www.dailymotion.com/",
614 | "username_claimed": "blue"
615 | },
616 | "Dealabs": {
617 | "errorMsg": "La page que vous essayez",
618 | "errorType": "message",
619 | "regexCheck": "[a-z0-9]{4,16}",
620 | "url": "https://www.dealabs.com/profile/{}",
621 | "urlMain": "https://www.dealabs.com/",
622 | "username_claimed": "blue"
623 | },
624 | "DeviantART": {
625 | "errorType": "status_code",
626 | "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
627 | "url": "https://{}.deviantart.com",
628 | "urlMain": "https://deviantart.com",
629 | "username_claimed": "blue"
630 | },
631 | "Discogs": {
632 | "errorType": "status_code",
633 | "url": "https://www.discogs.com/user/{}",
634 | "urlMain": "https://www.discogs.com/",
635 | "username_claimed": "blue"
636 | },
637 | "Discord": {
638 | "errorType": "message",
639 | "url": "https://discord.com",
640 | "urlMain": "https://discord.com/",
641 | "urlProbe": "https://discord.com/api/v9/unique-username/username-attempt-unauthed",
642 | "errorMsg": [
643 | "{\"taken\":false}",
644 | "The resource is being rate limited"
645 | ],
646 | "request_method": "POST",
647 | "request_payload": {
648 | "username": "{}"
649 | },
650 | "headers": {
651 | "Content-Type": "application/json"
652 | },
653 | "username_claimed": "blue"
654 | },
655 | "Discuss.Elastic.co": {
656 | "errorType": "status_code",
657 | "url": "https://discuss.elastic.co/u/{}",
658 | "urlMain": "https://discuss.elastic.co/",
659 | "username_claimed": "blue"
660 | },
661 | "Disqus": {
662 | "errorType": "status_code",
663 | "url": "https://disqus.com/{}",
664 | "urlMain": "https://disqus.com/",
665 | "username_claimed": "blue"
666 | },
667 | "Docker Hub": {
668 | "errorType": "status_code",
669 | "url": "https://hub.docker.com/u/{}/",
670 | "urlMain": "https://hub.docker.com/",
671 | "urlProbe": "https://hub.docker.com/v2/users/{}/",
672 | "username_claimed": "blue"
673 | },
674 | "Dribbble": {
675 | "errorMsg": "Whoops, that page is gone.",
676 | "errorType": "message",
677 | "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
678 | "url": "https://dribbble.com/{}",
679 | "urlMain": "https://dribbble.com/",
680 | "username_claimed": "blue"
681 | },
682 | "Duolingo": {
683 | "errorMsg": "{\"users\":[]}",
684 | "errorType": "message",
685 |
686 | "url": "https://www.duolingo.com/profile/{}",
687 | "urlMain": "https://duolingo.com/",
688 | "urlProbe": "https://www.duolingo.com/2017-06-30/users?username={}",
689 | "username_claimed": "blue"
690 | },
691 | "Eintracht Frankfurt Forum": {
692 | "errorType": "status_code",
693 | "regexCheck": "^[^.]*?$",
694 | "url": "https://community.eintracht.de/fans/{}",
695 | "urlMain": "https://community.eintracht.de/",
696 | "username_claimed": "mmammu"
697 | },
698 | "Empretienda AR": {
699 | "errorType": "status_code",
700 | "url": "https://{}.empretienda.com.ar",
701 | "urlMain": "https://empretienda.com",
702 | "username_claimed": "camalote"
703 | },
704 | "Envato Forum": {
705 | "errorType": "status_code",
706 | "url": "https://forums.envato.com/u/{}",
707 | "urlMain": "https://forums.envato.com/",
708 | "username_claimed": "enabled"
709 | },
710 | "Erome": {
711 | "errorType": "status_code",
712 | "isNSFW": true,
713 | "url": "https://www.erome.com/{}",
714 | "urlMain": "https://www.erome.com/",
715 | "username_claimed": "bob"
716 | },
717 | "Exposure": {
718 | "errorType": "status_code",
719 | "regexCheck": "^[a-zA-Z0-9-]{1,63}$",
720 | "url": "https://{}.exposure.co/",
721 | "urlMain": "https://exposure.co/",
722 | "username_claimed": "jonasjacobsson"
723 | },
724 | "exophase": {
725 | "errorType": "status_code",
726 | "url": "https://www.exophase.com/user/{}/",
727 | "urlMain": "https://www.exophase.com/",
728 | "username_claimed": "blue"
729 | },
730 | "EyeEm": {
731 | "errorType": "status_code",
732 | "url": "https://www.eyeem.com/u/{}",
733 | "urlMain": "https://www.eyeem.com/",
734 | "username_claimed": "blue"
735 | },
736 | "F3.cool": {
737 | "errorType": "status_code",
738 | "url": "https://f3.cool/{}/",
739 | "urlMain": "https://f3.cool/",
740 | "username_claimed": "blue"
741 | },
742 | "Fameswap": {
743 | "errorType": "status_code",
744 | "url": "https://fameswap.com/user/{}",
745 | "urlMain": "https://fameswap.com/",
746 | "username_claimed": "fameswap"
747 | },
748 | "Fandom": {
749 | "errorType": "status_code",
750 | "url": "https://www.fandom.com/u/{}",
751 | "urlMain": "https://www.fandom.com/",
752 | "username_claimed": "Jungypoo"
753 | },
754 | "Fanpop": {
755 | "errorType": "response_url",
756 | "errorUrl": "https://www.fanpop.com/",
757 | "url": "https://www.fanpop.com/fans/{}",
758 | "urlMain": "https://www.fanpop.com/",
759 | "username_claimed": "blue"
760 | },
761 | "Finanzfrage": {
762 | "errorType": "status_code",
763 | "url": "https://www.finanzfrage.net/nutzer/{}",
764 | "urlMain": "https://www.finanzfrage.net/",
765 | "username_claimed": "finanzfrage"
766 | },
767 | "Fiverr": {
768 | "errorMsg": "\"status\":\"success\"",
769 | "errorType": "message",
770 | "headers": {
771 | "Content-Type": "application/json",
772 | "Accept-Language": "en-US,en;q=0.9"
773 | },
774 | "regexCheck": "^[A-Za-z][A-Za-z\\d_]{5,14}$",
775 | "request_method": "POST",
776 | "request_payload": {
777 | "username": "{}"
778 | },
779 | "url": "https://www.fiverr.com/{}",
780 | "urlMain": "https://www.fiverr.com/",
781 | "urlProbe": "https://www.fiverr.com/validate_username",
782 | "username_claimed": "blueman"
783 | },
784 | "Flickr": {
785 | "errorType": "status_code",
786 | "url": "https://www.flickr.com/people/{}",
787 | "urlMain": "https://www.flickr.com/",
788 | "username_claimed": "blue"
789 | },
790 | "Flightradar24": {
791 | "errorType": "status_code",
792 | "regexCheck": "^[a-zA-Z0-9_]{3,20}$",
793 | "url": "https://my.flightradar24.com/{}",
794 | "urlMain": "https://www.flightradar24.com/",
795 | "username_claimed": "jebbrooks"
796 | },
797 | "Flipboard": {
798 | "errorType": "status_code",
799 | "regexCheck": "^([a-zA-Z0-9_]){1,15}$",
800 | "url": "https://flipboard.com/@{}",
801 | "urlMain": "https://flipboard.com/",
802 | "username_claimed": "blue"
803 | },
804 | "Football": {
805 | "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441 \u0442\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
806 | "errorType": "message",
807 | "url": "https://www.rusfootball.info/user/{}/",
808 | "urlMain": "https://www.rusfootball.info/",
809 | "username_claimed": "solo87"
810 | },
811 | "FortniteTracker": {
812 | "errorType": "status_code",
813 | "url": "https://fortnitetracker.com/profile/all/{}",
814 | "urlMain": "https://fortnitetracker.com/challenges",
815 | "username_claimed": "blue"
816 | },
817 | "Forum Ophilia": {
818 | "errorMsg": "that user does not exist",
819 | "errorType": "message",
820 | "isNSFW": true,
821 | "url": "https://www.forumophilia.com/profile.php?mode=viewprofile&u={}",
822 | "urlMain": "https://www.forumophilia.com/",
823 | "username_claimed": "bob"
824 | },
825 | "Fosstodon": {
826 | "errorType": "status_code",
827 | "regexCheck": "^[a-zA-Z0-9_]{1,30}$",
828 | "url": "https://fosstodon.org/@{}",
829 | "urlMain": "https://fosstodon.org/",
830 | "username_claimed": "blue"
831 | },
832 | "Freelance.habr": {
833 | "errorMsg": "
",
834 | "errorType": "message",
835 | "regexCheck": "^((?!\\.).)*$",
836 | "url": "https://freelance.habr.com/freelancers/{}",
837 | "urlMain": "https://freelance.habr.com/",
838 | "username_claimed": "adam"
839 | },
840 | "Freelancer": {
841 | "errorMsg": "\"users\":{}",
842 | "errorType": "message",
843 | "url": "https://www.freelancer.com/u/{}",
844 | "urlMain": "https://www.freelancer.com/",
845 | "urlProbe": "https://www.freelancer.com/api/users/0.1/users?usernames%5B%5D={}&compact=true",
846 | "username_claimed": "red0xff"
847 | },
848 | "Freesound": {
849 | "errorType": "status_code",
850 | "url": "https://freesound.org/people/{}/",
851 | "urlMain": "https://freesound.org/",
852 | "username_claimed": "blue"
853 | },
854 | "GNOME VCS": {
855 | "errorType": "response_url",
856 | "errorUrl": "https://gitlab.gnome.org/{}",
857 | "regexCheck": "^(?!-)[a-zA-Z0-9_.-]{2,255}(?ItemFix - Channel: ",
1197 | "errorType": "message",
1198 | "url": "https://www.itemfix.com/c/{}",
1199 | "urlMain": "https://www.itemfix.com/",
1200 | "username_claimed": "blue"
1201 | },
1202 | "Jellyfin Weblate": {
1203 | "errorType": "status_code",
1204 | "regexCheck": "^[a-zA-Z0-9@._-]{1,150}$",
1205 | "url": "https://translate.jellyfin.org/user/{}/",
1206 | "urlMain": "https://translate.jellyfin.org/",
1207 | "username_claimed": "EraYaN"
1208 | },
1209 | "Jimdo": {
1210 | "errorType": "status_code",
1211 | "regexCheck": "^[\\w@-]+?$",
1212 | "url": "https://{}.jimdosite.com",
1213 | "urlMain": "https://jimdosite.com/",
1214 | "username_claimed": "jenny"
1215 | },
1216 | "Joplin Forum": {
1217 | "errorType": "status_code",
1218 | "url": "https://discourse.joplinapp.org/u/{}",
1219 | "urlMain": "https://discourse.joplinapp.org/",
1220 | "username_claimed": "laurent"
1221 | },
1222 | "KEAKR": {
1223 | "errorType": "status_code",
1224 | "url": "https://www.keakr.com/en/profile/{}",
1225 | "urlMain": "https://www.keakr.com/",
1226 | "username_claimed": "beats"
1227 | },
1228 | "Kaggle": {
1229 | "errorType": "status_code",
1230 | "url": "https://www.kaggle.com/{}",
1231 | "urlMain": "https://www.kaggle.com/",
1232 | "username_claimed": "dansbecker"
1233 | },
1234 | "kaskus": {
1235 | "errorType": "status_code",
1236 | "url": "https://www.kaskus.co.id/@{}",
1237 | "urlMain": "https://www.kaskus.co.id/",
1238 | "username_claimed": "l0mbart"
1239 | },
1240 | "Keybase": {
1241 | "errorType": "status_code",
1242 | "url": "https://keybase.io/{}",
1243 | "urlMain": "https://keybase.io/",
1244 | "username_claimed": "blue"
1245 | },
1246 | "Kick": {
1247 | "__comment__": "Cloudflare. Only viable when proxied.",
1248 | "errorType": "status_code",
1249 | "url": "https://kick.com/{}",
1250 | "urlMain": "https://kick.com/",
1251 | "urlProbe": "https://kick.com/api/v2/channels/{}",
1252 | "username_claimed": "blue"
1253 | },
1254 | "Kik": {
1255 | "errorMsg": "The page you requested was not found",
1256 | "errorType": "message",
1257 | "url": "https://kik.me/{}",
1258 | "urlMain": "http://kik.me/",
1259 | "urlProbe": "https://ws2.kik.com/user/{}",
1260 | "username_claimed": "blue"
1261 | },
1262 | "Kongregate": {
1263 | "errorType": "status_code",
1264 | "headers": {
1265 | "Accept": "text/html"
1266 | },
1267 | "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
1268 | "url": "https://www.kongregate.com/accounts/{}",
1269 | "urlMain": "https://www.kongregate.com/",
1270 | "username_claimed": "blue"
1271 | },
1272 | "LOR": {
1273 | "errorType": "status_code",
1274 | "url": "https://www.linux.org.ru/people/{}/profile",
1275 | "urlMain": "https://linux.org.ru/",
1276 | "username_claimed": "red"
1277 | },
1278 | "Launchpad": {
1279 | "errorType": "status_code",
1280 | "url": "https://launchpad.net/~{}",
1281 | "urlMain": "https://launchpad.net/",
1282 | "username_claimed": "blue"
1283 | },
1284 | "LeetCode": {
1285 | "errorType": "status_code",
1286 | "url": "https://leetcode.com/{}",
1287 | "urlMain": "https://leetcode.com/",
1288 | "username_claimed": "blue"
1289 | },
1290 | "LessWrong": {
1291 | "errorType": "status_code",
1292 | "url": "https://www.lesswrong.com/users/@{}",
1293 | "urlMain": "https://www.lesswrong.com/",
1294 | "username_claimed": "blue"
1295 | },
1296 | "Letterboxd": {
1297 | "errorMsg": "Sorry, we can\u2019t find the page you\u2019ve requested.",
1298 | "errorType": "message",
1299 | "url": "https://letterboxd.com/{}",
1300 | "urlMain": "https://letterboxd.com/",
1301 | "username_claimed": "blue"
1302 | },
1303 | "LibraryThing": {
1304 | "errorMsg": "Error: This user doesn't exist
",
1305 | "errorType": "message",
1306 | "headers": {
1307 | "Cookie": "LTAnonSessionID=3159599315; LTUnifiedCookie=%7B%22areyouhuman%22%3A1%7D; "
1308 | },
1309 | "url": "https://www.librarything.com/profile/{}",
1310 | "urlMain": "https://www.librarything.com/",
1311 | "username_claimed": "blue"
1312 | },
1313 | "Lichess": {
1314 | "errorType": "status_code",
1315 | "url": "https://lichess.org/@/{}",
1316 | "urlMain": "https://lichess.org",
1317 | "username_claimed": "john"
1318 | },
1319 | "LinkedIn": {
1320 | "errorType": "status_code",
1321 |
1322 | "regexCheck": "^[a-zA-Z0-9]{3,100}$",
1323 | "request_method": "GET",
1324 | "url": "https://linkedin.com/in/{}",
1325 | "urlMain": "https://linkedin.com",
1326 | "username_claimed": "paulpfeister"
1327 | },
1328 | "Linktree": {
1329 | "errorMsg": "\"statusCode\":404",
1330 | "errorType": "message",
1331 | "regexCheck": "^[\\w\\.]{2,30}$",
1332 | "url": "https://linktr.ee/{}",
1333 | "urlMain": "https://linktr.ee/",
1334 | "username_claimed": "anne"
1335 | },
1336 | "Listed": {
1337 | "errorType": "response_url",
1338 | "errorUrl": "https://listed.to/@{}",
1339 | "url": "https://listed.to/@{}",
1340 | "urlMain": "https://listed.to/",
1341 | "username_claimed": "listed"
1342 | },
1343 | "LiveJournal": {
1344 | "errorType": "status_code",
1345 | "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
1346 | "url": "https://{}.livejournal.com",
1347 | "urlMain": "https://www.livejournal.com/",
1348 | "username_claimed": "blue"
1349 | },
1350 | "Lobsters": {
1351 | "errorType": "status_code",
1352 | "regexCheck": "[A-Za-z0-9][A-Za-z0-9_-]{0,24}",
1353 | "url": "https://lobste.rs/u/{}",
1354 | "urlMain": "https://lobste.rs/",
1355 | "username_claimed": "jcs"
1356 | },
1357 | "LottieFiles": {
1358 | "errorType": "status_code",
1359 | "url": "https://lottiefiles.com/{}",
1360 | "urlMain": "https://lottiefiles.com/",
1361 | "username_claimed": "lottiefiles"
1362 | },
1363 | "LushStories": {
1364 | "errorType": "status_code",
1365 | "isNSFW": true,
1366 | "url": "https://www.lushstories.com/profile/{}",
1367 | "urlMain": "https://www.lushstories.com/",
1368 | "username_claimed": "chris_brown"
1369 | },
1370 | "MMORPG Forum": {
1371 | "errorType": "status_code",
1372 | "url": "https://forums.mmorpg.com/profile/{}",
1373 | "urlMain": "https://forums.mmorpg.com/",
1374 | "username_claimed": "goku"
1375 | },
1376 | "Mapify": {
1377 | "errorType": "response_url",
1378 | "errorUrl": "https://mapify.travel/{}",
1379 | "url": "https://mapify.travel/{}",
1380 | "urlMain": "https://mapify.travel/",
1381 | "username_claimed": "mapify"
1382 | },
1383 | "Medium": {
1384 | "errorMsg": "Nitro Type | Competitive Typing Game | Race Your Friends",
1526 | "errorType": "message",
1527 | "url": "https://www.nitrotype.com/racer/{}",
1528 | "urlMain": "https://www.nitrotype.com/",
1529 | "username_claimed": "jianclash"
1530 | },
1531 | "NotABug.org": {
1532 | "errorType": "status_code",
1533 | "url": "https://notabug.org/{}",
1534 | "urlMain": "https://notabug.org/",
1535 | "urlProbe": "https://notabug.org/{}/followers",
1536 | "username_claimed": "red"
1537 | },
1538 | "Nyaa.si": {
1539 | "errorType": "status_code",
1540 | "url": "https://nyaa.si/user/{}",
1541 | "urlMain": "https://nyaa.si/",
1542 | "username_claimed": "blue"
1543 | },
1544 | "OGUsers": {
1545 | "errorType": "status_code",
1546 | "url": "https://ogu.gg/{}",
1547 | "urlMain": "https://ogu.gg/",
1548 | "username_claimed": "ogusers"
1549 | },
1550 | "OpenStreetMap": {
1551 | "errorType": "status_code",
1552 | "regexCheck": "^[^.]*?$",
1553 | "url": "https://www.openstreetmap.org/user/{}",
1554 | "urlMain": "https://www.openstreetmap.org/",
1555 | "username_claimed": "blue"
1556 | },
1557 | "Opensource": {
1558 | "errorType": "status_code",
1559 | "url": "https://opensource.com/users/{}",
1560 | "urlMain": "https://opensource.com/",
1561 | "username_claimed": "red"
1562 | },
1563 | "OurDJTalk": {
1564 | "errorMsg": "The specified member cannot be found",
1565 | "errorType": "message",
1566 | "url": "https://ourdjtalk.com/members?username={}",
1567 | "urlMain": "https://ourdjtalk.com/",
1568 | "username_claimed": "steve"
1569 | },
1570 | "PCGamer": {
1571 | "errorMsg": "The specified member cannot be found. Please enter a member's entire name.",
1572 | "errorType": "message",
1573 | "url": "https://forums.pcgamer.com/members/?username={}",
1574 | "urlMain": "https://pcgamer.com",
1575 | "username_claimed": "admin"
1576 | },
1577 | "PSNProfiles.com": {
1578 | "errorType": "response_url",
1579 | "errorUrl": "https://psnprofiles.com/?psnId={}",
1580 | "url": "https://psnprofiles.com/{}",
1581 | "urlMain": "https://psnprofiles.com/",
1582 | "username_claimed": "blue"
1583 | },
1584 | "Packagist": {
1585 | "errorType": "response_url",
1586 | "errorUrl": "https://packagist.org/search/?q={}&reason=vendor_not_found",
1587 | "url": "https://packagist.org/packages/{}/",
1588 | "urlMain": "https://packagist.org/",
1589 | "username_claimed": "psr"
1590 | },
1591 | "Pastebin": {
1592 | "errorMsg": "Not Found (#404)",
1593 | "errorType": "message",
1594 | "url": "https://pastebin.com/u/{}",
1595 | "urlMain": "https://pastebin.com/",
1596 | "username_claimed": "blue"
1597 | },
1598 | "Patreon": {
1599 | "errorType": "status_code",
1600 | "url": "https://www.patreon.com/{}",
1601 | "urlMain": "https://www.patreon.com/",
1602 | "username_claimed": "blue"
1603 | },
1604 | "PentesterLab": {
1605 | "errorType": "status_code",
1606 | "regexCheck": "^[\\w]{4,30}$",
1607 | "url": "https://pentesterlab.com/profile/{}",
1608 | "urlMain": "https://pentesterlab.com/",
1609 | "username_claimed": "0day"
1610 | },
1611 | "PepperIT": {
1612 | "errorMsg": "La pagina che hai provato a raggiungere non si trova qui",
1613 | "errorType": "message",
1614 | "url": "https://www.pepper.it/profile/{}/overview",
1615 | "urlMain": "https://www.pepper.it",
1616 | "username_claimed": "asoluinostrisca"
1617 | },
1618 | "Periscope": {
1619 | "errorType": "status_code",
1620 | "url": "https://www.periscope.tv/{}/",
1621 | "urlMain": "https://www.periscope.tv/",
1622 | "username_claimed": "blue"
1623 | },
1624 | "Pinkbike": {
1625 | "errorType": "status_code",
1626 | "regexCheck": "^[^.]*?$",
1627 | "url": "https://www.pinkbike.com/u/{}/",
1628 | "urlMain": "https://www.pinkbike.com/",
1629 | "username_claimed": "blue"
1630 | },
1631 | "PlayStore": {
1632 | "errorType": "status_code",
1633 | "url": "https://play.google.com/store/apps/developer?id={}",
1634 | "urlMain": "https://play.google.com/store",
1635 | "username_claimed": "Facebook"
1636 | },
1637 | "PocketStars": {
1638 | "errorMsg": "Join Your Favorite Adult Stars",
1639 | "errorType": "message",
1640 | "isNSFW": true,
1641 | "url": "https://pocketstars.com/{}",
1642 | "urlMain": "https://pocketstars.com/",
1643 | "username_claimed": "hacker"
1644 | },
1645 | "Pokemon Showdown": {
1646 | "errorType": "status_code",
1647 | "url": "https://pokemonshowdown.com/users/{}",
1648 | "urlMain": "https://pokemonshowdown.com",
1649 | "username_claimed": "blue"
1650 | },
1651 | "Polarsteps": {
1652 | "errorType": "status_code",
1653 | "url": "https://polarsteps.com/{}",
1654 | "urlMain": "https://polarsteps.com/",
1655 | "urlProbe": "https://api.polarsteps.com/users/byusername/{}",
1656 | "username_claimed": "james"
1657 | },
1658 | "Polygon": {
1659 | "errorType": "status_code",
1660 | "url": "https://www.polygon.com/users/{}",
1661 | "urlMain": "https://www.polygon.com/",
1662 | "username_claimed": "swiftstickler"
1663 | },
1664 | "Polymart": {
1665 | "errorType": "response_url",
1666 | "errorUrl": "https://polymart.org/user/-1",
1667 | "url": "https://polymart.org/user/{}",
1668 | "urlMain": "https://polymart.org/",
1669 | "username_claimed": "craciu25yt"
1670 | },
1671 | "Pornhub": {
1672 | "errorType": "status_code",
1673 | "isNSFW": true,
1674 | "url": "https://pornhub.com/users/{}",
1675 | "urlMain": "https://pornhub.com/",
1676 | "username_claimed": "blue"
1677 | },
1678 | "ProductHunt": {
1679 | "errorMsg": "We seem to have lost this page",
1680 | "errorType": "message",
1681 | "url": "https://www.producthunt.com/@{}",
1682 | "urlMain": "https://www.producthunt.com/",
1683 | "username_claimed": "jenny"
1684 | },
1685 | "PromoDJ": {
1686 | "errorType": "status_code",
1687 | "url": "http://promodj.com/{}",
1688 | "urlMain": "http://promodj.com/",
1689 | "username_claimed": "blue"
1690 | },
1691 | "PyPi": {
1692 | "errorType": "status_code",
1693 | "url": "https://pypi.org/user/{}",
1694 | "urlMain": "https://pypi.org",
1695 | "username_claimed": "Blue"
1696 | },
1697 | "Rajce.net": {
1698 | "errorType": "status_code",
1699 | "regexCheck": "^[\\w@-]+?$",
1700 | "url": "https://{}.rajce.idnes.cz/",
1701 | "urlMain": "https://www.rajce.idnes.cz/",
1702 | "username_claimed": "blue"
1703 | },
1704 | "Rarible": {
1705 | "errorType": "status_code",
1706 | "url": "https://rarible.com/marketplace/api/v4/urls/{}",
1707 | "urlMain": "https://rarible.com/",
1708 | "username_claimed": "blue"
1709 | },
1710 | "Rate Your Music": {
1711 | "errorType": "status_code",
1712 | "url": "https://rateyourmusic.com/~{}",
1713 | "urlMain": "https://rateyourmusic.com/",
1714 | "username_claimed": "blue"
1715 | },
1716 | "Rclone Forum": {
1717 | "errorType": "status_code",
1718 | "url": "https://forum.rclone.org/u/{}",
1719 | "urlMain": "https://forum.rclone.org/",
1720 | "username_claimed": "ncw"
1721 | },
1722 | "RedTube": {
1723 | "errorType": "status_code",
1724 | "isNSFW": true,
1725 | "url": "https://www.redtube.com/users/{}",
1726 | "urlMain": "https://www.redtube.com/",
1727 | "username_claimed": "hacker"
1728 | },
1729 | "Redbubble": {
1730 | "errorType": "status_code",
1731 | "url": "https://www.redbubble.com/people/{}",
1732 | "urlMain": "https://www.redbubble.com/",
1733 | "username_claimed": "blue"
1734 | },
1735 | "Reddit": {
1736 | "errorMsg": "Sorry, nobody on Reddit goes by that name.",
1737 | "errorType": "message",
1738 | "headers": {
1739 | "accept-language": "en-US,en;q=0.9"
1740 | },
1741 | "url": "https://www.reddit.com/user/{}",
1742 | "urlMain": "https://www.reddit.com/",
1743 | "username_claimed": "blue"
1744 | },
1745 | "Reisefrage": {
1746 | "errorType": "status_code",
1747 | "url": "https://www.reisefrage.net/nutzer/{}",
1748 | "urlMain": "https://www.reisefrage.net/",
1749 | "username_claimed": "reisefrage"
1750 | },
1751 | "Replit.com": {
1752 | "errorType": "status_code",
1753 | "url": "https://replit.com/@{}",
1754 | "urlMain": "https://replit.com/",
1755 | "username_claimed": "blue"
1756 | },
1757 | "ResearchGate": {
1758 | "errorType": "response_url",
1759 | "errorUrl": "https://www.researchgate.net/directory/profiles",
1760 | "regexCheck": "\\w+_\\w+",
1761 | "url": "https://www.researchgate.net/profile/{}",
1762 | "urlMain": "https://www.researchgate.net/",
1763 | "username_claimed": "John_Smith"
1764 | },
1765 | "ReverbNation": {
1766 | "errorMsg": "Sorry, we couldn't find that page",
1767 | "errorType": "message",
1768 | "url": "https://www.reverbnation.com/{}",
1769 | "urlMain": "https://www.reverbnation.com/",
1770 | "username_claimed": "blue"
1771 | },
1772 | "Roblox": {
1773 | "errorMsg": "Page cannot be found or no longer exists",
1774 | "errorType": "message",
1775 | "url": "https://www.roblox.com/user.aspx?username={}",
1776 | "urlMain": "https://www.roblox.com/",
1777 | "username_claimed": "bluewolfekiller"
1778 | },
1779 | "RocketTube": {
1780 | "errorMsg": "OOPS! Houston, we have a problem",
1781 | "errorType": "message",
1782 | "isNSFW": true,
1783 | "url": "https://www.rockettube.com/{}",
1784 | "urlMain": "https://www.rockettube.com/",
1785 | "username_claimed": "Tatteddick5600"
1786 | },
1787 | "RoyalCams": {
1788 | "errorType": "status_code",
1789 | "url": "https://royalcams.com/profile/{}",
1790 | "urlMain": "https://royalcams.com",
1791 | "username_claimed": "asuna-black"
1792 | },
1793 | "RubyGems": {
1794 | "errorType": "status_code",
1795 | "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]{1,40}",
1796 | "url": "https://rubygems.org/profiles/{}",
1797 | "urlMain": "https://rubygems.org/",
1798 | "username_claimed": "blue"
1799 | },
1800 | "Rumble": {
1801 | "errorType": "status_code",
1802 | "url": "https://rumble.com/user/{}",
1803 | "urlMain": "https://rumble.com/",
1804 | "username_claimed": "John"
1805 | },
1806 | "RuneScape": {
1807 | "errorMsg": "{\"error\":\"NO_PROFILE\",\"loggedIn\":\"false\"}",
1808 | "errorType": "message",
1809 | "regexCheck": "^(?! )[\\w -]{1,12}(?Telegram Messenger",
2063 | "If you have Telegram , you can contact TGx:Can't show details",
2099 | "errorType": "message",
2100 | "regexCheck": "^[A-Za-z0-9]{3,15}$",
2101 | "url": "https://torrentgalaxy.to/profile/{}",
2102 | "urlMain": "https://torrentgalaxy.to/",
2103 | "username_claimed": "GalaxyRG"
2104 | },
2105 | "TradingView": {
2106 | "errorType": "status_code",
2107 | "request_method": "GET",
2108 | "url": "https://www.tradingview.com/u/{}/",
2109 | "urlMain": "https://www.tradingview.com/",
2110 | "username_claimed": "blue"
2111 | },
2112 | "Trakt": {
2113 | "errorType": "status_code",
2114 | "regexCheck": "^[^.]*$",
2115 | "url": "https://www.trakt.tv/users/{}",
2116 | "urlMain": "https://www.trakt.tv/",
2117 | "username_claimed": "blue"
2118 | },
2119 | "TrashboxRU": {
2120 | "errorType": "status_code",
2121 | "regexCheck": "^[A-Za-z0-9_-]{3,16}$",
2122 | "url": "https://trashbox.ru/users/{}",
2123 | "urlMain": "https://trashbox.ru/",
2124 | "username_claimed": "blue"
2125 | },
2126 | "Trawelling": {
2127 | "errorType": "status_code",
2128 | "url": "https://traewelling.de/@{}",
2129 | "urlMain": "https://traewelling.de/",
2130 | "username_claimed": "lassestolley"
2131 | },
2132 | "Trello": {
2133 | "errorMsg": "model not found",
2134 | "errorType": "message",
2135 | "url": "https://trello.com/{}",
2136 | "urlMain": "https://trello.com/",
2137 | "urlProbe": "https://trello.com/1/Members/{}",
2138 | "username_claimed": "blue"
2139 | },
2140 | "TryHackMe": {
2141 | "errorMsg": "{\"success\":false}",
2142 | "errorType": "message",
2143 | "regexCheck": "^[a-zA-Z0-9.]{1,16}$",
2144 | "url": "https://tryhackme.com/p/{}",
2145 | "urlMain": "https://tryhackme.com/",
2146 | "urlProbe": "https://tryhackme.com/api/user/exist/{}",
2147 | "username_claimed": "ashu"
2148 | },
2149 | "Tuna": {
2150 | "errorType": "status_code",
2151 | "regexCheck": "^[a-z0-9]{4,40}$",
2152 | "url": "https://tuna.voicemod.net/user/{}",
2153 | "urlMain": "https://tuna.voicemod.net/",
2154 | "username_claimed": "bob"
2155 | },
2156 | "Tweakers": {
2157 | "errorType": "status_code",
2158 | "url": "https://tweakers.net/gallery/{}",
2159 | "urlMain": "https://tweakers.net",
2160 | "username_claimed": "femme"
2161 | },
2162 | "Twitch": {
2163 | "errorType": "status_code",
2164 | "url": "https://www.twitch.tv/{}",
2165 | "urlMain": "https://www.twitch.tv/",
2166 | "urlProbe": "https://m.twitch.tv/{}",
2167 | "username_claimed": "jenny"
2168 | },
2169 | "Twitter": {
2170 | "errorMsg": "User ",
2171 | "errorType": "message",
2172 | "regexCheck": "^[a-zA-Z0-9_]{1,15}$",
2173 | "url": "https://x.com/{}",
2174 | "urlMain": "https://x.com/",
2175 | "urlProbe": "https://nitter.privacydev.net/{}",
2176 | "username_claimed": "blue"
2177 | },
2178 | "Typeracer": {
2179 | "errorMsg": "Profile Not Found",
2180 | "errorType": "message",
2181 | "url": "https://data.typeracer.com/pit/profile?user={}",
2182 | "urlMain": "https://typeracer.com",
2183 | "username_claimed": "blue"
2184 | },
2185 | "Ultimate-Guitar": {
2186 | "errorType": "status_code",
2187 | "url": "https://ultimate-guitar.com/u/{}",
2188 | "urlMain": "https://ultimate-guitar.com/",
2189 | "username_claimed": "blue"
2190 | },
2191 | "Unsplash": {
2192 | "errorType": "status_code",
2193 | "regexCheck": "^[a-z0-9_]{1,60}$",
2194 | "url": "https://unsplash.com/@{}",
2195 | "urlMain": "https://unsplash.com/",
2196 | "username_claimed": "jenny"
2197 | },
2198 | "Untappd": {
2199 | "errorType": "status_code",
2200 | "url": "https://untappd.com/user/{}",
2201 | "urlMain": "https://untappd.com/",
2202 | "username_claimed": "untappd"
2203 | },
2204 | "VK": {
2205 | "errorType": "response_url",
2206 | "errorUrl": "https://www.quora.com/profile/{}",
2207 | "url": "https://vk.com/{}",
2208 | "urlMain": "https://vk.com/",
2209 | "username_claimed": "brown"
2210 | },
2211 | "VSCO": {
2212 | "errorType": "status_code",
2213 | "url": "https://vsco.co/{}",
2214 | "urlMain": "https://vsco.co/",
2215 | "username_claimed": "blue"
2216 | },
2217 | "Velog": {
2218 | "errorType": "status_code",
2219 | "url": "https://velog.io/@{}/posts",
2220 | "urlMain": "https://velog.io/",
2221 | "username_claimed": "qlgks1"
2222 | },
2223 | "Velomania": {
2224 | "errorMsg": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430.",
2225 | "errorType": "message",
2226 | "url": "https://forum.velomania.ru/member.php?username={}",
2227 | "urlMain": "https://forum.velomania.ru/",
2228 | "username_claimed": "red"
2229 | },
2230 | "Venmo": {
2231 | "errorMsg": [
2232 | "Venmo | Page Not Found"
2233 | ],
2234 | "errorType": "message",
2235 | "headers": {
2236 | "Host": "account.venmo.com"
2237 | },
2238 | "url": "https://account.venmo.com/u/{}",
2239 | "urlMain": "https://venmo.com/",
2240 | "urlProbe": "https://test1.venmo.com/u/{}",
2241 | "username_claimed": "jenny"
2242 | },
2243 | "Vero": {
2244 | "errorMsg": "Not Found",
2245 | "errorType": "message",
2246 | "request_method": "GET",
2247 | "url": "https://vero.co/{}",
2248 | "urlMain": "https://vero.co/",
2249 | "username_claimed": "blue"
2250 | },
2251 | "Vimeo": {
2252 | "errorType": "status_code",
2253 | "url": "https://vimeo.com/{}",
2254 | "urlMain": "https://vimeo.com/",
2255 | "username_claimed": "blue"
2256 | },
2257 | "VirusTotal": {
2258 | "errorType": "status_code",
2259 | "request_method": "GET",
2260 | "url": "https://www.virustotal.com/gui/user/{}",
2261 | "urlMain": "https://www.virustotal.com/",
2262 | "urlProbe": "https://www.virustotal.com/ui/users/{}/avatar",
2263 | "username_claimed": "blue"
2264 | },
2265 | "VLR": {
2266 | "errorType": "status_code",
2267 | "url": "https://www.vlr.gg/user/{}",
2268 | "urlMain": "https://www.vlr.gg",
2269 | "username_claimed": "optms"
2270 | },
2271 | "WICG Forum": {
2272 | "errorType": "status_code",
2273 | "regexCheck": "^(?![.-])[a-zA-Z0-9_.-]{3,20}$",
2274 | "url": "https://discourse.wicg.io/u/{}/summary",
2275 | "urlMain": "https://discourse.wicg.io/",
2276 | "username_claimed": "stefano"
2277 | },
2278 | "Warrior Forum": {
2279 | "errorType": "status_code",
2280 | "url": "https://www.warriorforum.com/members/{}.html",
2281 | "urlMain": "https://www.warriorforum.com/",
2282 | "username_claimed": "blue"
2283 | },
2284 | "Wattpad": {
2285 | "errorType": "status_code",
2286 | "url": "https://www.wattpad.com/user/{}",
2287 | "urlMain": "https://www.wattpad.com/",
2288 | "urlProbe": "https://www.wattpad.com/api/v3/users/{}/",
2289 | "username_claimed": "Dogstho7951"
2290 | },
2291 | "WebNode": {
2292 | "errorType": "status_code",
2293 | "regexCheck": "^[\\w@-]+?$",
2294 | "url": "https://{}.webnode.cz/",
2295 | "urlMain": "https://www.webnode.cz/",
2296 | "username_claimed": "radkabalcarova"
2297 | },
2298 | "Weblate": {
2299 | "errorType": "status_code",
2300 | "regexCheck": "^[a-zA-Z0-9@._-]{1,150}$",
2301 | "url": "https://hosted.weblate.org/user/{}/",
2302 | "urlMain": "https://hosted.weblate.org/",
2303 | "username_claimed": "adam"
2304 | },
2305 | "Weebly": {
2306 | "errorType": "status_code",
2307 | "regexCheck": "^[a-zA-Z0-9-]{1,63}$",
2308 | "url": "https://{}.weebly.com/",
2309 | "urlMain": "https://weebly.com/",
2310 | "username_claimed": "blue"
2311 | },
2312 | "Wikidot": {
2313 | "errorMsg": "User does not exist.",
2314 | "errorType": "message",
2315 | "url": "http://www.wikidot.com/user:info/{}",
2316 | "urlMain": "http://www.wikidot.com/",
2317 | "username_claimed": "blue"
2318 | },
2319 | "Wikipedia": {
2320 | "errorMsg": "centralauth-admin-nonexistent:",
2321 | "errorType": "message",
2322 | "url": "https://en.wikipedia.org/wiki/Special:CentralAuth/{}?uselang=qqx",
2323 | "urlMain": "https://www.wikipedia.org/",
2324 | "username_claimed": "Hoadlck"
2325 | },
2326 | "Windy": {
2327 | "errorType": "status_code",
2328 | "url": "https://community.windy.com/user/{}",
2329 | "urlMain": "https://windy.com/",
2330 | "username_claimed": "blue"
2331 | },
2332 | "Wix": {
2333 | "errorType": "status_code",
2334 | "regexCheck": "^[\\w@-]+?$",
2335 | "url": "https://{}.wix.com",
2336 | "urlMain": "https://wix.com/",
2337 | "username_claimed": "support"
2338 | },
2339 | "WolframalphaForum": {
2340 | "errorType": "status_code",
2341 | "url": "https://community.wolfram.com/web/{}/home",
2342 | "urlMain": "https://community.wolfram.com/",
2343 | "username_claimed": "unico"
2344 | },
2345 | "WordPress": {
2346 | "errorType": "response_url",
2347 | "errorUrl": "wordpress.com/typo/?subdomain=",
2348 | "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
2349 | "url": "https://{}.wordpress.com/",
2350 | "urlMain": "https://wordpress.com",
2351 | "username_claimed": "blue"
2352 | },
2353 | "WordPressOrg": {
2354 | "errorType": "response_url",
2355 | "errorUrl": "https://wordpress.org",
2356 | "url": "https://profiles.wordpress.org/{}/",
2357 | "urlMain": "https://wordpress.org/",
2358 | "username_claimed": "blue"
2359 | },
2360 | "Wordnik": {
2361 | "errorMsg": "Page Not Found",
2362 | "errorType": "message",
2363 | "regexCheck": "^[a-zA-Z0-9_.+-]{1,40}$",
2364 | "url": "https://www.wordnik.com/users/{}",
2365 | "urlMain": "https://www.wordnik.com/",
2366 | "username_claimed": "blue"
2367 | },
2368 | "Wykop": {
2369 | "errorType": "status_code",
2370 | "url": "https://www.wykop.pl/ludzie/{}",
2371 | "urlMain": "https://www.wykop.pl",
2372 | "username_claimed": "blue"
2373 | },
2374 | "Xbox Gamertag": {
2375 | "errorType": "status_code",
2376 | "url": "https://xboxgamertag.com/search/{}",
2377 | "urlMain": "https://xboxgamertag.com/",
2378 | "username_claimed": "red"
2379 | },
2380 | "Xvideos": {
2381 | "errorType": "status_code",
2382 | "isNSFW": true,
2383 | "url": "https://xvideos.com/profiles/{}",
2384 | "urlMain": "https://xvideos.com/",
2385 | "username_claimed": "blue"
2386 | },
2387 | "YandexMusic": {
2388 | "__comment__": "The first and third errorMsg relate to geo-restrictions and bot detection/captchas.",
2389 | "errorMsg": [
2390 | "\u041e\u0448\u0438\u0431\u043a\u0430 404",
2391 | " Threads",
2808 | "errorType": "message",
2809 | "headers": {
2810 | "Sec-Fetch-Mode": "navigate"
2811 | },
2812 | "url": "https://www.threads.net/@{}",
2813 | "urlMain": "https://www.threads.net/",
2814 | "username_claimed": "zuck"
2815 | },
2816 | "toster": {
2817 | "errorType": "status_code",
2818 | "url": "https://www.toster.ru/user/{}/answers",
2819 | "urlMain": "https://www.toster.ru/",
2820 | "username_claimed": "adam"
2821 | },
2822 | "uid": {
2823 | "errorType": "status_code",
2824 | "url": "http://uid.me/{}",
2825 | "urlMain": "https://uid.me/",
2826 | "username_claimed": "blue"
2827 | },
2828 | "wiki.vg": {
2829 | "errorType": "status_code",
2830 | "url": "https://wiki.vg/User:{}",
2831 | "urlMain": "https://wiki.vg/",
2832 | "username_claimed": "Auri"
2833 | },
2834 | "znanylekarz.pl": {
2835 | "errorType": "status_code",
2836 | "url": "https://www.znanylekarz.pl/{}",
2837 | "urlMain": "https://znanylekarz.pl",
2838 | "username_claimed": "janusz-nowak"
2839 | }
2840 | }
2841 |
--------------------------------------------------------------------------------