user-scanner 1.1.0.8__tar.gz → 1.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 (136) hide show
  1. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/PKG-INFO +9 -10
  2. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/README.md +8 -9
  3. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/pyproject.toml +1 -1
  4. user_scanner-1.1.1.0/user_scanner/email_scan/adult/babestation.py +49 -0
  5. user_scanner-1.1.1.0/user_scanner/email_scan/adult/flirtbate.py +44 -0
  6. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/adult/pornhub.py +1 -1
  7. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/adult/xnxx.py +1 -1
  8. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/adult/xvideos.py +1 -1
  9. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/pipeline/zoho.py +10 -10
  10. user_scanner-1.1.1.0/user_scanner/email_scan/social/instagram.py +63 -0
  11. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/version.json +1 -1
  12. user_scanner-1.1.0.8/user_scanner/email_scan/social/instagram.py +0 -48
  13. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/LICENSE +0 -0
  14. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/__init__.py +0 -0
  15. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/__main__.py +0 -0
  16. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/cli/__init__.py +0 -0
  17. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/cli/banner.py +0 -0
  18. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/config.json +0 -0
  19. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/core/__init__.py +0 -0
  20. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/core/email_orchestrator.py +0 -0
  21. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/core/formatter.py +0 -0
  22. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/core/helpers.py +0 -0
  23. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/core/orchestrator.py +0 -0
  24. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/core/result.py +0 -0
  25. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/core/version.py +0 -0
  26. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/__init__.py +0 -0
  27. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/adult/__init__.py +0 -0
  28. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/adult/sexvid.py +0 -0
  29. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/community/__init__.py +0 -0
  30. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/community/quora.py +0 -0
  31. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/community/stackoverflow.py +0 -0
  32. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/creator/__init__.py +0 -0
  33. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/creator/gumroad.py +0 -0
  34. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/creator/patreon.py +0 -0
  35. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/dev/__init__.py +0 -0
  36. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/dev/bitbucket.py +0 -0
  37. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/dev/codecademy.py +0 -0
  38. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/dev/codepen.py +0 -0
  39. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/dev/devrant.py +0 -0
  40. {user_scanner-1.1.0.8/user_scanner/email_scan/shopping → user_scanner-1.1.1.0/user_scanner/email_scan/dev}/envato.py +0 -0
  41. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/dev/github.py +0 -0
  42. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/dev/huggingface.py +0 -0
  43. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/dev/leetcode.py +0 -0
  44. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/dev/replit.py +0 -0
  45. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/dev/wordpress.py +0 -0
  46. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/entertainment/__init__.py +0 -0
  47. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/entertainment/appletv.py +0 -0
  48. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/entertainment/justwatch.py +0 -0
  49. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/entertainment/netflix.py +0 -0
  50. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/entertainment/stremio.py +0 -0
  51. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/gaming/__init__.py +0 -0
  52. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/gaming/chess_com.py +0 -0
  53. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/hosting/__init__.py +0 -0
  54. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/hosting/render.py +0 -0
  55. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/learning/__init__.py +0 -0
  56. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/learning/duolingo.py +0 -0
  57. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/music/__init__.py +0 -0
  58. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/music/lastfm.py +0 -0
  59. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/music/spotify.py +0 -0
  60. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/other/__init__.py +0 -0
  61. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/other/eventbrite.py +0 -0
  62. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/pipeline/__init__.py +0 -0
  63. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/pipeline/axonaut.py +0 -0
  64. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/pipeline/hubspot.py +0 -0
  65. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/pipeline/insightly.py +0 -0
  66. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/shopping/__init__.py +0 -0
  67. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/shopping/flipkart.py +0 -0
  68. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/shopping/naturabuy.py +0 -0
  69. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/shopping/vivino.py +0 -0
  70. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/social/__init__.py +0 -0
  71. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/social/facebook.py +0 -0
  72. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/social/mastodon.py +0 -0
  73. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/social/x.py +0 -0
  74. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/sports/__init__.py +0 -0
  75. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/sports/espn.py +0 -0
  76. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/email_scan/sports/marca.py +0 -0
  77. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/community/__init__.py +0 -0
  78. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/community/coderlegion.py +0 -0
  79. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/community/hackernews.py +0 -0
  80. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/community/lemmy.py +0 -0
  81. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/community/stackoverflow.py +0 -0
  82. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/creator/__init__.py +0 -0
  83. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/creator/devto.py +0 -0
  84. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/creator/gumroad.py +0 -0
  85. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/creator/hashnode.py +0 -0
  86. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/creator/itch_io.py +0 -0
  87. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/creator/kaggle.py +0 -0
  88. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/creator/medium.py +0 -0
  89. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/creator/patreon.py +0 -0
  90. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/creator/producthunt.py +0 -0
  91. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/creator/substack.py +0 -0
  92. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/creator/twitch.py +0 -0
  93. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/dev/__init__.py +0 -0
  94. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/dev/bitbucket.py +0 -0
  95. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/dev/codeberg.py +0 -0
  96. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/dev/cratesio.py +0 -0
  97. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/dev/dockerhub.py +0 -0
  98. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/dev/github.py +0 -0
  99. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/dev/gitlab.py +0 -0
  100. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/dev/huggingface.py +0 -0
  101. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/dev/launchpad.py +0 -0
  102. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/dev/leetcode.py +0 -0
  103. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/dev/npmjs.py +0 -0
  104. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/dev/replit.py +0 -0
  105. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/dev/sourceforge.py +0 -0
  106. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/donation/__init__.py +0 -0
  107. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/donation/buymeacoffee.py +0 -0
  108. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/donation/liberapay.py +0 -0
  109. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/gaming/__init__.py +0 -0
  110. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/gaming/battlenet.py +0 -0
  111. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/gaming/chess_com.py +0 -0
  112. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/gaming/lichess.py +0 -0
  113. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/gaming/minecraft.py +0 -0
  114. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/gaming/monkeytype.py +0 -0
  115. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/gaming/osu.py +0 -0
  116. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/gaming/roblox.py +0 -0
  117. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/gaming/steam.py +0 -0
  118. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/shopping/__init__.py +0 -0
  119. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/shopping/vinted.py +0 -0
  120. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/social/__init__.py +0 -0
  121. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/social/bluesky.py +0 -0
  122. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/social/discord.py +0 -0
  123. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/social/instagram.py +0 -0
  124. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/social/mastodon.py +0 -0
  125. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/social/pinterest.py +0 -0
  126. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/social/reddit.py +0 -0
  127. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/social/snapchat.py +0 -0
  128. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/social/soundcloud.py +0 -0
  129. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/social/telegram.py +0 -0
  130. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/social/threads.py +0 -0
  131. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/social/tiktok.py +0 -0
  132. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/social/x.py +0 -0
  133. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/user_scan/social/youtube.py +0 -0
  134. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/utils/__init__.py +0 -0
  135. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/utils/update.py +0 -0
  136. {user_scanner-1.1.0.8 → user_scanner-1.1.1.0}/user_scanner/utils/updater_logic.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: user-scanner
3
- Version: 1.1.0.8
3
+ Version: 1.1.1.0
4
4
  Summary: Check username availability across multiple popular platforms
5
5
  Keywords: username,checker,availability,social,tech,python,user-scanner
6
6
  Author-email: Kaif <kafcodec@gmail.com>
@@ -16,7 +16,7 @@ Project-URL: Homepage, https://github.com/kaifcodec/user-scanner
16
16
 
17
17
  ![User Scanner Logo](https://github.com/user-attachments/assets/49ec8d24-665b-4115-8525-01a8d0ca2ef4)
18
18
  <p align="center">
19
- <img src="https://img.shields.io/badge/Version-1.1.0.8-blueviolet?style=for-the-badge&logo=github" />
19
+ <img src="https://img.shields.io/badge/Version-1.1.1.0-blueviolet?style=for-the-badge&logo=github" />
20
20
  <img src="https://img.shields.io/github/issues/kaifcodec/user-scanner?style=for-the-badge&logo=github" />
21
21
  <img src="https://img.shields.io/badge/Tested%20on-Termux-black?style=for-the-badge&logo=termux" />
22
22
  <img src="https://img.shields.io/badge/Tested%20on-Windows-cyan?style=for-the-badge&logo=Windows" />
@@ -217,13 +217,12 @@ This tool is provided for **educational purposes** and **authorized security res
217
217
 
218
218
  ---
219
219
 
220
- ## Star History
220
+ ## 🛠️ Troubleshooting
221
221
 
222
- <a href="https://www.star-history.com/#kaifcodec/user-scanner&type=date&legend=top-left">
223
- <picture>
224
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=kaifcodec/user-scanner&type=date&theme=dark&legend=top-left" />
225
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=kaifcodec/user-scanner&type=date&legend=top-left" />
226
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=kaifcodec/user-scanner&type=date&legend=top-left" />
227
- </picture>
228
- </a>
222
+ Some sites may return **403 Forbidden** or **connection timeout** errors, especially if they are blocked in your region (this is common with some adult sites).
223
+
224
+ - If a site is blocked in your region, use a VPN and select a region where you know the site is accessible.
225
+ - Then run the tool again.
226
+
227
+ These issues are caused by regional or network restrictions, not by the tool itself. If it still fails, report the error by opening an issue.
229
228
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  ![User Scanner Logo](https://github.com/user-attachments/assets/49ec8d24-665b-4115-8525-01a8d0ca2ef4)
4
4
  <p align="center">
5
- <img src="https://img.shields.io/badge/Version-1.1.0.8-blueviolet?style=for-the-badge&logo=github" />
5
+ <img src="https://img.shields.io/badge/Version-1.1.1.0-blueviolet?style=for-the-badge&logo=github" />
6
6
  <img src="https://img.shields.io/github/issues/kaifcodec/user-scanner?style=for-the-badge&logo=github" />
7
7
  <img src="https://img.shields.io/badge/Tested%20on-Termux-black?style=for-the-badge&logo=termux" />
8
8
  <img src="https://img.shields.io/badge/Tested%20on-Windows-cyan?style=for-the-badge&logo=Windows" />
@@ -203,12 +203,11 @@ This tool is provided for **educational purposes** and **authorized security res
203
203
 
204
204
  ---
205
205
 
206
- ## Star History
206
+ ## 🛠️ Troubleshooting
207
207
 
208
- <a href="https://www.star-history.com/#kaifcodec/user-scanner&type=date&legend=top-left">
209
- <picture>
210
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=kaifcodec/user-scanner&type=date&theme=dark&legend=top-left" />
211
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=kaifcodec/user-scanner&type=date&legend=top-left" />
212
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=kaifcodec/user-scanner&type=date&legend=top-left" />
213
- </picture>
214
- </a>
208
+ Some sites may return **403 Forbidden** or **connection timeout** errors, especially if they are blocked in your region (this is common with some adult sites).
209
+
210
+ - If a site is blocked in your region, use a VPN and select a region where you know the site is accessible.
211
+ - Then run the tool again.
212
+
213
+ These issues are caused by regional or network restrictions, not by the tool itself. If it still fails, report the error by opening an issue.
@@ -4,7 +4,7 @@ build-backend = "flit_core.buildapi"
4
4
 
5
5
  [project]
6
6
  name = "user-scanner"
7
- version = "1.1.0.8"
7
+ version = "1.1.1.0"
8
8
  description = "Check username availability across multiple popular platforms"
9
9
  readme = "README.md"
10
10
  license = {file = "LICENSE"}
@@ -0,0 +1,49 @@
1
+ import httpx
2
+ from user_scanner.core.result import Result
3
+
4
+
5
+ async def _check(email: str) -> Result:
6
+ url = "https://www.babestation.tv/user/send/username-reminder"
7
+
8
+ headers = {
9
+ 'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Mobile Safari/537.36",
10
+ 'Accept': "application/json, text/plain, */*",
11
+ 'Content-Type': "application/json",
12
+ 'x-requested-with': "XMLHttpRequest",
13
+ 'origin': "https://www.babestation.tv",
14
+ 'referer': "https://www.babestation.tv/forgot-password-or-username",
15
+ 'accept-language': "en-US,en;q=0.9",
16
+ }
17
+
18
+ payload = {
19
+ "email": email
20
+ }
21
+
22
+ try:
23
+ async with httpx.AsyncClient(timeout=5.0) as client:
24
+ response = await client.post(url, json=payload, headers=headers)
25
+
26
+ if response.status_code in [200, 404]:
27
+ data = response.json()
28
+ success = data.get("success")
29
+
30
+ if success is True:
31
+ return Result.taken()
32
+
33
+ if success is False:
34
+ errors = data.get("errors", [])
35
+ if "Email not found" in errors:
36
+ return Result.available()
37
+
38
+ return Result.error("Unexpected response body, report it via GitHub issues")
39
+
40
+ return Result.error(f"HTTP {response.status_code}")
41
+
42
+ except httpx.TimeoutException:
43
+ return Result.error("Connection timed out")
44
+ except Exception as e:
45
+ return Result.error(f"Unexpected Exception: {e}")
46
+
47
+
48
+ async def validate_babestation(email: str) -> Result:
49
+ return await _check(email)
@@ -0,0 +1,44 @@
1
+ import httpx
2
+ from user_scanner.core.result import Result
3
+
4
+ async def _check(email: str) -> Result:
5
+ url = "https://api.flirtbate.com/api/v1/customer/reset-password-email"
6
+
7
+ headers = {
8
+ 'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Mobile Safari/537.36",
9
+ 'Accept': "application/json",
10
+ 'Content-Type': "application/json",
11
+ 'origin': "https://flirtbate.com",
12
+ 'referer': "https://flirtbate.com/",
13
+ 'accept-language': "en-US,en;q=0.9",
14
+ }
15
+
16
+ payload = {
17
+ "email": email
18
+ }
19
+
20
+ try:
21
+ async with httpx.AsyncClient(timeout=5.0) as client:
22
+ response = await client.post(url, json=payload, headers=headers)
23
+
24
+ if response.status_code == 429:
25
+ return Result.error("Rate limited (429)")
26
+
27
+ data = response.json()
28
+ message = data.get("message", "")
29
+
30
+ if "Reset password email sent" in message:
31
+ return Result.taken()
32
+
33
+ if "Email invalid for reset password" in message:
34
+ return Result.available()
35
+
36
+ return Result.error("Unexpected response body, report it via GitHub issues")
37
+
38
+ except httpx.TimeoutException:
39
+ return Result.error("Connection timed out")
40
+ except Exception as e:
41
+ return Result.error(f"Unexpected Exception: {e}")
42
+
43
+ async def validate_flirtbate(email: str) -> Result:
44
+ return await _check(email)
@@ -14,7 +14,7 @@ async def _check(email: str) -> Result:
14
14
  "content-type": "application/x-www-form-urlencoded; charset=UTF-8"
15
15
  }
16
16
 
17
- async with httpx.AsyncClient(http2=True, follow_redirects=True, timeout=3) as client:
17
+ async with httpx.AsyncClient(http2=True, follow_redirects=True, timeout=5.0) as client:
18
18
  try:
19
19
  landing_resp = await client.get(base_url, headers=headers)
20
20
  token_match = re.search(r'var\s+token\s*=\s*"([^"]+)"', landing_resp.text)
@@ -19,7 +19,7 @@ async def _check(email: str) -> Result:
19
19
  'Accept-Language': "en-US,en;q=0.9"
20
20
  }
21
21
 
22
- async with httpx.AsyncClient(http2=True) as client:
22
+ async with httpx.AsyncClient(http2=True, timeout=5.0) as client:
23
23
  try:
24
24
  response = await client.get(url, params=params, headers=headers)
25
25
 
@@ -21,7 +21,7 @@ async def _check(email: str) -> Result:
21
21
  'Accept-Language': "en-US,en;q=0.9"
22
22
  }
23
23
 
24
- async with httpx.AsyncClient(http2=True, timeout=3) as client:
24
+ async with httpx.AsyncClient(http2=True, timeout=5.0) as client:
25
25
  try:
26
26
  response = await client.get(url, params=params, headers=headers)
27
27
 
@@ -8,17 +8,15 @@ async def _check(email: str) -> Result:
8
8
  'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
9
9
  'Accept': '*/*',
10
10
  'Origin': 'https://accounts.zoho.com',
11
- 'Sec-Fetch-Site': 'same-origin',
12
- 'Sec-Fetch-Mode': 'cors',
13
- 'Sec-Fetch-Dest': 'empty',
11
+ 'Referer': 'https://accounts.zoho.com/',
14
12
  'Accept-Language': 'en-US,en;q=0.9',
15
13
  }
16
14
 
17
15
  try:
18
16
  async with httpx.AsyncClient(timeout=5.0, follow_redirects=True) as client:
19
- await client.get("https://accounts.zoho.com/register", headers=headers)
20
-
17
+ await client.get("https://accounts.zoho.com/signin", headers=headers)
21
18
  csrf_cookie = client.cookies.get("iamcsr")
19
+
22
20
  if not csrf_cookie:
23
21
  return Result.error("CSRF cookie not found")
24
22
 
@@ -39,24 +37,26 @@ async def _check(email: str) -> Result:
39
37
 
40
38
  if response.status_code == 200:
41
39
  data = response.json()
42
- message = data.get("message")
43
40
  status = data.get("status_code")
41
+ message = data.get("message", "")
44
42
 
45
- if message == "User exists" and status == 201:
43
+ if status == 201 or message == "User exists":
46
44
  return Result.taken()
47
45
 
48
46
  elif status == 400:
49
47
  return Result.available()
50
48
 
51
- else:
52
- return Result.error(data)
49
+ elif "User exists in another DC" in message:
50
+ return Result.taken()
51
+
52
+ return Result.error("Unexpected response body, report it via GitHub issues")
53
53
 
54
54
  return Result.error(f"HTTP {response.status_code}")
55
55
 
56
56
  except httpx.TimeoutException:
57
57
  return Result.error("Connection timed out")
58
58
  except Exception as e:
59
- return Result.error(str(e))
59
+ return Result.error(f"Unexpected Exception: {e}")
60
60
 
61
61
 
62
62
  async def validate_zoho(email: str) -> Result:
@@ -0,0 +1,63 @@
1
+ import httpx
2
+ import re
3
+ from user_scanner.core.result import Result
4
+
5
+
6
+ async def _check(email: str) -> Result:
7
+ user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"
8
+
9
+ try:
10
+ async with httpx.AsyncClient(headers={"user-agent": user_agent}, http2=True, timeout=15.0) as client:
11
+ res = await client.get("https://www.instagram.com/accounts/password/reset/", follow_redirects=True)
12
+
13
+ csrf = client.cookies.get("csrftoken")
14
+ if not csrf:
15
+ match = re.search(
16
+ r'["\']csrf_token["\']\s*:\s*["\']([^"\']+)["\']', res.text)
17
+ if match:
18
+ csrf = match.group(1)
19
+
20
+ if not csrf:
21
+ return Result.error("CSRF token not found (IP may be flagged)")
22
+
23
+ headers = {
24
+ "x-csrftoken": csrf,
25
+ "x-ig-app-id": "936619743392459",
26
+ "x-requested-with": "XMLHttpRequest",
27
+ "x-asbd-id": "359341",
28
+ "origin": "https://www.instagram.com",
29
+ "referer": "https://www.instagram.com/accounts/password/reset/",
30
+ "accept": "*/*",
31
+ "content-type": "application/x-www-form-urlencoded"
32
+ }
33
+
34
+ response = await client.post(
35
+ "https://www.instagram.com/api/v1/web/accounts/account_recovery_send_ajax/",
36
+ data={"email_or_username": email},
37
+ headers=headers
38
+ )
39
+
40
+ if response.status_code in [200, 400]:
41
+ data = response.json()
42
+ status_val = data.get("status")
43
+
44
+ if status_val == "ok":
45
+ return Result.taken()
46
+ elif status_val == "fail":
47
+ return Result.available()
48
+
49
+ return Result.error("Unexpected response body, report it via GitHub issues")
50
+
51
+ if response.status_code == 429:
52
+ return Result.error("Rate limited (429)")
53
+
54
+ return Result.error(f"HTTP {response.status_code}")
55
+
56
+ except httpx.TimeoutException:
57
+ return Result.error("Connection timed out")
58
+ except Exception as e:
59
+ return Result.error(f"Unexpected Exception: {e}")
60
+
61
+
62
+ async def validate_instagram(email: str) -> Result:
63
+ return await _check(email)
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "1.1.0.8",
2
+ "version": "1.1.1.0",
3
3
  "version_type": "pypi"
4
4
  }
@@ -1,48 +0,0 @@
1
- import httpx
2
- from user_scanner.core.result import Result
3
-
4
-
5
- async def _check(email):
6
- USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"
7
- async with httpx.AsyncClient(headers={"user-agent": USER_AGENT}, http2=True) as client:
8
- await client.get("https://www.instagram.com/")
9
- csrf = client.cookies.get("csrftoken")
10
-
11
- headers = {
12
- "x-csrftoken": csrf,
13
- 'User-Agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36",
14
- 'Accept-Encoding': "identity",
15
- 'sec-ch-ua-full-version-list': "\"Google Chrome\";v=\"143.0.7499.146\", \"Chromium\";v=\"143.0.7499.146\", \"Not A(Brand\";v=\"24.0.0.0\"",
16
- 'sec-ch-ua-platform': "\"Linux\"",
17
- 'sec-ch-ua': "\"Google Chrome\";v=\"143\", \"Chromium\";v=\"143\", \"Not A(Brand\";v=\"24\"",
18
- 'sec-ch-ua-model': "\"\"",
19
- 'sec-ch-ua-mobile': "?0",
20
- 'x-ig-app-id': "936619743392459",
21
- 'x-requested-with': "XMLHttpRequest",
22
- 'x-instagram-ajax': "1031566424",
23
- 'x-asbd-id': "359341",
24
- 'x-ig-www-claim': "0",
25
- 'sec-ch-ua-platform-version': "\"\"",
26
- 'origin': "https://www.instagram.com",
27
- 'referer': "https://www.instagram.com/accounts/password/reset/"
28
- }
29
-
30
- response = await client.post(
31
- "https://www.instagram.com/api/v1/web/accounts/account_recovery_send_ajax/",
32
- data={"email_or_username": email},
33
- headers=headers
34
- )
35
-
36
- data = response.json()
37
- status_val = data.get("status")
38
- if status_val == "ok":
39
- return Result.taken()
40
- elif status_val == "fail":
41
- return Result.available()
42
- else:
43
- return Result.error("Unexpected response body, report it on github")
44
-
45
-
46
-
47
- async def validate_instagram(email: str) -> Result:
48
- return await _check(email)
File without changes