Skip to content

Commit b4d77ab

Browse files
authored
Merge pull request #312 from kaifcodec/add/email-osint-modules
Add: 3 new email_scan modules to adult(2), community(1) category
2 parents b9d7a77 + 6c1e5ca commit b4d77ab

File tree

3 files changed

+197
-0
lines changed

3 files changed

+197
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import httpx
2+
from user_scanner.core.result import Result
3+
4+
5+
async def _check(email: str) -> Result:
6+
url = "https://fapfolder.club/includes/ajax/core/signup.php"
7+
show_url = "https://fapfolder.club"
8+
9+
payload = {
10+
'username': "l0v3_d0n0t_3xist",
11+
'email': email,
12+
'email2': email,
13+
'password': "1",
14+
'field1': "",
15+
'privacy_agree': "on"
16+
}
17+
18+
headers = {
19+
'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Mobile Safari/537.36",
20+
'Accept': "application/json, text/javascript, */*; q=0.01",
21+
'Accept-Encoding': "identity",
22+
'sec-ch-ua-platform': '"Android"',
23+
'x-requested-with': "XMLHttpRequest",
24+
'sec-ch-ua': '"Chromium";v="146", "Not-A.Brand";v="24", "Google Chrome";v="146"',
25+
'sec-ch-ua-mobile': "?1",
26+
'origin': "https://fapfolder.club",
27+
'sec-fetch-site': "same-origin",
28+
'sec-fetch-mode': "cors",
29+
'sec-fetch-dest': "empty",
30+
'referer': "https://fapfolder.club/signup",
31+
'accept-language': "en-US,en;q=0.9"
32+
}
33+
34+
try:
35+
async with httpx.AsyncClient(timeout=7.0) as client:
36+
response = await client.post(url, data=payload, headers=headers)
37+
38+
if response.status_code == 403:
39+
return Result.error("403")
40+
41+
data = response.json()
42+
message = data.get("message", "")
43+
44+
if "belongs to an existing account" in message:
45+
return Result.taken(url=show_url)
46+
47+
if "password must be at least" in message:
48+
return Result.available(url=show_url)
49+
50+
return Result.error(f"Unexpected: {message[:50]}")
51+
52+
except Exception as e:
53+
return Result.error(e)
54+
55+
56+
async def validate_fapfolder(email: str) -> Result:
57+
return await _check(email)
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
import httpx
2+
import json
3+
from user_scanner.core.result import Result
4+
5+
async def _check(email: str) -> Result:
6+
url = "https://lovescape.com/api/front/auth/signup"
7+
show_url = "https://lovescape.com"
8+
9+
payload = {
10+
"username": "W3ak3n3dCut3n3ss3674",
11+
"email": email,
12+
"password": "igy8868yiyy",
13+
"recaptcha": "",
14+
"fingerprint": "",
15+
"modelName": "",
16+
"isPwa": False,
17+
"affiliateId": "",
18+
"trafficSource": "",
19+
"isUnThrottled": False,
20+
"hasActionParam": False,
21+
"source": "page_signup",
22+
"device": "mobile",
23+
"deviceName": "Android Mobile",
24+
"browser": "Chrome",
25+
"os": "Android",
26+
"locale": "en",
27+
"authType": "native",
28+
"ampl": {
29+
"ep": {
30+
"source": "page_signup",
31+
"startSessionUrl": "/create-ai-sex-girlfriend/style",
32+
"firstVisitedUrl": "/create-ai-sex-girlfriend/style",
33+
"referrerHost": "hakurei.us-cdnbo.org",
34+
"referrerId": "us-cdnbo",
35+
"signupUrl": "/signup",
36+
"page": "signup",
37+
"project": "Lovescape",
38+
"isCookieAccepted": True,
39+
"displayMode": "browser"
40+
},
41+
"up": {
42+
"source": "page_signup",
43+
"startSessionUrl": "/create-ai-sex-girlfriend/style",
44+
"firstVisitedUrl": "/create-ai-sex-girlfriend/style",
45+
"referrerHost": "hakurei.us-cdnbo.org",
46+
"referrerId": "us-cdnbo",
47+
"signupUrl": "/signup"
48+
},
49+
"device_id": "",
50+
"session_id": 1774884558258
51+
}
52+
}
53+
54+
headers = {
55+
'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Mobile Safari/537.36",
56+
'Accept': "application/json",
57+
'Accept-Encoding': "identity",
58+
'Content-Type': "text/plain;charset=UTF-8",
59+
'sec-ch-ua-platform': '"Android"',
60+
'sec-ch-ua': '"Chromium";v="146", "Not-A.Brand";v="24", "Google Chrome";v="146"',
61+
'sec-ch-ua-mobile': "?1",
62+
'Origin': "https://lovescape.com",
63+
'Referer': "https://lovescape.com/signup",
64+
'Priority': "u=1, i"
65+
}
66+
67+
try:
68+
async with httpx.AsyncClient(timeout=7.0) as client:
69+
response = await client.post(url, content=json.dumps(payload), headers=headers)
70+
71+
if response.status_code == 403:
72+
return Result.error("403")
73+
74+
data = response.json()
75+
error_msg = data.get("error", "")
76+
77+
if "Email is already used" in error_msg:
78+
return Result.taken(url=show_url)
79+
80+
if "recaptcha is required" in error_msg:
81+
return Result.available(url=show_url)
82+
83+
return Result.error(f"Unexpected: {error_msg}")
84+
85+
except Exception as e:
86+
return Result.error(e)
87+
88+
async def validate_lovescape(email: str) -> Result:
89+
return await _check(email)
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import httpx
2+
from user_scanner.core.result import Result
3+
4+
async def _check(email: str) -> Result:
5+
url = "https://auth.nextdoor.com/v2/token"
6+
show_url = "https://nextdoor.com"
7+
8+
payload = {
9+
'scope': "openid",
10+
'client_id': "NEXTDOOR-WEB",
11+
'login_type': "basic",
12+
'grant_type': "password",
13+
'username': email,
14+
'password': "vhj87uyguu77"
15+
}
16+
17+
headers = {
18+
'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Mobile Safari/537.36",
19+
'Accept': "application/json, text/plain, */*",
20+
'Accept-Encoding': "identity",
21+
'sec-ch-ua-platform': '"Android"',
22+
'sec-ch-ua': '"Chromium";v="146", "Not-A.Brand";v="24", "Google Chrome";v="146"',
23+
'sec-ch-ua-mobile': "?1",
24+
'Origin': "https://nextdoor.com",
25+
'Referer': "https://nextdoor.com/",
26+
'Priority': "u=1, i"
27+
}
28+
29+
try:
30+
async with httpx.AsyncClient(timeout=6.0) as client:
31+
response = await client.post(url, data=payload, headers=headers)
32+
33+
if response.status_code == 403:
34+
return Result.error("403")
35+
36+
data = response.json()
37+
error = data.get("error", "")
38+
39+
if error == "invalid_grant":
40+
return Result.taken(url=show_url)
41+
42+
if error == "not_found":
43+
return Result.available(url=show_url)
44+
45+
return Result.error(f"Unexpected: {error}")
46+
47+
except Exception as e:
48+
return Result.error(e)
49+
50+
async def validate_nextdoor(email: str) -> Result:
51+
return await _check(email)

0 commit comments

Comments
 (0)