user-scanner 1.0.10.3__tar.gz → 1.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. user_scanner-1.1.0/PKG-INFO +239 -0
  2. user_scanner-1.1.0/README.md +224 -0
  3. {user_scanner-1.0.10.3 → user_scanner-1.1.0}/pyproject.toml +5 -3
  4. user_scanner-1.1.0/user_scanner/__main__.py +293 -0
  5. user_scanner-1.1.0/user_scanner/core/email_orchestrator.py +78 -0
  6. user_scanner-1.1.0/user_scanner/core/formatter.py +27 -0
  7. user_scanner-1.1.0/user_scanner/core/helpers.py +201 -0
  8. user_scanner-1.1.0/user_scanner/core/orchestrator.py +127 -0
  9. {user_scanner-1.0.10.3 → user_scanner-1.1.0}/user_scanner/core/result.py +38 -13
  10. user_scanner-1.1.0/user_scanner/email_scan/adult/pornhub.py +62 -0
  11. user_scanner-1.1.0/user_scanner/email_scan/adult/xnxx.py +46 -0
  12. user_scanner-1.1.0/user_scanner/email_scan/adult/xvideos.py +50 -0
  13. user_scanner-1.1.0/user_scanner/email_scan/dev/.ruff_cache/.gitignore +2 -0
  14. user_scanner-1.1.0/user_scanner/email_scan/dev/.ruff_cache/0.14.10/10328336453267387919 +0 -0
  15. user_scanner-1.1.0/user_scanner/email_scan/dev/.ruff_cache/CACHEDIR.TAG +1 -0
  16. user_scanner-1.1.0/user_scanner/email_scan/dev/bitbucket.py +33 -0
  17. user_scanner-1.1.0/user_scanner/email_scan/dev/github.py +72 -0
  18. user_scanner-1.1.0/user_scanner/email_scan/dev/huggingface.py +37 -0
  19. user_scanner-1.1.0/user_scanner/email_scan/shopping/ebay.py.lock +97 -0
  20. user_scanner-1.1.0/user_scanner/email_scan/shopping/flipkart.py +52 -0
  21. user_scanner-1.1.0/user_scanner/email_scan/social/__init__.py +0 -0
  22. user_scanner-1.1.0/user_scanner/email_scan/social/facebook.py +96 -0
  23. user_scanner-1.1.0/user_scanner/email_scan/social/instagram.py +48 -0
  24. user_scanner-1.1.0/user_scanner/email_scan/social/mastodon.py +57 -0
  25. user_scanner-1.1.0/user_scanner/email_scan/social/x.py +41 -0
  26. user_scanner-1.1.0/user_scanner/user_scan/community/lemmy.py +30 -0
  27. user_scanner-1.1.0/user_scanner/user_scan/creator/__init__.py +0 -0
  28. user_scanner-1.1.0/user_scanner/user_scan/creator/gumroad.py +22 -0
  29. user_scanner-1.1.0/user_scanner/user_scan/donation/__init__.py +0 -0
  30. user_scanner-1.1.0/user_scanner/user_scan/gaming/__init__.py +0 -0
  31. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/gaming/roblox.py +15 -5
  32. user_scanner-1.1.0/user_scanner/utils/__init__.py +0 -0
  33. {user_scanner-1.0.10.3 → user_scanner-1.1.0}/user_scanner/version.json +1 -1
  34. user_scanner-1.0.10.3/PKG-INFO +0 -172
  35. user_scanner-1.0.10.3/README.md +0 -158
  36. user_scanner-1.0.10.3/user_scanner/__main__.py +0 -181
  37. user_scanner-1.0.10.3/user_scanner/cli/printer.py +0 -117
  38. user_scanner-1.0.10.3/user_scanner/config.json +0 -1
  39. user_scanner-1.0.10.3/user_scanner/core/helpers.py +0 -9
  40. user_scanner-1.0.10.3/user_scanner/core/orchestrator.py +0 -215
  41. {user_scanner-1.0.10.3 → user_scanner-1.1.0}/LICENSE +0 -0
  42. {user_scanner-1.0.10.3 → user_scanner-1.1.0}/user_scanner/__init__.py +0 -0
  43. {user_scanner-1.0.10.3 → user_scanner-1.1.0}/user_scanner/cli/__init__.py +0 -0
  44. {user_scanner-1.0.10.3 → user_scanner-1.1.0}/user_scanner/cli/banner.py +0 -0
  45. {user_scanner-1.0.10.3 → user_scanner-1.1.0}/user_scanner/core/__init__.py +0 -0
  46. {user_scanner-1.0.10.3 → user_scanner-1.1.0}/user_scanner/core/version.py +0 -0
  47. {user_scanner-1.0.10.3/user_scanner/creator → user_scanner-1.1.0/user_scanner/email_scan}/__init__.py +0 -0
  48. {user_scanner-1.0.10.3/user_scanner/donation → user_scanner-1.1.0/user_scanner/email_scan/adult}/__init__.py +0 -0
  49. {user_scanner-1.0.10.3/user_scanner/gaming → user_scanner-1.1.0/user_scanner/email_scan/dev}/__init__.py +0 -0
  50. {user_scanner-1.0.10.3/user_scanner/utils → user_scanner-1.1.0/user_scanner/email_scan/shopping}/__init__.py +0 -0
  51. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/community/__init__.py +0 -0
  52. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/community/coderlegion.py +0 -0
  53. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/community/hackernews.py +0 -0
  54. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/community/stackoverflow.py +0 -0
  55. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/creator/devto.py +0 -0
  56. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/creator/hashnode.py +0 -0
  57. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/creator/itch_io.py +0 -0
  58. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/creator/kaggle.py +0 -0
  59. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/creator/medium.py +0 -0
  60. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/creator/patreon.py +0 -0
  61. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/creator/producthunt.py +0 -0
  62. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/creator/substack.py +0 -0
  63. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/creator/twitch.py +0 -0
  64. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/dev/__init__.py +0 -0
  65. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/dev/bitbucket.py +0 -0
  66. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/dev/codeberg.py +0 -0
  67. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/dev/cratesio.py +0 -0
  68. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/dev/dockerhub.py +0 -0
  69. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/dev/github.py +0 -0
  70. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/dev/gitlab.py +0 -0
  71. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/dev/huggingface.py +0 -0
  72. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/dev/launchpad.py +0 -0
  73. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/dev/leetcode.py +0 -0
  74. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/dev/npmjs.py +0 -0
  75. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/dev/replit.py +0 -0
  76. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/dev/sourceforge.py +0 -0
  77. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/donation/buymeacoffee.py +0 -0
  78. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/donation/liberapay.py +0 -0
  79. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/gaming/chess_com.py +0 -0
  80. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/gaming/lichess.py +0 -0
  81. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/gaming/minecraft.py +0 -0
  82. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/gaming/monkeytype.py +0 -0
  83. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/gaming/osu.py +0 -0
  84. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/gaming/steam.py +0 -0
  85. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/social/__init__.py +0 -0
  86. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/social/bluesky.py +0 -0
  87. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/social/discord.py +0 -0
  88. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/social/instagram.py +0 -0
  89. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/social/mastodon.py +0 -0
  90. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/social/pinterest.py +0 -0
  91. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/social/reddit.py +0 -0
  92. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/social/snapchat.py +0 -0
  93. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/social/soundcloud.py +0 -0
  94. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/social/telegram.py +0 -0
  95. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/social/threads.py +0 -0
  96. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/social/tiktok.py +0 -0
  97. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/social/x.py +0 -0
  98. {user_scanner-1.0.10.3/user_scanner → user_scanner-1.1.0/user_scanner/user_scan}/social/youtube.py +0 -0
  99. {user_scanner-1.0.10.3 → user_scanner-1.1.0}/user_scanner/utils/update.py +0 -0
  100. {user_scanner-1.0.10.3 → user_scanner-1.1.0}/user_scanner/utils/updater_logic.py +0 -0
@@ -0,0 +1,239 @@
1
+ Metadata-Version: 2.4
2
+ Name: user-scanner
3
+ Version: 1.1.0
4
+ Summary: Check username availability across multiple popular platforms
5
+ Keywords: username,checker,availability,social,tech,python,user-scanner
6
+ Author-email: Kaif <kafcodec@gmail.com>
7
+ Requires-Python: >=3.10
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: httpx[http2]>=0.27,<0.29
11
+ Requires-Dist: socksio>=1.0,<2
12
+ Requires-Dist: colorama>=0.4,<1
13
+ Project-URL: Homepage, https://github.com/kaifcodec/user-scanner
14
+
15
+ # User Scanner
16
+
17
+ ![User Scanner Logo](https://github.com/user-attachments/assets/49ec8d24-665b-4115-8525-01a8d0ca2ef4)
18
+ <p align="center">
19
+ <img src="https://img.shields.io/badge/Version-1.0.10.1-blueviolet?style=for-the-badge&logo=github" />
20
+ <img src="https://img.shields.io/github/issues/kaifcodec/user-scanner?style=for-the-badge&logo=github" />
21
+ <img src="https://img.shields.io/badge/Tested%20on-Termux-black?style=for-the-badge&logo=termux" />
22
+ <img src="https://img.shields.io/badge/Tested%20on-Windows-cyan?style=for-the-badge&logo=Windows" />
23
+ <img src="https://img.shields.io/badge/Tested%20on-Linux-balck?style=for-the-badge&logo=Linux" />
24
+ <img src="https://img.shields.io/pepy/dt/user-scanner?style=for-the-badge" />
25
+ </p>
26
+
27
+ ---
28
+
29
+ ### ⚠️ Email OSINT mode had not been implemented yet, still in progress
30
+
31
+ A powerful *Email OSINT tool* that checks if a specific email is registered on various sites, combined with *username scanning* — 2-in-1 solution.
32
+
33
+ Perfect for fast, accurate and lightweight email OSINT
34
+
35
+ Perfect for finding a **unique username** across GitHub, Twitter, Reddit, Instagram, and more, all in a single command.
36
+
37
+ ## Features
38
+
39
+ - ✅ Check an email across multiple sites to see if it’s registered.
40
+ - ✅ Scan usernames across **social networks**, **developer platforms**, **creator communities**, and more.
41
+ - ✅ Can be used purely as a username tool.
42
+ - ✅ Smart auto-update system detects new releases on PyPI and prompts the user to upgrade interactively.
43
+ - ✅ Clear `Registered` and `Not Registered` for email scanning `Available` / `Taken` / `Error` output for username scans
44
+ - ✅ Robust error handling: displays the exact reason a username or email cannot be used (e.g., underscores or hyphens at the start/end).
45
+ - ✅ Fully modular: easily add new platform modules.
46
+ - ✅ Wildcard-based username permutations for automatic variation generation using a provided suffix.
47
+ - ✅ Option to select results format (**JSON**, **CSV**, console).
48
+ - ✅ Save scanning and OSINT results in the preferred format and output file (ideal for power users).
49
+ - ✅ Command-line interface ready: works immediately after `pip install`.
50
+ - ✅ Lightweight with minimal dependencies; runs on any machine.
51
+ - ✅ **Proxy support** with round-robin rotation
52
+ - ✅ **Proxy validation** to test and filter working proxies before scanning
53
+ - ✅ **Bulk username scanning** from file support for checking multiple usernames at once
54
+ - ✅ **Bulk email scanning** from file support for checking multiple emails at once
55
+ ---
56
+
57
+ ## Installation
58
+
59
+ ```bash
60
+ pip install user-scanner
61
+ ```
62
+
63
+ ---
64
+
65
+ ## Important Flags
66
+
67
+ | Flag | Description |
68
+ |------|-------------|
69
+ | `-u, --username USERNAME` | Scan a single username across platforms |
70
+ | `-e, --email EMAIL` | Scan a single email across platforms |
71
+ | `-uf, --username-file FILE` | Scan multiple usernames from file (one per line) |
72
+ | `-ef, --email-file FILE` | Scan multiple emails from file (one per line) |
73
+ | `-c, --category CATEGORY` | Scan all platforms in a specific category |
74
+ | `-lu, --list-user` | List all available modules for username scanning |
75
+ | `-le, --list-email` | List all available modules for email scanning |
76
+ | `-m, --module MODULE` | Scan a single specific module |
77
+ | `-p, --permute PERMUTE` | Generate username permutations using a pattern/suffix |
78
+ | `-P, --proxy-file FILE` | Use proxies from file (one per line) |
79
+ | `--validate-proxies` | Validate proxies before scanning (tests against google.com) |
80
+ | `-s, --stop STOP` | Limit the number of permutations generated |
81
+ | `-d, --delay DELAY` | Delay (in seconds) between requests |
82
+ | `-f, --format {csv,json}` | Select output format |
83
+ | `-o, --output OUTPUT` | Save results to a file |
84
+
85
+ ---
86
+
87
+ ## Usage
88
+
89
+ ### Basic username/email scan
90
+
91
+ Scan a single username across **all** available modules/platforms:
92
+
93
+ ```bash
94
+ user-scanner -e john_doe@gmail.com
95
+ user-scanner --email john_doe@gmail.com # long version
96
+
97
+ user-scanner -u john_doe
98
+ user-scanner --username john_doe # long version
99
+ ```
100
+
101
+ ### Selective scanning
102
+
103
+ Scan only specific categories or single modules:
104
+
105
+ ```bash
106
+ user-scanner -u john_doe -c dev # developer platforms only
107
+ user-scanner -u john_doe -m github # only GitHub
108
+ ```
109
+
110
+ ### Bulk username scanning
111
+
112
+ Scan multiple usernames from a file (one username per line):
113
+ - Can also be combined with categories or modules using `-c` and `-m` flags
114
+
115
+ ```bash
116
+ user-scanner -uf usernames.txt
117
+ ```
118
+
119
+
120
+ ### Bulk email scanning
121
+
122
+ Scan multiple emails from a file (one email per line):
123
+ - Can also be combined with categories or modules using `-c` and `-m` flags
124
+
125
+ ```bash
126
+ user-scanner -ef emails.txt
127
+ ```
128
+
129
+ ### Username/Email variations (suffix only)
130
+
131
+ Generate & check username variations using a permutation from the given suffix:
132
+
133
+ ```bash
134
+ user-scanner -u john_ -p ab # john_a, ..., john_ab, john_ba
135
+ ```
136
+
137
+ ### Using Proxies
138
+
139
+ Route requests through proxy servers:
140
+
141
+ ```bash
142
+ user-scanner -u john_doe -P proxies.txt
143
+ ```
144
+
145
+ Validate proxies before scanning (tests each proxy against google.com):
146
+
147
+ ```bash
148
+ user-scanner -u john_doe -P proxies.txt --validate-proxies # recommended
149
+ ```
150
+
151
+ This will:
152
+ 1. Test all proxies from the file
153
+ 2. Filter out non-working proxies
154
+ 3. Save working proxies to `validated_proxies.txt`
155
+ 4. Use only validated proxies for scanning
156
+
157
+ ---
158
+
159
+ ### Update
160
+
161
+ Update the tool to the latest PyPI version:
162
+
163
+ ```bash
164
+ user-scanner -U
165
+ ```
166
+ ---
167
+
168
+ ## Screenshot:
169
+
170
+ - Note*: New modules are constantly getting added so this might have only limited, outdated output:
171
+
172
+ <img width="1072" height="848" alt="user-scanner's main usage screenshot" src="https://github.com/user-attachments/assets/34e44ca6-e314-419e-9035-d951b493b47f" />
173
+
174
+
175
+
176
+ ---
177
+
178
+ <img width="1080" height="352" alt="user-scanner's wildcard username feature" src="https://github.com/user-attachments/assets/578b248c-2a05-4917-aab3-6372a7c28045" />
179
+
180
+
181
+ ---
182
+
183
+ ## Contributing
184
+
185
+ Modules are organized under `user_scanner/`:
186
+
187
+ ```
188
+ user_scanner/
189
+ ├── email_scan/ # Currently in development
190
+ │ ├── social/ # Social email scan modules (Instagram, Mastodon, X, etc.)
191
+ | ├── adult/ # Adult sites
192
+ | ... # New sites to be added soon
193
+ ├── user_scan/
194
+ │ ├── dev/ # Developer platforms (GitHub, GitLab, npm, etc.)
195
+ │ ├── social/ # Social platforms (Twitter/X, Reddit, Instagram, Discord, etc.)
196
+ │ ├── creator/ # Creator platforms (Hashnode, Dev.to, Medium, Patreon, etc.)
197
+ │ ├── community/ # Community platforms (forums, StackOverflow, HackerNews, etc.)
198
+ │ ├── gaming/ # Gaming sites (chess.com, Lichess, Roblox, Minecraft, etc.)
199
+ │ └── donation/ # Donation platforms (BuyMeACoffee, Liberapay)
200
+ |...
201
+ ```
202
+
203
+ **Module guidelines:**
204
+ This project contains small "validator" modules that check whether a username exists on a given platform. Each validator is a single function that returns a Result object (see `core/orchestrator.py`).
205
+
206
+ Result semantics:
207
+ - Result.available() → `available`
208
+ - Result.taken() → `taken`
209
+ - Result.error(message: Optional[str]) → `error`, blocked, unknown, or request failure (include short diagnostic message when helpful)
210
+
211
+ Follow this document when adding or updating validators.
212
+
213
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for examples.
214
+
215
+ ---
216
+
217
+ ## Dependencies:
218
+ - [httpx](https://pypi.org/project/httpx/)
219
+ - [colorama](https://pypi.org/project/colorama/)
220
+
221
+ ---
222
+
223
+ ## License
224
+
225
+ This project is licensed under the **MIT License**. See [LICENSE](LICENSE) for details.
226
+
227
+
228
+ ---
229
+
230
+ ## Star History
231
+
232
+ <a href="https://www.star-history.com/#kaifcodec/user-scanner&type=date&legend=top-left">
233
+ <picture>
234
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=kaifcodec/user-scanner&type=date&theme=dark&legend=top-left" />
235
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=kaifcodec/user-scanner&type=date&legend=top-left" />
236
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=kaifcodec/user-scanner&type=date&legend=top-left" />
237
+ </picture>
238
+ </a>
239
+
@@ -0,0 +1,224 @@
1
+ # User Scanner
2
+
3
+ ![User Scanner Logo](https://github.com/user-attachments/assets/49ec8d24-665b-4115-8525-01a8d0ca2ef4)
4
+ <p align="center">
5
+ <img src="https://img.shields.io/badge/Version-1.0.10.1-blueviolet?style=for-the-badge&logo=github" />
6
+ <img src="https://img.shields.io/github/issues/kaifcodec/user-scanner?style=for-the-badge&logo=github" />
7
+ <img src="https://img.shields.io/badge/Tested%20on-Termux-black?style=for-the-badge&logo=termux" />
8
+ <img src="https://img.shields.io/badge/Tested%20on-Windows-cyan?style=for-the-badge&logo=Windows" />
9
+ <img src="https://img.shields.io/badge/Tested%20on-Linux-balck?style=for-the-badge&logo=Linux" />
10
+ <img src="https://img.shields.io/pepy/dt/user-scanner?style=for-the-badge" />
11
+ </p>
12
+
13
+ ---
14
+
15
+ ### ⚠️ Email OSINT mode had not been implemented yet, still in progress
16
+
17
+ A powerful *Email OSINT tool* that checks if a specific email is registered on various sites, combined with *username scanning* — 2-in-1 solution.
18
+
19
+ Perfect for fast, accurate and lightweight email OSINT
20
+
21
+ Perfect for finding a **unique username** across GitHub, Twitter, Reddit, Instagram, and more, all in a single command.
22
+
23
+ ## Features
24
+
25
+ - ✅ Check an email across multiple sites to see if it’s registered.
26
+ - ✅ Scan usernames across **social networks**, **developer platforms**, **creator communities**, and more.
27
+ - ✅ Can be used purely as a username tool.
28
+ - ✅ Smart auto-update system detects new releases on PyPI and prompts the user to upgrade interactively.
29
+ - ✅ Clear `Registered` and `Not Registered` for email scanning `Available` / `Taken` / `Error` output for username scans
30
+ - ✅ Robust error handling: displays the exact reason a username or email cannot be used (e.g., underscores or hyphens at the start/end).
31
+ - ✅ Fully modular: easily add new platform modules.
32
+ - ✅ Wildcard-based username permutations for automatic variation generation using a provided suffix.
33
+ - ✅ Option to select results format (**JSON**, **CSV**, console).
34
+ - ✅ Save scanning and OSINT results in the preferred format and output file (ideal for power users).
35
+ - ✅ Command-line interface ready: works immediately after `pip install`.
36
+ - ✅ Lightweight with minimal dependencies; runs on any machine.
37
+ - ✅ **Proxy support** with round-robin rotation
38
+ - ✅ **Proxy validation** to test and filter working proxies before scanning
39
+ - ✅ **Bulk username scanning** from file support for checking multiple usernames at once
40
+ - ✅ **Bulk email scanning** from file support for checking multiple emails at once
41
+ ---
42
+
43
+ ## Installation
44
+
45
+ ```bash
46
+ pip install user-scanner
47
+ ```
48
+
49
+ ---
50
+
51
+ ## Important Flags
52
+
53
+ | Flag | Description |
54
+ |------|-------------|
55
+ | `-u, --username USERNAME` | Scan a single username across platforms |
56
+ | `-e, --email EMAIL` | Scan a single email across platforms |
57
+ | `-uf, --username-file FILE` | Scan multiple usernames from file (one per line) |
58
+ | `-ef, --email-file FILE` | Scan multiple emails from file (one per line) |
59
+ | `-c, --category CATEGORY` | Scan all platforms in a specific category |
60
+ | `-lu, --list-user` | List all available modules for username scanning |
61
+ | `-le, --list-email` | List all available modules for email scanning |
62
+ | `-m, --module MODULE` | Scan a single specific module |
63
+ | `-p, --permute PERMUTE` | Generate username permutations using a pattern/suffix |
64
+ | `-P, --proxy-file FILE` | Use proxies from file (one per line) |
65
+ | `--validate-proxies` | Validate proxies before scanning (tests against google.com) |
66
+ | `-s, --stop STOP` | Limit the number of permutations generated |
67
+ | `-d, --delay DELAY` | Delay (in seconds) between requests |
68
+ | `-f, --format {csv,json}` | Select output format |
69
+ | `-o, --output OUTPUT` | Save results to a file |
70
+
71
+ ---
72
+
73
+ ## Usage
74
+
75
+ ### Basic username/email scan
76
+
77
+ Scan a single username across **all** available modules/platforms:
78
+
79
+ ```bash
80
+ user-scanner -e john_doe@gmail.com
81
+ user-scanner --email john_doe@gmail.com # long version
82
+
83
+ user-scanner -u john_doe
84
+ user-scanner --username john_doe # long version
85
+ ```
86
+
87
+ ### Selective scanning
88
+
89
+ Scan only specific categories or single modules:
90
+
91
+ ```bash
92
+ user-scanner -u john_doe -c dev # developer platforms only
93
+ user-scanner -u john_doe -m github # only GitHub
94
+ ```
95
+
96
+ ### Bulk username scanning
97
+
98
+ Scan multiple usernames from a file (one username per line):
99
+ - Can also be combined with categories or modules using `-c` and `-m` flags
100
+
101
+ ```bash
102
+ user-scanner -uf usernames.txt
103
+ ```
104
+
105
+
106
+ ### Bulk email scanning
107
+
108
+ Scan multiple emails from a file (one email per line):
109
+ - Can also be combined with categories or modules using `-c` and `-m` flags
110
+
111
+ ```bash
112
+ user-scanner -ef emails.txt
113
+ ```
114
+
115
+ ### Username/Email variations (suffix only)
116
+
117
+ Generate & check username variations using a permutation from the given suffix:
118
+
119
+ ```bash
120
+ user-scanner -u john_ -p ab # john_a, ..., john_ab, john_ba
121
+ ```
122
+
123
+ ### Using Proxies
124
+
125
+ Route requests through proxy servers:
126
+
127
+ ```bash
128
+ user-scanner -u john_doe -P proxies.txt
129
+ ```
130
+
131
+ Validate proxies before scanning (tests each proxy against google.com):
132
+
133
+ ```bash
134
+ user-scanner -u john_doe -P proxies.txt --validate-proxies # recommended
135
+ ```
136
+
137
+ This will:
138
+ 1. Test all proxies from the file
139
+ 2. Filter out non-working proxies
140
+ 3. Save working proxies to `validated_proxies.txt`
141
+ 4. Use only validated proxies for scanning
142
+
143
+ ---
144
+
145
+ ### Update
146
+
147
+ Update the tool to the latest PyPI version:
148
+
149
+ ```bash
150
+ user-scanner -U
151
+ ```
152
+ ---
153
+
154
+ ## Screenshot:
155
+
156
+ - Note*: New modules are constantly getting added so this might have only limited, outdated output:
157
+
158
+ <img width="1072" height="848" alt="user-scanner's main usage screenshot" src="https://github.com/user-attachments/assets/34e44ca6-e314-419e-9035-d951b493b47f" />
159
+
160
+
161
+
162
+ ---
163
+
164
+ <img width="1080" height="352" alt="user-scanner's wildcard username feature" src="https://github.com/user-attachments/assets/578b248c-2a05-4917-aab3-6372a7c28045" />
165
+
166
+
167
+ ---
168
+
169
+ ## Contributing
170
+
171
+ Modules are organized under `user_scanner/`:
172
+
173
+ ```
174
+ user_scanner/
175
+ ├── email_scan/ # Currently in development
176
+ │ ├── social/ # Social email scan modules (Instagram, Mastodon, X, etc.)
177
+ | ├── adult/ # Adult sites
178
+ | ... # New sites to be added soon
179
+ ├── user_scan/
180
+ │ ├── dev/ # Developer platforms (GitHub, GitLab, npm, etc.)
181
+ │ ├── social/ # Social platforms (Twitter/X, Reddit, Instagram, Discord, etc.)
182
+ │ ├── creator/ # Creator platforms (Hashnode, Dev.to, Medium, Patreon, etc.)
183
+ │ ├── community/ # Community platforms (forums, StackOverflow, HackerNews, etc.)
184
+ │ ├── gaming/ # Gaming sites (chess.com, Lichess, Roblox, Minecraft, etc.)
185
+ │ └── donation/ # Donation platforms (BuyMeACoffee, Liberapay)
186
+ |...
187
+ ```
188
+
189
+ **Module guidelines:**
190
+ This project contains small "validator" modules that check whether a username exists on a given platform. Each validator is a single function that returns a Result object (see `core/orchestrator.py`).
191
+
192
+ Result semantics:
193
+ - Result.available() → `available`
194
+ - Result.taken() → `taken`
195
+ - Result.error(message: Optional[str]) → `error`, blocked, unknown, or request failure (include short diagnostic message when helpful)
196
+
197
+ Follow this document when adding or updating validators.
198
+
199
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for examples.
200
+
201
+ ---
202
+
203
+ ## Dependencies:
204
+ - [httpx](https://pypi.org/project/httpx/)
205
+ - [colorama](https://pypi.org/project/colorama/)
206
+
207
+ ---
208
+
209
+ ## License
210
+
211
+ This project is licensed under the **MIT License**. See [LICENSE](LICENSE) for details.
212
+
213
+
214
+ ---
215
+
216
+ ## Star History
217
+
218
+ <a href="https://www.star-history.com/#kaifcodec/user-scanner&type=date&legend=top-left">
219
+ <picture>
220
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=kaifcodec/user-scanner&type=date&theme=dark&legend=top-left" />
221
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=kaifcodec/user-scanner&type=date&legend=top-left" />
222
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=kaifcodec/user-scanner&type=date&legend=top-left" />
223
+ </picture>
224
+ </a>
@@ -4,16 +4,18 @@ build-backend = "flit_core.buildapi"
4
4
 
5
5
  [project]
6
6
  name = "user-scanner"
7
- version = "1.0.10.3"
7
+ version = "1.1.0"
8
8
  description = "Check username availability across multiple popular platforms"
9
9
  readme = "README.md"
10
10
  license = {file = "LICENSE"}
11
11
  authors = [
12
12
  {name = "Kaif", email = "kafcodec@gmail.com"}
13
13
  ]
14
+
14
15
  dependencies = [
15
- "httpx",
16
- "colorama"
16
+ "httpx[http2]>=0.27,<0.29",
17
+ "socksio>=1.0,<2",
18
+ "colorama>=0.4,<1"
17
19
  ]
18
20
 
19
21
  requires-python = ">=3.10"