├── 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 |
50 | 51 |
Discover Social Media Presence Across Platforms
52 | 53 |
54 | 55 |
56 |
57 | 58 |
59 | 60 | 61 |
62 |
63 |

Scanning 0 platforms...

64 |

65 |
66 | 67 |
68 |
69 |
0
70 |
Found
71 |
72 |
73 |
0
74 |
Scanned
75 |
76 |
77 |
0
78 |
Total Platforms
79 |
80 |
81 | 82 |
83 | 84 |
85 | 86 |
87 | 88 |
89 |

Export Results

90 |
91 | 92 | 93 | 94 | 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 | ![Penstaller](https://img.shields.io/badge/Social_Media_Account_Finding-OSINT_Toolkit-red) 4 | ![PyPI](https://img.shields.io/pypi/v/findme-osint?color=blue&label=PyPI) ![Downloads](https://img.shields.io/pypi/dm/findme-osint?color=green) ![License](https://img.shields.io/github/license/0xSaikat/findme) ![Python](https://img.shields.io/pypi/pyversions/findme-osint) 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 | ![logo](bg.jpeg) 9 | ![logo](findme.png) 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 | ![Contributors](https://img.shields.io/github/contributors/0xSaikat/findme) 213 | 214 | 215 | 216 | 217 | 218 | --- 219 | 220 | ## 📊 Stats 221 | 222 | ![GitHub stars](https://img.shields.io/github/stars/0xSaikat/findme?style=social) 223 | ![GitHub forks](https://img.shields.io/github/forks/0xSaikat/findme?style=social) 224 | ![GitHub watchers](https://img.shields.io/github/watchers/0xSaikat/findme?style=social) 225 | 226 | --- 227 | 228 |
229 | 230 |
By the Hackers for the Hackers!
231 | 232 |
233 | GitHub 234 | Twitter 235 | LinkedIn 236 | Web 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 |
113 | Visit 114 |
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 |
248 |
249 |
250 |
251 |
252 |
253 |
saikat@hackbit:~$ error_404
254 |
255 | 256 | 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 |
277 | Return Home 278 | Click Anywhere 279 |
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 | --------------------------------------------------------------------------------