diff --git a/README.md b/README.md
index 1f26ecc..5720811 100644
--- a/README.md
+++ b/README.md
@@ -65,15 +65,19 @@ print(lastpass("test@gmail.com"))
|blackworldforum|blackworldforum.com| register | ✔ |
| blip | blip.fm | register | ✔ |
|blitzortung |forum.blitzortung.org| register | ✘ |
+|bluegrassrivals|bluegrassrivals.com| register | ✘ |
|bodybuilding |bodybuilding.com| register | ✘ |
|buymeacoffee |buymeacoffee.com| register | ✔ |
|caringbridge |caringbridge.org| register | ✘ |
|cambridgemt |discussion.cambridge-mt.com|register | ✘ |
|chinaphonearena |chinaphonearena.com|register | ✘ |
+| clashfarmer | clashfarmer.com| register | ✔ |
| codecademy | codecademy.com | register | ✔ |
| codeigniter|forum.codeigniter.com|register | ✘ |
| codepen | codepen.io | register | ✘ |
| coroflot | coroflot.com | register | ✘ |
+| cpaelites | cpaelites.com | register | ✘ |
+| cpahero | cpahero.com | register | ✘ |
| cracked_to | cracked.to | register | ✔ |
| crevado | crevado.com | register | ✔ |
| deliveroo | deliveroo.com | register | ✔ |
@@ -87,7 +91,6 @@ print(lastpass("test@gmail.com"))
| envato | envato.com | register | ✘ |
| eventbrite | eventbrite.com | login | ✘ |
| evernote | evernote.com | login | ✘ |
-| facebook | facebook.com | password recovery | ✘ |
| fanpop | fanpop.com | register | ✘ |
| firefox | firefox.com | register | ✘ |
|freelancer | freelancer.com | register | ✘ |
diff --git a/holehe/modules/forum/bluegrassrivals.py b/holehe/modules/forum/bluegrassrivals.py
new file mode 100644
index 0000000..813571a
--- /dev/null
+++ b/holehe/modules/forum/bluegrassrivals.py
@@ -0,0 +1,42 @@
+from holehe.core import *
+from holehe.localuseragent import *
+
+
+def bluegrassrivals(email):
+ s=requests.session()
+ headers = {
+ 'User-Agent': random.choice(ua["browsers"]["chrome"]),
+ 'Accept': 'application/json, text/javascript, */*; q=0.01',
+ 'Accept-Language': 'en,en-US;q=0.5',
+ 'Referer': 'http://bluegrassrivals.com/forum/member.php',
+ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
+ 'Origin': 'http://bluegrassrivals.com/forum',
+ 'DNT': '1',
+ 'Connection': 'keep-alive',
+ 'TE': 'Trailers',
+ }
+
+ r=s.get("http://bluegrassrivals.com/forum/member.php",headers=headers)
+ if "Your request was blocked" in r.text or r.status_code!=200:
+ return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None})
+ headers['X-Requested-With']= 'XMLHttpRequest'
+
+
+ params = (
+ ('action', 'email_availability'),
+ )
+ try:
+ data = {
+ 'email': email,
+ 'my_post_key':r.text.split('var my_post_key = "')[1].split('"')[0]
+ }
+ except:
+ return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None})
+ response = s.post('http://bluegrassrivals.com/forum/xmlhttp.php', headers=headers, params=params, data=data)
+ if "Your request was blocked" not in response.text and response.status_code==200:
+ if "email address that is already in use by another member." in response.text:
+ return({"rateLimit": False, "exists": True, "emailrecovery": None, "phoneNumber": None, "others": None})
+ else:
+ return({"rateLimit": False, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None})
+ else:
+ return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None})
diff --git a/holehe/modules/forum/clashfarmer.py b/holehe/modules/forum/clashfarmer.py
new file mode 100644
index 0000000..7a3a1cf
--- /dev/null
+++ b/holehe/modules/forum/clashfarmer.py
@@ -0,0 +1,42 @@
+from holehe.core import *
+from holehe.localuseragent import *
+
+
+def clashfarmer(email):
+ s=requests.session()
+ headers = {
+ 'User-Agent': random.choice(ua["browsers"]["chrome"]),
+ 'Accept': 'application/json, text/javascript, */*; q=0.01',
+ 'Accept-Language': 'en,en-US;q=0.5',
+ 'Referer': 'https://www.clashfarmer.com/forum/member.php',
+ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
+ 'Origin': 'https://www.clashfarmer.com/forum',
+ 'DNT': '1',
+ 'Connection': 'keep-alive',
+ 'TE': 'Trailers',
+ }
+
+ r=s.get("https://www.clashfarmer.com/forum/member.php",headers=headers)
+ if "Your request was blocked" in r.text or r.status_code!=200:
+ return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None})
+ headers['X-Requested-With']= 'XMLHttpRequest'
+
+
+ params = (
+ ('action', 'email_availability'),
+ )
+ try:
+ data = {
+ 'email': email,
+ 'my_post_key':r.text.split('var my_post_key = "')[1].split('"')[0]
+ }
+ except:
+ return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None})
+ response = s.post('https://www.clashfarmer.com/forum/xmlhttp.php', headers=headers, params=params, data=data)
+ if "Your request was blocked" not in response.text and response.status_code==200:
+ if "email address that is already in use by another member." in response.text:
+ return({"rateLimit": False, "exists": True, "emailrecovery": None, "phoneNumber": None, "others": None})
+ else:
+ return({"rateLimit": False, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None})
+ else:
+ return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None})
diff --git a/holehe/modules/forum/cpaelites.py b/holehe/modules/forum/cpaelites.py
new file mode 100644
index 0000000..b59b1f1
--- /dev/null
+++ b/holehe/modules/forum/cpaelites.py
@@ -0,0 +1,42 @@
+from holehe.core import *
+from holehe.localuseragent import *
+
+
+def cpaelites(email):
+ s=requests.session()
+ headers = {
+ 'User-Agent': random.choice(ua["browsers"]["chrome"]),
+ 'Accept': 'application/json, text/javascript, */*; q=0.01',
+ 'Accept-Language': 'en,en-US;q=0.5',
+ 'Referer': 'https://www.cpaelites.com/member.php',
+ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
+ 'Origin': 'https://www.cpaelites.com',
+ 'DNT': '1',
+ 'Connection': 'keep-alive',
+ 'TE': 'Trailers',
+ }
+
+ r=s.get("https://www.cpaelites.com/member.php",headers=headers)
+ if "Your request was blocked" in r.text or r.status_code!=200:
+ return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None})
+ headers['X-Requested-With']= 'XMLHttpRequest'
+
+
+ params = (
+ ('action', 'email_availability'),
+ )
+ try:
+ data = {
+ 'email': email,
+ 'my_post_key':r.text.split('var my_post_key = "')[1].split('"')[0]
+ }
+ except:
+ return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None})
+ response = s.post('https://www.cpaelites.com/xmlhttp.php', headers=headers, params=params, data=data)
+ if "Your request was blocked" not in response.text and response.status_code==200:
+ if "email address that is already in use by another member." in response.text:
+ return({"rateLimit": False, "exists": True, "emailrecovery": None, "phoneNumber": None, "others": None})
+ else:
+ return({"rateLimit": False, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None})
+ else:
+ return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None})
diff --git a/holehe/modules/forum/cpahero.py b/holehe/modules/forum/cpahero.py
new file mode 100644
index 0000000..580c4ff
--- /dev/null
+++ b/holehe/modules/forum/cpahero.py
@@ -0,0 +1,42 @@
+from holehe.core import *
+from holehe.localuseragent import *
+
+
+def cpahero(email):
+ s=requests.session()
+ headers = {
+ 'User-Agent': random.choice(ua["browsers"]["chrome"]),
+ 'Accept': 'application/json, text/javascript, */*; q=0.01',
+ 'Accept-Language': 'en,en-US;q=0.5',
+ 'Referer': 'https://www.cpahero.com/member.php',
+ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
+ 'Origin': 'https://www.cpahero.com',
+ 'DNT': '1',
+ 'Connection': 'keep-alive',
+ 'TE': 'Trailers',
+ }
+
+ r=s.get("https://www.cpahero.com/member.php",headers=headers)
+ if "Your request was blocked" in r.text or r.status_code!=200:
+ return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None})
+ headers['X-Requested-With']= 'XMLHttpRequest'
+
+
+ params = (
+ ('action', 'email_availability'),
+ )
+ try:
+ data = {
+ 'email': email,
+ 'my_post_key':r.text.split('var my_post_key = "')[1].split('"')[0]
+ }
+ except:
+ return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None})
+ response = s.post('https://www.cpahero.com/xmlhttp.php', headers=headers, params=params, data=data)
+ if "Your request was blocked" not in response.text and response.status_code==200:
+ if "email address that is already in use by another member." in response.text:
+ return({"rateLimit": False, "exists": True, "emailrecovery": None, "phoneNumber": None, "others": None})
+ else:
+ return({"rateLimit": False, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None})
+ else:
+ return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None})
diff --git a/holehe/modules/social_media/facebook.py b/holehe/modules/social_media/facebook.py
deleted file mode 100644
index ed2ab6c..0000000
--- a/holehe/modules/social_media/facebook.py
+++ /dev/null
@@ -1,64 +0,0 @@
-from holehe.core import *
-from holehe.localuseragent import *
-
-def facebook(email):
- s = requests.Session()
- req = s.get('https://www.facebook.com/login/identify?ctx=recover&lwv=110')
- token = re.findall(r'"token":"([a-zA-Z0-9_-]+)"', req.text)[0]
- if not token:
- return({"rateLimit": True, "exists": None, "emailrecovery": None, "phoneNumber": None, "others": {"FullName": None, "profilePicture": None}})
-
- pattern = r'"_js_datr","([a-zA-Z0-9_-]+)"'
- jsdatr = re.findall(pattern, req.text)[0]
- if not jsdatr:
- return({"rateLimit": True, "exists": None, "emailrecovery": None, "phoneNumber": None, "others": {"FullName": None, "profilePicture": None}})
-
- data = {'lsd': token,
- 'email': email,
- 'did_submit': 'Search',
- '__user': 0,
- '__a': 1}
- cookies = {'_js_datr': jsdatr + ';'}
- headers = {
- 'referer': 'https://www.facebook.com/login/identify?ctx=recover&lwv=110'}
- req = s.post(
- 'https://www.facebook.com/ajax/login/help/identify.php?ctx=recover',
- cookies=cookies,
- data=data,
- headers=headers)
-
- pattern = r'ldata=([a-zA-Z0-9-_]+)\\"'
- try:
- ldata = re.findall(pattern, req.text)[0]
- except IndexError:
- return({"rateLimit": False, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": {"FullName": None, "profilePicture": None}})
- if not ldata:
- return({"rateLimit": False, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": {"FullName": None, "profilePicture": None}})
-
- req = s.get('https://www.facebook.com/recover/initiate?ldata=%s' % ldata)
- soup = BeautifulSoup(req.content, features="lxml")
- full_name = soup.find('div', attrs={'class': 'fsl fwb fcb'})
- try:
- profile_picture = soup.find('img', attrs={'class': 'img'}).get('src')
- except BaseException:
- profile_picture = ""
- try:
- emailrecovery = req.text.split(
- '