user-scanner 1.1.0.9__py3-none-any.whl → 1.1.1.0__py3-none-any.whl
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.
- user_scanner/email_scan/social/instagram.py +55 -40
- user_scanner/version.json +1 -1
- {user_scanner-1.1.0.9.dist-info → user_scanner-1.1.1.0.dist-info}/METADATA +9 -10
- {user_scanner-1.1.0.9.dist-info → user_scanner-1.1.1.0.dist-info}/RECORD +7 -7
- {user_scanner-1.1.0.9.dist-info → user_scanner-1.1.1.0.dist-info}/WHEEL +0 -0
- {user_scanner-1.1.0.9.dist-info → user_scanner-1.1.1.0.dist-info}/entry_points.txt +0 -0
- {user_scanner-1.1.0.9.dist-info → user_scanner-1.1.1.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,47 +1,62 @@
|
|
|
1
1
|
import httpx
|
|
2
|
+
import re
|
|
2
3
|
from user_scanner.core.result import Result
|
|
3
4
|
|
|
4
5
|
|
|
5
|
-
async def _check(email):
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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}")
|
|
45
60
|
|
|
46
61
|
|
|
47
62
|
async def validate_instagram(email: str) -> Result:
|
user_scanner/version.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: user-scanner
|
|
3
|
-
Version: 1.1.0
|
|
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
|

|
|
18
18
|
<p align="center">
|
|
19
|
-
<img src="https://img.shields.io/badge/Version-1.1.0
|
|
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
|
-
##
|
|
220
|
+
## 🛠️ Troubleshooting
|
|
221
221
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
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
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
user_scanner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
user_scanner/__main__.py,sha256=6ecuWBMKZQLwmz7hSYcOk2uwSxj3jpYqYVI-2ti0zmA,10848
|
|
3
3
|
user_scanner/config.json,sha256=QZoyeipL-558-lO5bwmAImgBJLG2za3lritYwoQ5kb0,33
|
|
4
|
-
user_scanner/version.json,sha256=
|
|
4
|
+
user_scanner/version.json,sha256=tu39HeoUQ--xbWKdb_KxjQWmtW0JJJnj0q9EDrn0e2Y,49
|
|
5
5
|
user_scanner/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
user_scanner/cli/banner.py,sha256=3b4PIggnJrmxF4DfbuPMqSavpwNl0m5uedaOL2SXN3o,766
|
|
7
7
|
user_scanner/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -63,7 +63,7 @@ user_scanner/email_scan/shopping/naturabuy.py,sha256=vMcoG4JK7-WhpYTTGQ5wc55guUi
|
|
|
63
63
|
user_scanner/email_scan/shopping/vivino.py,sha256=vdJETvtQVPXX5o02AwkS9Jw7FIl350SUADUr1f1nOak,1588
|
|
64
64
|
user_scanner/email_scan/social/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
65
65
|
user_scanner/email_scan/social/facebook.py,sha256=dnCDZfqRYLXDT7GjJQ-bSqGfC-rO8G9O7pu8dUse7Nw,4475
|
|
66
|
-
user_scanner/email_scan/social/instagram.py,sha256=
|
|
66
|
+
user_scanner/email_scan/social/instagram.py,sha256=E0CgDIe2tP5covSTDZxfde4uJeHaGmX1Jt-ynawLdLI,2358
|
|
67
67
|
user_scanner/email_scan/social/mastodon.py,sha256=Qm13Nl_9j_7sHlc4wN6QF9jgfLlaxbOVgacvXK3hLRY,2478
|
|
68
68
|
user_scanner/email_scan/social/x.py,sha256=WoHaecbR1qGte-mwyODsY0YGNf-iRZyGS7s9fw0SQgg,1475
|
|
69
69
|
user_scanner/email_scan/sports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -129,8 +129,8 @@ user_scanner/user_scan/social/youtube.py,sha256=UPu584teg75P7FT05RFG3nobbHgPmzjr
|
|
|
129
129
|
user_scanner/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
130
130
|
user_scanner/utils/update.py,sha256=Rj3kLuUrQ-LlKGB7bkndqVjj0IUqugbDSj2SUrPRidE,936
|
|
131
131
|
user_scanner/utils/updater_logic.py,sha256=tl6kbKL02DrP-R1dkQWhHr12juVDgkJZZvKAfbI1ruU,2381
|
|
132
|
-
user_scanner-1.1.0.
|
|
133
|
-
user_scanner-1.1.0.
|
|
134
|
-
user_scanner-1.1.0.
|
|
135
|
-
user_scanner-1.1.0.
|
|
136
|
-
user_scanner-1.1.0.
|
|
132
|
+
user_scanner-1.1.1.0.dist-info/entry_points.txt,sha256=XqU3kssYZ0vXaPy5qYUOTCu4u-48Xie7QWFpBCYc7Nc,59
|
|
133
|
+
user_scanner-1.1.1.0.dist-info/licenses/LICENSE,sha256=XH1QyQG68zo1opDIZHTHcTAbe9XMzewvTaFTukcN9vc,1061
|
|
134
|
+
user_scanner-1.1.1.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
135
|
+
user_scanner-1.1.1.0.dist-info/METADATA,sha256=QBzh-Q6M7XUbAW_AGnV32_MekWuE3vdpNVpk-9cpawo,8662
|
|
136
|
+
user_scanner-1.1.1.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|