├── holehe
├── __init__.py
├── modules
│ ├── __init__.py
│ ├── cms
│ │ ├── __init__.py
│ │ ├── gravatar.py
│ │ ├── atlassian.py
│ │ ├── voxmedia.py
│ │ └── wordpress.py
│ ├── forum
│ │ ├── __init__.py
│ │ ├── raidforums.py
│ │ ├── cracked_to.py
│ │ ├── koditv.py
│ │ ├── cpahero.py
│ │ ├── mybb.py
│ │ └── cpaelites.py
│ ├── jobs
│ │ ├── __init__.py
│ │ ├── coroflot.py
│ │ ├── freelancer.py
│ │ └── seoclerks.py
│ ├── mails
│ │ ├── __init__.py
│ │ ├── laposte.py
│ │ ├── protonmail.py
│ │ ├── mail_ru.py
│ │ └── google.py
│ ├── medias
│ │ ├── __init__.py
│ │ ├── sporcle.py
│ │ ├── komoot.py
│ │ ├── flickr.py
│ │ ├── ello.py
│ │ └── rambler.py
│ ├── music
│ │ ├── __init__.py
│ │ ├── lastfm.py
│ │ ├── smule.py
│ │ ├── spotify.py
│ │ ├── blip.py
│ │ └── tunefind.py
│ ├── osint
│ │ ├── __init__.py
│ │ └── rocketreach.py
│ ├── porn
│ │ ├── __init__.py
│ │ ├── xvideos.py
│ │ ├── redtube.py
│ │ └── pornhub.py
│ ├── sport
│ │ ├── __init__.py
│ │ └── bodybuilding.py
│ ├── company
│ │ ├── __init__.py
│ │ └── aboutme.py
│ ├── crowfunding
│ │ ├── __init__.py
│ │ └── buymeacoffee.py
│ ├── learning
│ │ ├── __init__.py
│ │ ├── quora.py
│ │ └── diigo.py
│ ├── medical
│ │ ├── __init__.py
│ │ ├── caringbridge.py
│ │ └── sevencups.py
│ ├── payment
│ │ ├── __init__.py
│ │ └── venmo.py
│ ├── products
│ │ ├── __init__.py
│ │ ├── samsung.py
│ │ ├── nike.py
│ │ └── eventbrite.py
│ ├── programing
│ │ ├── __init__.py
│ │ ├── replit.py
│ │ ├── github.py
│ │ ├── devrant.py
│ │ ├── codecademy.py
│ │ ├── teamtreehouse.py
│ │ └── codepen.py
│ ├── real_estate
│ │ ├── __init__.py
│ │ └── vrbo.py
│ ├── shopping
│ │ ├── __init__.py
│ │ ├── armurerieauxerre.py
│ │ ├── envato.py
│ │ ├── dominosfr.py
│ │ ├── ebay.py
│ │ ├── deliveroo.py
│ │ ├── amazon.py
│ │ ├── naturabuy.py
│ │ └── vivino.py
│ ├── software
│ │ ├── __init__.py
│ │ ├── office365.py
│ │ ├── firefox.py
│ │ ├── docker.py
│ │ ├── archive.py
│ │ ├── lastpass.py
│ │ ├── issuu.py
│ │ └── adobe.py
│ ├── transport
│ │ ├── __init__.py
│ │ └── blablacar.py
│ ├── productivity
│ │ ├── __init__.py
│ │ ├── anydo.py
│ │ └── evernote.py
│ └── social_media
│ │ ├── __init__.py
│ │ ├── twitter.py
│ │ ├── pinterest.py
│ │ ├── fanpop.py
│ │ ├── plurk.py
│ │ ├── tellonym.py
│ │ ├── patreon.py
│ │ ├── imgur.py
│ │ ├── snapchat.py
│ │ ├── bitmoji.py
│ │ ├── vsco.py
│ │ ├── parler.py
│ │ ├── tumblr.py
│ │ ├── taringa.py
│ │ ├── wattpad.py
│ │ ├── strava.py
│ │ ├── xing.py
│ │ ├── myspace.py
│ │ ├── instagram.py
│ │ └── crevado.py
└── instruments.py
├── .gitignore
├── FUNDING.yml
├── .github
├── FUNDING.yml
└── workflows
│ └── codeql-analysis.yml
└── setup.py
/holehe/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/cms/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/forum/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/jobs/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/mails/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/medias/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/music/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/osint/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/porn/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/sport/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/company/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/crowfunding/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/learning/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/medical/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/payment/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/products/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/programing/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/real_estate/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/shopping/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/software/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/transport/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/productivity/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/holehe/modules/social_media/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.pyc
2 | test.py
3 | todolist
4 | __pycache__
5 | holehe.egg-info
6 | .idea
7 | venv
--------------------------------------------------------------------------------
/holehe/instruments.py:
--------------------------------------------------------------------------------
1 | import trio
2 | from tqdm import tqdm
3 |
4 | class TrioProgress(trio.abc.Instrument):
5 | def __init__(self, total):
6 | self.tqdm = tqdm(total=total)
7 |
8 | def task_exited(self, task):
9 | if task.name.split(".")[-1] == "launch_module":
10 | self.tqdm.update(1)
--------------------------------------------------------------------------------
/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: ['https://btc.com/1FHDM49QfZX6pJmhjLE5tB2K6CaTLMZpXZ'] # Replace with up to 4 custom sponsorship URLs e.g., ['https://btc.com/1FHDM49QfZX6pJmhjLE5tB2K6CaTLMZpXZ']
13 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: ['https://btc.com/1FHDM49QfZX6pJmhjLE5tB2K6CaTLMZpXZ'] # Replace with up to 4 custom sponsorship URLs e.g., ['https://btc.com/1FHDM49QfZX6pJmhjLE5tB2K6CaTLMZpXZ']
13 |
--------------------------------------------------------------------------------
/setup.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | from setuptools import setup, find_packages
3 |
4 |
5 | setup(
6 | name='holehe',
7 | version="1.58.9.3",
8 | packages=find_packages(),
9 | author="megadose",
10 | author_email="megadose@protonmail.com",
11 | install_requires=["termcolor","bs4","httpx","trio","argparse","tqdm"],
12 | description="holehe allows you to check if the mail is used on different sites like twitter, instagram , snapchat and will retrieve information on sites with the forgotten password function.",
13 | include_package_data=True,
14 | url='http://github.com/megadose/holehe',
15 | entry_points = {'console_scripts': ['holehe = holehe.core:main']},
16 | classifiers=[
17 | "Programming Language :: Python",
18 | "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
19 | ],
20 | )
21 |
--------------------------------------------------------------------------------
/holehe/modules/software/office365.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def office365(email, client, out):
6 | name = "office365"
7 | domain = "office365.com"
8 | method = "other"
9 | frequent_rate_limit=False
10 |
11 | user_agent = 'Microsoft Office/16.0 (Windows NT 10.0; Microsoft Outlook 16.0.12026; Pro)'
12 | headers = {'User-Agent': user_agent, 'Accept': 'application/json'}
13 | r = await client.get(
14 | 'https://outlook.office365.com/autodiscover/autodiscover.json/v1.0/{}?Protocol=Autodiscoverv1'.format(
15 | email),
16 | headers=headers,
17 | allow_redirects=False)
18 | if r.status_code == 200:
19 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
20 | "rateLimit": False,
21 | "exists": True,
22 | "emailrecovery": None,
23 | "phoneNumber": None,
24 | "others": None})
25 | else:
26 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
27 | "rateLimit": False,
28 | "exists": False,
29 | "emailrecovery": None,
30 | "phoneNumber": None,
31 | "others": None})
32 |
--------------------------------------------------------------------------------
/holehe/modules/software/firefox.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def firefox(email, client, out):
6 | name = "firefox"
7 | domain = "firefox.com"
8 | method = "register"
9 | frequent_rate_limit=False
10 |
11 | req = await client.post(
12 | "https://api.accounts.firefox.com/v1/account/status",
13 | data={
14 | "email": email})
15 | if "false" in req.text:
16 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
17 | "rateLimit": False,
18 | "exists": False,
19 | "emailrecovery": None,
20 | "phoneNumber": None,
21 | "others": None})
22 | elif "true" in req.text:
23 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
24 | "rateLimit": False,
25 | "exists": True,
26 | "emailrecovery": None,
27 | "phoneNumber": None,
28 | "others": None})
29 | else:
30 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
31 | "rateLimit": True,
32 | "exists": False,
33 | "emailrecovery": None,
34 | "phoneNumber": None,
35 | "others": None})
36 |
--------------------------------------------------------------------------------
/holehe/modules/sport/bodybuilding.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def bodybuilding(email, client, out):
6 | name = "bodybuilding"
7 | domain = "bodybuilding.com"
8 | method = "register"
9 | frequent_rate_limit=False
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["firefox"]),
13 | 'Accept': 'application/json, text/plain, */*',
14 | 'Accept-Language': 'en,en-US;q=0.5',
15 | 'Origin': 'https://www.bodybuilding.com',
16 | 'DNT': '1',
17 | 'Connection': 'keep-alive',
18 | 'Referer': 'https://www.bodybuilding.com/',
19 | }
20 |
21 | response = await client.head('https://api.bodybuilding.com/profile/email/' + email, headers=headers)
22 | if response.status_code == 200:
23 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
24 | "rateLimit": False,
25 | "exists": True,
26 | "emailrecovery": None,
27 | "phoneNumber": None,
28 | "others": None})
29 | else:
30 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
31 | "rateLimit": False,
32 | "exists": False,
33 | "emailrecovery": None,
34 | "phoneNumber": None,
35 | "others": None})
36 |
--------------------------------------------------------------------------------
/holehe/modules/social_media/twitter.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def twitter(email, client, out):
6 | name = "twitter"
7 | domain = "twitter.com"
8 | method = "register"
9 | frequent_rate_limit=False
10 |
11 | try:
12 | req = await client.get(
13 | "https://api.twitter.com/i/users/email_available.json",
14 | params={
15 | "email": email})
16 | if req.json()["taken"]:
17 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
18 | "rateLimit": False,
19 | "exists": True,
20 | "emailrecovery": None,
21 | "phoneNumber": None,
22 | "others": None})
23 | else:
24 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
25 | "rateLimit": False,
26 | "exists": False,
27 | "emailrecovery": None,
28 | "phoneNumber": None,
29 | "others": None})
30 | except :
31 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
32 | "rateLimit": True,
33 | "exists": False,
34 | "emailrecovery": None,
35 | "phoneNumber": None,
36 | "others": None})
37 |
--------------------------------------------------------------------------------
/holehe/modules/social_media/pinterest.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def pinterest(email, client, out):
6 | name = "pinterest"
7 | domain = "pinterest.com"
8 | method = "register"
9 | frequent_rate_limit=False
10 |
11 | req = await client.get(
12 | "https://www.pinterest.com/_ngjs/resource/EmailExistsResource/get/",
13 | params={
14 | "source_url": "/",
15 | "data": '{"options": {"email": "' + email + '"}, "context": {}}'})
16 | if 'source_field' in str(req.json()["resource_response"]["data"]) :
17 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
18 | "rateLimit": True,
19 | "exists": False,
20 | "emailrecovery": None,
21 | "phoneNumber": None,
22 | "others": None})
23 |
24 | elif req.json()["resource_response"]["data"]:
25 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
26 | "rateLimit": False,
27 | "exists": True,
28 | "emailrecovery": None,
29 | "phoneNumber": None,
30 | "others": None})
31 | else:
32 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
33 | "rateLimit": False,
34 | "exists": False,
35 | "emailrecovery": None,
36 | "phoneNumber": None,
37 | "others": None})
38 |
--------------------------------------------------------------------------------
/holehe/modules/software/docker.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 | async def docker(email, client, out):
5 | name="docker"
6 | domain = "docker.com"
7 | method = "register"
8 | frequent_rate_limit=False
9 |
10 | headers = {
11 | 'User-Agent': random.choice(ua["browsers"]["chrome"]),
12 | 'Accept': 'application/json',
13 | 'Accept-Language': 'en,en-US;q=0.5',
14 | 'Referer': 'https://hub.docker.com/signup',
15 | 'Content-Type': 'application/json',
16 | 'X-CSRFToken': '',
17 | 'Origin': 'https://hub.docker.com',
18 | 'DNT': '1',
19 | 'Connection': 'keep-alive',
20 | }
21 |
22 | data = '{"email":"'+email+'","password":"","recaptcha_response":"","redirect_value":"","subscribe":true,"username":""}'
23 |
24 | response = await client.post('https://hub.docker.com/v2/users/signup/', headers=headers, data=data)
25 | if "This email is already in use." in response.text:
26 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
27 | "rateLimit": False,
28 | "exists": True,
29 | "emailrecovery": None,
30 | "phoneNumber": None,
31 | "others": None})
32 | else:
33 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
34 | "rateLimit": False,
35 | "exists": False,
36 | "emailrecovery": None,
37 | "phoneNumber": None,
38 | "others": None})
39 |
--------------------------------------------------------------------------------
/holehe/modules/shopping/armurerieauxerre.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def armurerieauxerre(email, client, out):
6 | name = "armurerieauxerre"
7 | domain = "armurerie-auxerre.com"
8 | method = "register"
9 | frequent_rate_limit=False
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["chrome"]),
13 | 'Accept': '*/*',
14 | 'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
15 | 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
16 | 'X-Requested-With': 'XMLHttpRequest',
17 | 'Origin': 'https://www.armurerie-auxerre.com',
18 | 'DNT': '1',
19 | 'Connection': 'keep-alive',
20 | 'TE': 'Trailers',
21 | }
22 |
23 | data = {
24 | 'mail': email
25 | }
26 |
27 | req = await client.post('https://www.armurerie-auxerre.com/customer/Email/email/', headers=headers, data=data)
28 | if req.text == "exist":
29 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
30 | "rateLimit": False,
31 | "exists": True,
32 | "emailrecovery": None,
33 | "phoneNumber": None,
34 | "others": None})
35 | else:
36 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
37 | "rateLimit": False,
38 | "exists": False,
39 | "emailrecovery": None,
40 | "phoneNumber": None,
41 | "others": None})
42 |
--------------------------------------------------------------------------------
/holehe/modules/mails/laposte.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def laposte(email, client, out):
6 | name = "laposte"
7 | domain = "laposte.fr"
8 | method= "register"
9 | frequent_rate_limit=False
10 |
11 | headers = {
12 | 'Origin': 'https://www.laposte.fr',
13 | 'User-Agent': random.choice(ua["browsers"]["chrome"]),
14 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
15 | 'Referer': 'https://www.laposte.fr/authentification',
16 | 'Accept-Language': 'fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',
17 | }
18 |
19 | data = {
20 | 'email': email,
21 | 'customerId': '',
22 | 'tunnelSteps': ''
23 | }
24 | try:
25 | response = await client.post('https://www.laposte.fr/authentification', headers=headers, data=data)
26 | post_soup = BeautifulSoup(response.content, 'html.parser')
27 | l = post_soup.find_all('span', id="wrongEmail")
28 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
29 | "rateLimit": False,
30 | "exists": l != [],
31 | "emailrecovery": None,
32 | "phoneNumber": None,
33 | "others": None})
34 | except :
35 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
36 | "rateLimit": True,
37 | "exists": False,
38 | "emailrecovery": None,
39 | "phoneNumber": None,
40 | "others": None})
41 |
--------------------------------------------------------------------------------
/holehe/modules/cms/gravatar.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def gravatar(email, client, out):
6 | name = "gravatar"
7 | domain = "gravatar.com"
8 | method="other"
9 | frequent_rate_limit=False
10 |
11 | hashed_name = hashlib.md5(email.encode()).hexdigest()
12 | r = await client.get('https://gravatar.com/{hashed_name}.json')
13 | if r.status_code != 200:
14 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
15 | "rateLimit": False,
16 | "exists": False,
17 | "emailrecovery": None,
18 | "phoneNumber": None,
19 | "others": None})
20 | return None
21 | else:
22 | try:
23 | data = r.json()
24 | name = data['entry'][0]['name'].get('formatted')
25 | others = {
26 | 'FullName': name,
27 | }
28 |
29 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
30 | "rateLimit": False,
31 | "exists": True,
32 | "emailrecovery": None,
33 | "phoneNumber": None,
34 | "others": others})
35 | return None
36 | except BaseException:
37 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
38 | "rateLimit": True,
39 | "exists": False,
40 | "emailrecovery": None,
41 | "phoneNumber": None,
42 | "others": None})
43 | return None
44 |
--------------------------------------------------------------------------------
/holehe/modules/medias/sporcle.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def sporcle(email, client, out):
6 | name = "sporcle"
7 | domain = "sporcle.com"
8 | method= "register"
9 | frequent_rate_limit=False
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["firefox"]),
13 | 'Accept': '*/*',
14 | 'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
15 | 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
16 | 'X-Requested-With': 'XMLHttpRequest',
17 | 'Origin': 'https://www.sporcle.com',
18 | 'Connection': 'keep-alive',
19 | }
20 |
21 | data = {
22 | 'email': str(email),
23 | 'password1': '',
24 | 'password2': '',
25 | 'handle': '',
26 | 'humancheck': '',
27 | 'reg_path': 'main_header_join',
28 | 'ref_page': '',
29 | 'querystring': ''
30 | }
31 |
32 | response = await client.post('https://www.sporcle.com/auth/ajax/verify.php', headers=headers, data=data)
33 | if "account already exists with this email" in response.text:
34 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
35 | "rateLimit": False,
36 | "exists": True,
37 | "emailrecovery": None,
38 | "phoneNumber": None,
39 | "others": None})
40 | else:
41 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
42 | "rateLimit": False,
43 | "exists": False,
44 | "emailrecovery": None,
45 | "phoneNumber": None,
46 | "others": None})
47 |
--------------------------------------------------------------------------------
/holehe/modules/social_media/fanpop.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def fanpop(email, client, out):
6 | name = "fanpop"
7 | domain = "fanpop.com"
8 | method = "register"
9 | frequent_rate_limit=False
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["firefox"]),
13 | 'Accept': 'text/html, */*; q=0.01',
14 | 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
15 | 'X-Requested-With': 'XMLHttpRequest',
16 | 'Origin': 'https://www.fanpop.com',
17 | 'Connection': 'keep-alive',
18 | 'Referer': 'https://www.fanpop.com/register',
19 | }
20 |
21 | data = {
22 | 'type': 'register',
23 | 'user[name]': '',
24 | 'user[password]': '',
25 | 'user[email]': email,
26 | 'agreement': '',
27 | 'PersistentCookie': 'PersistentCookie',
28 | 'redirect_url': 'https://www.fanpop.com/',
29 | 'submissiontype': 'register'
30 | }
31 |
32 | response = await client.post('https://www.fanpop.com/login/superlogin', headers=headers, data=data)
33 |
34 | if "already registered" in response.text:
35 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
36 | "rateLimit": False,
37 | "exists": True,
38 | "emailrecovery": None,
39 | "phoneNumber": None,
40 | "others": None})
41 | else:
42 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
43 | "rateLimit": False,
44 | "exists": False,
45 | "emailrecovery": None,
46 | "phoneNumber": None,
47 | "others": None})
48 |
--------------------------------------------------------------------------------
/holehe/modules/medias/komoot.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def komoot(email, client, out):
6 | name = "komoot"
7 | domain = "komoot.com"
8 | method= "register"
9 | frequent_rate_limit=True
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["firefox"]),
13 | 'Accept': '*/*',
14 | 'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
15 | 'Content-Type': 'application/json',
16 | 'Origin': 'https://account.komoot.com',
17 | 'Connection': 'keep-alive',
18 | 'Referer': 'https://account.komoot.com/signin',
19 | }
20 |
21 | data = '{"email":"'+email+'"}'
22 |
23 | try:
24 | response = await client.post('https://account.komoot.com/v1/signin',headers=headers,data=data)
25 | if 'login' in response.json()['type']:
26 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
27 | "rateLimit": False,
28 | "exists": True,
29 | "emailrecovery": None,
30 | "phoneNumber": None,
31 | "others": None})
32 | else:
33 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
34 | "rateLimit": False,
35 | "exists": False,
36 | "emailrecovery": None,
37 | "phoneNumber": None,
38 | "others": None})
39 | except :
40 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
41 | "rateLimit": True,
42 | "exists": False,
43 | "emailrecovery": None,
44 | "phoneNumber": None,
45 | "others": None})
46 |
--------------------------------------------------------------------------------
/holehe/modules/programing/replit.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def replit(email, client, out):
6 | name = "replit"
7 | domain = "repl.it"
8 | method = "register"
9 | frequent_rate_limit=True
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["firefox"]),
13 | 'Accept': 'application/json',
14 | 'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
15 | 'content-type': 'application/json',
16 | 'x-requested-with': 'XMLHttpRequest',
17 | 'Origin': 'https://repl.it',
18 | 'Connection': 'keep-alive',
19 | }
20 |
21 | data = '{"email":"' + str(email) + '"}'
22 |
23 | response = await client.post('https://repl.it/data/user/exists', headers=headers, data=data)
24 | try:
25 | if response.json()['exists']:
26 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
27 | "rateLimit": False,
28 | "exists": True,
29 | "emailrecovery": None,
30 | "phoneNumber": None,
31 | "others": None})
32 | else:
33 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
34 | "rateLimit": False,
35 | "exists": False,
36 | "emailrecovery": None,
37 | "phoneNumber": None,
38 | "others": None})
39 | except BaseException:
40 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
41 | "rateLimit": True,
42 | "exists": False,
43 | "emailrecovery": None,
44 | "phoneNumber": None,
45 | "others": None})
46 |
--------------------------------------------------------------------------------
/holehe/modules/social_media/plurk.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def plurk(email, client, out):
6 | name = "plurk"
7 | domain = "plurk.com"
8 | method = "register"
9 | frequent_rate_limit=False
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["firefox"]),
13 | 'Accept': '*/*',
14 | 'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
15 | 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
16 | 'X-Requested-With': 'XMLHttpRequest',
17 | 'Origin': 'https://www.plurk.com',
18 | 'DNT': '1',
19 | 'Connection': 'keep-alive',
20 | }
21 |
22 | data = {
23 | 'email': email
24 | }
25 |
26 | response = await client.post('https://www.plurk.com/Users/isEmailFound', headers=headers, data=data)
27 | if response.text == "True":
28 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
29 | "rateLimit": False,
30 | "exists": True,
31 | "emailrecovery": None,
32 | "phoneNumber": None,
33 | "others": None})
34 | elif response.text == "False":
35 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
36 | "rateLimit": False,
37 | "exists": False,
38 | "emailrecovery": None,
39 | "phoneNumber": None,
40 | "others": None})
41 | else:
42 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
43 | "rateLimit": True,
44 | "exists": False,
45 | "emailrecovery": None,
46 | "phoneNumber": None,
47 | "others": None})
48 |
--------------------------------------------------------------------------------
/holehe/modules/medias/flickr.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def flickr(email, client, out):
6 | name = "flickr"
7 | domain = "flickr.com"
8 | method= "login"
9 | frequent_rate_limit=False
10 |
11 | url = "https://identity-api.flickr.com/migration"
12 | headers = {
13 | 'User-Agent': random.choice(ua["browsers"]["chrome"]),
14 | 'Accept': '*/*',
15 | 'Accept-Language': 'es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3',
16 | 'Referer': 'https://identity.flickr.com/login',
17 | 'Origin': 'https://identity.flickr.com',
18 | 'Connection': 'keep-alive',
19 | 'TE': 'Trailers',
20 | }
21 | try:
22 | response = await client.get(url + "?email=" + str(email), headers=headers)
23 | except BaseException:
24 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
25 | "rateLimit": True,
26 | "exists": False,
27 | "emailrecovery": None,
28 | "phoneNumber": None,
29 | "others": None})
30 | return None
31 |
32 | data = json.loads(response.text)
33 | if 'state_code' in str(data.keys()) and data['state_code'] == '5':
34 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
35 | "rateLimit": False,
36 | "exists": True,
37 | "emailrecovery": None,
38 | "phoneNumber": None,
39 | "others": None})
40 | else:
41 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
42 | "rateLimit": False,
43 | "exists": False,
44 | "emailrecovery": None,
45 | "phoneNumber": None,
46 | "others": None})
47 |
--------------------------------------------------------------------------------
/holehe/modules/shopping/envato.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def envato(email, client, out):
6 | name = "envato"
7 | domain = "envato.com"
8 | method = "register"
9 | frequent_rate_limit=False
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["firefox"]),
13 | 'Accept': 'application/json',
14 | 'Accept-Language': 'en,en-US;q=0.5',
15 | 'Content-type': 'application/x-www-form-urlencoded',
16 | 'DNT': '1',
17 | 'Connection': 'keep-alive',
18 | 'TE': 'Trailers',
19 | }
20 |
21 | data = {
22 | 'email': email
23 | }
24 | req = await client.post(
25 | 'https://account.envato.com/api/validate_email',
26 | headers=headers,
27 | data=data)
28 | if 'Email is already in use' in req.text:
29 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
30 | "rateLimit": False,
31 | "exists": True,
32 | "emailrecovery": None,
33 | "phoneNumber": None,
34 | "others": None})
35 | elif "Page designed by Kotulsky" in req.text:
36 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
37 | "rateLimit": True,
38 | "exists": False,
39 | "emailrecovery": None,
40 | "phoneNumber": None,
41 | "others": None})
42 | else:
43 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
44 | "rateLimit": False,
45 | "exists": False,
46 | "emailrecovery": None,
47 | "phoneNumber": None,
48 | "others": None})
49 |
--------------------------------------------------------------------------------
/holehe/modules/medias/ello.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def ello(email, client, out):
6 | name = "ello"
7 | domain = "ello.co"
8 | method= "register"
9 | frequent_rate_limit=False
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["firefox"]),
13 | 'Accept': 'application/json',
14 | 'Accept-Language': 'en,en-US;q=0.5',
15 | 'Referer': 'https://ello.co/join',
16 | 'Content-Type': 'application/json',
17 | 'Origin': 'https://ello.co',
18 | 'DNT': '1',
19 | 'Connection': 'keep-alive',
20 | 'TE': 'Trailers',
21 | }
22 |
23 | data = '{"email":"' + email + '"}'
24 | try:
25 | response = await client.post('https://ello.co/api/v2/availability', headers=headers, data=data)
26 | if response.json()["availability"]["email"]:
27 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
28 | "rateLimit": False,
29 | "exists": False,
30 | "emailrecovery": None,
31 | "phoneNumber": None,
32 | "others": None})
33 | else:
34 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
35 | "rateLimit": False,
36 | "exists": True,
37 | "emailrecovery": None,
38 | "phoneNumber": None,
39 | "others": None})
40 | except BaseException:
41 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
42 | "rateLimit": True,
43 | "exists": False,
44 | "emailrecovery": None,
45 | "phoneNumber": None,
46 | "others": None})
47 |
--------------------------------------------------------------------------------
/holehe/modules/productivity/anydo.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def anydo(email, client, out):
6 | name = "anydo"
7 | domain = "any.do"
8 | method= "login"
9 | frequent_rate_limit=True
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["chrome"]),
13 | 'Accept': '*/*',
14 | 'Accept-Language': 'en,en-US;q=0.5',
15 | 'Referer': 'https://desktop.any.do/',
16 | 'Content-Type': 'application/json; charset=UTF-8',
17 | 'X-Platform': '3',
18 | 'Origin': 'https://desktop.any.do',
19 | 'DNT': '1',
20 | 'Connection': 'keep-alive',
21 | 'TE': 'Trailers',
22 | }
23 |
24 | data = '{"email":"' + email + '"}'
25 |
26 | response = await client.post('https://sm-prod2.any.do/check_email', headers=headers, data=data)
27 | if response.status_code == 200:
28 | if response.json()["user_exists"]:
29 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
30 | "rateLimit": False,
31 | "exists": True,
32 | "emailrecovery": None,
33 | "phoneNumber": None,
34 | "others": None})
35 | else:
36 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
37 | "rateLimit": False,
38 | "exists": False,
39 | "emailrecovery": None,
40 | "phoneNumber": None,
41 | "others": None})
42 | else:
43 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
44 | "rateLimit": True,
45 | "exists": False,
46 | "emailrecovery": None,
47 | "phoneNumber": None,
48 | "others": None})
49 |
--------------------------------------------------------------------------------
/holehe/modules/software/archive.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def archive(email, client, out):
6 | name = "archive"
7 | domain = "archive.org"
8 | method = "register"
9 | frequent_rate_limit=False
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["chrome"]),
13 | 'Accept': '*/*',
14 | 'Accept-Language': 'en,en-US;q=0.5',
15 | 'Content-Type': 'multipart/form-data; boundary=---------------------------',
16 | 'Origin': 'https://archive.org',
17 | 'Connection': 'keep-alive',
18 | 'Referer': 'https://archive.org/account/signup',
19 | 'Sec-GPC': '1',
20 | 'TE': 'Trailers',
21 | }
22 |
23 | data = '-----------------------------\r\nContent-Disposition: form-data; name="input_name"\r\n\r\nusername\r\n-----------------------------\r\nContent-Disposition: form-data; name="input_value"\r\n\r\n' + email + \
24 | '\r\n-----------------------------\r\nContent-Disposition: form-data; name="input_validator"\r\n\r\ntrue\r\n-----------------------------\r\nContent-Disposition: form-data; name="submit_by_js"\r\n\r\ntrue\r\n-------------------------------\r\n'
25 |
26 | response = await client.post('https://archive.org/account/signup', headers=headers, data=data)
27 | if "is already taken." in response.text:
28 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
29 | "rateLimit": False,
30 | "exists": True,
31 | "emailrecovery": None,
32 | "phoneNumber": None,
33 | "others": None})
34 | else:
35 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
36 | "rateLimit": False,
37 | "exists": False,
38 | "emailrecovery": None,
39 | "phoneNumber": None,
40 | "others": None})
41 |
--------------------------------------------------------------------------------
/holehe/modules/software/lastpass.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def lastpass(email, client, out):
6 | name = "lastpass"
7 | domain = "lastpass.com"
8 | method = "register"
9 | frequent_rate_limit=False
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["firefox"]),
13 | 'Accept': '*/*',
14 | 'Accept-Language': 'en,en-US;q=0.5',
15 | 'Referer': 'https://lastpass.com/',
16 | 'X-Requested-With': 'XMLHttpRequest',
17 | 'DNT': '1',
18 | 'Connection': 'keep-alive',
19 | 'TE': 'Trailers',
20 | }
21 | params = {
22 | 'check': 'avail',
23 | 'skipcontent': '1',
24 | 'mistype': '1',
25 | 'username': email,
26 | }
27 |
28 | response = await client.get(
29 | 'https://lastpass.com/create_account.php',
30 | params=params,
31 | headers=headers)
32 | if response.text == "no":
33 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
34 | "rateLimit": False,
35 | "exists": True,
36 | "emailrecovery": None,
37 | "phoneNumber": None,
38 | "others": None})
39 | elif response.text == "ok" or response.text == "emailinvalid":
40 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
41 | "rateLimit": False,
42 | "exists": False,
43 | "emailrecovery": None,
44 | "phoneNumber": None,
45 | "others": None})
46 | else:
47 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
48 | "rateLimit": True,
49 | "exists": False,
50 | "emailrecovery": None,
51 | "phoneNumber": None,
52 | "others": None})
53 |
--------------------------------------------------------------------------------
/holehe/modules/jobs/coroflot.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def coroflot(email, client, out):
6 | name = "coroflot"
7 | domain = "coroflot.com"
8 | method= "register"
9 | frequent_rate_limit=False
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["firefox"]),
13 | 'Accept': '*/*',
14 | 'Accept-Language': 'en,en-US;q=0.5',
15 | 'Content-Type': 'application/x-www-form-urlencoded',
16 | 'X-Requested-With': 'XMLHttpRequest',
17 | 'Origin': 'https://www.coroflot.com',
18 | 'DNT': '1',
19 | 'Connection': 'keep-alive',
20 | 'Referer': 'https://www.coroflot.com/signup',
21 | 'TE': 'Trailers',
22 | }
23 |
24 | data = {
25 | 'email': email
26 | }
27 | try:
28 | response = await client.post('https://www.coroflot.com/home/signup_email_check',headers=headers,data=data)
29 | if response.json()["data"] == -2:
30 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
31 | "rateLimit": False,
32 | "exists": True,
33 | "emailrecovery": None,
34 | "phoneNumber": None,
35 | "others": None})
36 | else:
37 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
38 | "rateLimit": False,
39 | "exists": False,
40 | "emailrecovery": None,
41 | "phoneNumber": None,
42 | "others": None})
43 | except:
44 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
45 | "rateLimit": True,
46 | "exists": False,
47 | "emailrecovery": None,
48 | "phoneNumber": None,
49 | "others": None})
50 |
--------------------------------------------------------------------------------
/holehe/modules/medias/rambler.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def rambler(email, client, out):
6 | name = "rambler"
7 | domain = "rambler.ru"
8 | method= "register"
9 | frequent_rate_limit=False
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["firefox"]),
13 | 'Accept': '*/*',
14 | 'Accept-Language': 'en,en-US;q=0.5',
15 | 'Referer': 'https://id.rambler.ru/champ/registration',
16 | 'Content-Type': 'application/json',
17 | 'Origin': 'https://id.rambler.ru',
18 | 'DNT': '1',
19 | 'Connection': 'keep-alive',
20 | }
21 |
22 | data = '{"method":"Rambler::Id::get_email_account_info","params":[{"email":"' + email + '"}],"rpc":"2.0"}'
23 |
24 | response = await client.post(
25 | 'https://id.rambler.ru/jsonrpc',
26 | headers=headers,
27 | data=data)
28 | try:
29 | if response.json()["result"]["exists"] == 0:
30 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
31 | "rateLimit": False,
32 | "exists": False,
33 | "emailrecovery": None,
34 | "phoneNumber": None,
35 | "others": None})
36 | else:
37 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
38 | "rateLimit": False,
39 | "exists": True,
40 | "emailrecovery": None,
41 | "phoneNumber": None,
42 | "others": None})
43 | except BaseException:
44 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
45 | "rateLimit": True,
46 | "exists": False,
47 | "emailrecovery": None,
48 | "phoneNumber": None,
49 | "others": None})
50 |
--------------------------------------------------------------------------------
/holehe/modules/software/issuu.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def issuu(email, client, out):
6 | name = "issuu"
7 | domain = "issuu.com"
8 | method = "register"
9 | frequent_rate_limit=False
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["firefox"]),
13 | 'Accept': '*/*',
14 | 'Accept-Language': 'en,en-US;q=0.5',
15 | 'Referer': 'https://issuu.com/signup?returnUrl=https%3A%2F%2Fissuu.com%2F&issuu_product=header&issuu_subproduct=anon_home&issuu_context=signin&issuu_cta=log_up',
16 | 'Content-Type': 'application/json',
17 | 'Cache-Control': 'no-cache',
18 | 'DNT': '1',
19 | 'Connection': 'keep-alive',
20 | 'TE': 'Trailers',
21 | }
22 |
23 | response = await client.get(
24 | 'https://issuu.com/call/signup/check-email/' +
25 | email,
26 | headers=headers)
27 | try:
28 | if response.json()["status"] == "unavailable":
29 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
30 | "rateLimit": False,
31 | "exists": True,
32 | "emailrecovery": None,
33 | "phoneNumber": None,
34 | "others": None})
35 | else:
36 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
37 | "rateLimit": False,
38 | "exists": False,
39 | "emailrecovery": None,
40 | "phoneNumber": None,
41 | "others": None})
42 | except BaseException:
43 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
44 | "rateLimit": True,
45 | "exists": False,
46 | "emailrecovery": None,
47 | "phoneNumber": None,
48 | "others": None})
49 |
--------------------------------------------------------------------------------
/holehe/modules/shopping/dominosfr.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def dominosfr(email, client, out):
6 | name = "dominosfr"
7 | domain = "dominos.fr"
8 | method = "register"
9 | frequent_rate_limit=True
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["chrome"]),
13 | 'Accept': 'text/html, */*; q=0.01',
14 | 'Accept-Language': 'en,en-US;q=0.5',
15 | 'X-Requested-With': 'XMLHttpRequest',
16 | 'DNT': '1',
17 | 'Connection': 'keep-alive',
18 | 'Referer': 'https://commande.dominos.fr/eStore/fr/Signup',
19 | }
20 |
21 | await client.get("https://commande.dominos.fr/eStore/fr/Signup", headers=headers)
22 | headers['X-Requested-With'] = 'XMLHttpRequest'
23 |
24 | data = {"email": email}
25 |
26 | req = await client.get('https://commande.dominos.fr/eStore/fr/Signup/IsEmailAvailable', headers=headers, params=data)
27 | if req.status_code == 200:
28 | if req.text == "false":
29 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
30 | "rateLimit": False,
31 | "exists": True,
32 | "emailrecovery": None,
33 | "phoneNumber": None,
34 | "others": None})
35 | else:
36 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
37 | "rateLimit": False,
38 | "exists": False,
39 | "emailrecovery": None,
40 | "phoneNumber": None,
41 | "others": None})
42 | else:
43 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
44 | "rateLimit": True,
45 | "exists": False,
46 | "emailrecovery": None,
47 | "phoneNumber": None,
48 | "others": None})
49 |
--------------------------------------------------------------------------------
/holehe/modules/cms/atlassian.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def atlassian(email, client, out):
6 | name = "atlassian"
7 | domain = "atlassian.com"
8 | method="register"
9 | frequent_rate_limit=False
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["chrome"]),
13 | 'Accept': '*/*',
14 | 'Accept-Language': 'en,en-US;q=0.5',
15 | 'Referer': 'https://id.atlassian.com/',
16 | 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
17 | 'Origin': 'https://id.atlassian.com',
18 | 'DNT': '1',
19 | 'Connection': 'keep-alive',
20 | }
21 | try:
22 | r = await client.get("https://id.atlassian.com/login", headers=headers)
23 | data = {'csrfToken': r.text.split('{"csrfToken":"')[
24 | 1].split('"')[0], 'username': email}
25 | except :
26 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
27 | "rateLimit": True,
28 | "exists": False,
29 | "emailrecovery": None,
30 | "phoneNumber": None,
31 | "others": None})
32 | return None
33 |
34 | response = await client.post('https://id.atlassian.com/rest/check-username', headers=headers, data=data)
35 | if response.json()["action"] == "signup":
36 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
37 | "rateLimit": False,
38 | "exists": False,
39 | "emailrecovery": None,
40 | "phoneNumber": None,
41 | "others": None})
42 | else:
43 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
44 | "rateLimit": False,
45 | "exists": True,
46 | "emailrecovery": None,
47 | "phoneNumber": None,
48 | "others": None})
49 |
--------------------------------------------------------------------------------
/holehe/modules/social_media/tellonym.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def tellonym(email, client, out):
6 | name = "tellonym"
7 | domain = "tellonym.me"
8 | method = "register"
9 | frequent_rate_limit=False
10 |
11 | headers = {
12 | 'User-Agent': random.choice(ua["browsers"]["firefox"]),
13 | 'Accept': 'application/json',
14 | 'Accept-Language': 'en,en-US;q=0.5',
15 | 'tellonym-client': 'web:0.51.1',
16 | 'content-type': 'application/json;charset=utf-8',
17 | 'Origin': 'https://tellonym.me',
18 | 'Connection': 'keep-alive',
19 | 'Referer': 'https://tellonym.me/register/email',
20 | 'TE': 'Trailers',
21 | }
22 |
23 | params = {
24 | 'email': str(email),
25 | 'errorMessage': '',
26 | 'limit': '25',
27 | }
28 |
29 | try:
30 | response = await client.get('https://api.tellonym.me/accounts/check', headers=headers, params=params)
31 | if "EMAIL_ALREADY_IN_USE" in response.text:
32 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
33 | "rateLimit": False,
34 | "exists": True,
35 | "emailrecovery": None,
36 | "phoneNumber": None,
37 | "others": None})
38 | else:
39 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
40 | "rateLimit": False,
41 | "exists": False,
42 | "emailrecovery": None,
43 | "phoneNumber": None,
44 | "others": None})
45 | except BaseException:
46 | out.append({"name": name,"domain":domain,"method":method,"frequent_rate_limit":frequent_rate_limit,
47 | "rateLimit": True,
48 | "exists": False,
49 | "emailrecovery": None,
50 | "phoneNumber": None,
51 | "others": None})
52 |
--------------------------------------------------------------------------------
/holehe/modules/programing/github.py:
--------------------------------------------------------------------------------
1 | from holehe.core import *
2 | from holehe.localuseragent import *
3 |
4 |
5 | async def github(email, client, out):
6 | name = "github"
7 | domain = "github.com"
8 | method = "register"
9 | frequent_rate_limit=False
10 |
11 | freq = await client.get("https://github.com/join")
12 | token_regex = re.compile(
13 | r'\n