user-scanner 1.1.0.7__py3-none-any.whl → 1.1.0.9__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.
@@ -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
 
@@ -0,0 +1,48 @@
1
+ import httpx
2
+ from user_scanner.core.result import Result
3
+
4
+
5
+ async def _check(email: str) -> Result:
6
+ url = "https://account.envato.com/api/public/validate_email"
7
+
8
+ headers = {
9
+ 'User-Agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36",
10
+ 'Accept': "application/json",
11
+ 'Content-Type': "application/json",
12
+ 'x-client-version': "3.6.0",
13
+ 'origin': "https://elements.envato.com",
14
+ 'referer': "https://elements.envato.com/",
15
+ 'accept-language': "en-US,en;q=0.9",
16
+ }
17
+
18
+ payload = {
19
+ "language_code": "en",
20
+ "email": email
21
+ }
22
+
23
+ try:
24
+ async with httpx.AsyncClient(timeout=5.0) as client:
25
+ response = await client.post(url, json=payload, headers=headers)
26
+
27
+ if response.status_code == 204:
28
+ return Result.available()
29
+
30
+ if response.status_code == 422:
31
+ data = response.json()
32
+ error_msg = data.get("error_message", "").lower()
33
+
34
+ if "already in use" in error_msg:
35
+ return Result.taken()
36
+
37
+ return Result.error("Unexpected response body, report it via GitHub issues")
38
+
39
+ return Result.error(f"HTTP {response.status_code}")
40
+
41
+ except httpx.TimeoutException:
42
+ return Result.error("Connection timed out")
43
+ except Exception as e:
44
+ return Result.error(f"Unexpected Exception: {e}")
45
+
46
+
47
+ async def validate_envato(email: str) -> Result:
48
+ return await _check(email)
@@ -48,7 +48,7 @@ async def _check(email: str) -> Result:
48
48
  return Result.available()
49
49
 
50
50
  else:
51
- return Result.error(data)
51
+ return Result.error("Unexpected response body, report it via GitHub issues")
52
52
 
53
53
  except httpx.TimeoutException:
54
54
  return Result.error("Connection timed out")
@@ -58,11 +58,3 @@ async def _check(email: str) -> Result:
58
58
 
59
59
  async def validate_lastfm(email: str) -> Result:
60
60
  return await _check(email)
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
@@ -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:
user_scanner/version.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "1.1.0.7",
2
+ "version": "1.1.0.9",
3
3
  "version_type": "pypi"
4
4
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: user-scanner
3
- Version: 1.1.0.7
3
+ Version: 1.1.0.9
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.7-blueviolet?style=for-the-badge&logo=github" />
19
+ <img src="https://img.shields.io/badge/Version-1.1.0.9-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" />
@@ -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=XzIRMhowsYvoCeAAw-nJ-162Hc10ISdT4bdnwjRRcwQ,49
4
+ user_scanner/version.json,sha256=KFjwefEB6vXltSpe6ECEEOQfRtQyu7jTULTziTVh7ng,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
@@ -13,10 +13,12 @@ user_scanner/core/result.py,sha256=VCIJvte_SXCq59j2o3wQsQYpmXjHTrGKy8Ayn211Rkc,4
13
13
  user_scanner/core/version.py,sha256=k1_KTZdRLKBAxp8_PtOhTAtj8mBO_AUnUGdqI4epypY,855
14
14
  user_scanner/email_scan/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  user_scanner/email_scan/adult/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- user_scanner/email_scan/adult/pornhub.py,sha256=8OF-0h_FntUv1Pi0eT801Bhn6Uhd1dh_fD4lfbKV6OY,2134
16
+ user_scanner/email_scan/adult/babestation.py,sha256=LjaluOTsVjtjPA8aZzW28KirxMN6aV2Ycxt7or4IgT8,1662
17
+ user_scanner/email_scan/adult/flirtbate.py,sha256=jyTymWcw4ZHbz5hoyomvDceDxhjFcN7ePlRsx1KZQPU,1473
18
+ user_scanner/email_scan/adult/pornhub.py,sha256=GZ0dOTl6r-W28BOrQJgso4SyraAqimEBTFL2mr9-5GI,2136
17
19
  user_scanner/email_scan/adult/sexvid.py,sha256=Hn-C1kelSHaeh6f6q6xzy8lm0PNs-7saLNsBaD-TJmc,1624
18
- user_scanner/email_scan/adult/xnxx.py,sha256=WiKn4Vkc5FC1HXry9N8SN-dsTdm1qq0NS6KUcPRmMMY,1728
19
- user_scanner/email_scan/adult/xvideos.py,sha256=tx0PZOZ66KHDmrnvd1RABCnqCUIdKfCPgAbogBtX69A,1769
20
+ user_scanner/email_scan/adult/xnxx.py,sha256=cBBhqswaS1IE6M7LDy49v_z13GaEC-Q9ZPh3og7plEo,1741
21
+ user_scanner/email_scan/adult/xvideos.py,sha256=69jT-7D93fVjYIdOlv4sae9_rtyFCZHZ0b5ka7n-s0s,1771
20
22
  user_scanner/email_scan/community/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
23
  user_scanner/email_scan/community/quora.py,sha256=8u1o1-kMjQnUY9s8O1fsMqqB6f4IkJOe_6Zr1tDoidk,4019
22
24
  user_scanner/email_scan/community/stackoverflow.py,sha256=Eq3kTXohmp2XodVLaR8ujWWCTjkTm1HXy-Yew4LzOGA,1608
@@ -28,6 +30,7 @@ user_scanner/email_scan/dev/bitbucket.py,sha256=bPltCEcIE4jO68zLVTKw3sC2To_NA0Fk
28
30
  user_scanner/email_scan/dev/codecademy.py,sha256=-ElwmawP3anLi_JSW9j4wJBBxiANB0SpOdsO0HNG-VM,1725
29
31
  user_scanner/email_scan/dev/codepen.py,sha256=7R0i4eNQQrO8cFp6A3aUyW_kwc-GeHNgt9bPCHeNFZo,1851
30
32
  user_scanner/email_scan/dev/devrant.py,sha256=KEp24JsAk_OJ5dCN20PQ_BV2_lVZWipy2h-zoBudj7I,1550
33
+ user_scanner/email_scan/dev/envato.py,sha256=auWstkpkufEzfSb89ko-cEkK3TQsKePlCu7VyondC2A,1547
31
34
  user_scanner/email_scan/dev/github.py,sha256=1X735qnwokbuuzfo6oJ7JqcaHPH0JFzz-MzYIOqnVnE,3162
32
35
  user_scanner/email_scan/dev/huggingface.py,sha256=GjFNkuVZ_8eFgs9OrFakhiEb8pVRwEJO-tyx32IQMns,1229
33
36
  user_scanner/email_scan/dev/leetcode.py,sha256=R728E0fVI-f8_WFCHBEI0Oe18bqg6UgRSKX9psQAkEU,2277
@@ -45,7 +48,7 @@ user_scanner/email_scan/hosting/render.py,sha256=6G66ftbCzSW_taMoqIyF9CQ9sVIL7PD
45
48
  user_scanner/email_scan/learning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
49
  user_scanner/email_scan/learning/duolingo.py,sha256=rLKLH-iwCvNtCxPd7UZcgTXssOzVKaDLl3d8TePYjHo,1297
47
50
  user_scanner/email_scan/music/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
- user_scanner/email_scan/music/lastfm.py,sha256=uKzWBaWydX3M-y2wj8adqKllrhIrALicSFwMuos4ZB8,2013
51
+ user_scanner/email_scan/music/lastfm.py,sha256=oKTYELiu4I9OUmSe3Cv-w00lx8lFACeXpO8Yo3OoDjM,2056
49
52
  user_scanner/email_scan/music/spotify.py,sha256=jzFa9p1IWnAYDK7k7NTJ7ipmrGqmK_PVrUQ4otjldkU,3659
50
53
  user_scanner/email_scan/other/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
54
  user_scanner/email_scan/other/eventbrite.py,sha256=WLSN5xTlG9YkZbP4lyyE8Ob0NyGcv_T9BVb5bQ-SzaE,1748
@@ -53,9 +56,8 @@ user_scanner/email_scan/pipeline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
53
56
  user_scanner/email_scan/pipeline/axonaut.py,sha256=Cv-ntMRMdVj1cDDwXOFsp_pX1m2BHHfZRyDGvWQ_8dI,1332
54
57
  user_scanner/email_scan/pipeline/hubspot.py,sha256=OOYHqpjKh525iJi9_txuZGyX97tvZ-d0Osq9iP_LC-k,1648
55
58
  user_scanner/email_scan/pipeline/insightly.py,sha256=JdoktrXj3E6WmyMf_6VTD13YCxp4908MXALF5_QkIV8,1518
56
- user_scanner/email_scan/pipeline/zoho.py,sha256=tGnLqzLwqb1eJF0qmWzG-T9g0g3Ax2C6ERG2N14aeo8,2098
59
+ user_scanner/email_scan/pipeline/zoho.py,sha256=QDedCnJ8uENGtwJz8QCTzQ-8HYkBxdYKmv1GZ2Mw9eU,2189
57
60
  user_scanner/email_scan/shopping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
- user_scanner/email_scan/shopping/envato.py,sha256=ntMZKLYHhgJVC_QrWs2UmzlPi1MbMxjgtGig9MSH3m0,1493
59
61
  user_scanner/email_scan/shopping/flipkart.py,sha256=wMQJ1VIawhM6W0UQCThcIUtaYN7QeexvJSRSeXS4l04,1879
60
62
  user_scanner/email_scan/shopping/naturabuy.py,sha256=vMcoG4JK7-WhpYTTGQ5wc55guUigFzHbG19zgaf8oJU,1517
61
63
  user_scanner/email_scan/shopping/vivino.py,sha256=vdJETvtQVPXX5o02AwkS9Jw7FIl350SUADUr1f1nOak,1588
@@ -127,8 +129,8 @@ user_scanner/user_scan/social/youtube.py,sha256=UPu584teg75P7FT05RFG3nobbHgPmzjr
127
129
  user_scanner/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
130
  user_scanner/utils/update.py,sha256=Rj3kLuUrQ-LlKGB7bkndqVjj0IUqugbDSj2SUrPRidE,936
129
131
  user_scanner/utils/updater_logic.py,sha256=tl6kbKL02DrP-R1dkQWhHr12juVDgkJZZvKAfbI1ruU,2381
130
- user_scanner-1.1.0.7.dist-info/entry_points.txt,sha256=XqU3kssYZ0vXaPy5qYUOTCu4u-48Xie7QWFpBCYc7Nc,59
131
- user_scanner-1.1.0.7.dist-info/licenses/LICENSE,sha256=XH1QyQG68zo1opDIZHTHcTAbe9XMzewvTaFTukcN9vc,1061
132
- user_scanner-1.1.0.7.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
133
- user_scanner-1.1.0.7.dist-info/METADATA,sha256=4nopjSPw1hvqIUgRt2oJene-5R-cEiTYJE6CzfBlyGk,8768
134
- user_scanner-1.1.0.7.dist-info/RECORD,,
132
+ user_scanner-1.1.0.9.dist-info/entry_points.txt,sha256=XqU3kssYZ0vXaPy5qYUOTCu4u-48Xie7QWFpBCYc7Nc,59
133
+ user_scanner-1.1.0.9.dist-info/licenses/LICENSE,sha256=XH1QyQG68zo1opDIZHTHcTAbe9XMzewvTaFTukcN9vc,1061
134
+ user_scanner-1.1.0.9.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
135
+ user_scanner-1.1.0.9.dist-info/METADATA,sha256=IkO81lV8AMf8RV7u6uFtFVJTO-5_V7DWtFXrq98Yyh8,8768
136
+ user_scanner-1.1.0.9.dist-info/RECORD,,
@@ -1,41 +0,0 @@
1
- import httpx
2
- from user_scanner.core.result import Result
3
-
4
- async def _check(email: str) -> Result:
5
- headers = {
6
- 'User-Agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36",
7
- 'Accept': 'application/json',
8
- 'Accept-Language': 'en-US,en;q=0.9',
9
- 'Content-Type': 'application/x-www-form-urlencoded',
10
- 'Origin': 'https://account.envato.com',
11
- 'Referer': 'https://account.envato.com/sign_up',
12
- }
13
-
14
- payload = {'email': email}
15
-
16
- try:
17
- async with httpx.AsyncClient(timeout=10.0) as client:
18
- response = await client.post(
19
- 'https://account.envato.com/api/validate_email',
20
- headers=headers,
21
- data=payload
22
- )
23
-
24
- if 'Email is already in use' in response.text:
25
- return Result.taken()
26
-
27
- if response.status_code == 200:
28
- return Result.available()
29
-
30
- if "Page designed by Kotulsky" in response.text or response.status_code == 429:
31
- return Result.error("Rate limit or Cloudflare challenge detected")
32
-
33
- return Result.error(f"Unexpected response: {response.status_code}")
34
-
35
- except httpx.TimeoutException:
36
- return Result.error("Connection timed out")
37
- except Exception as e:
38
- return Result.error(str(e))
39
-
40
- async def validate_envato(email: str) -> Result:
41
- return await _check(email)