Advertisement
msatskevich

Untitled

Jan 29th, 2020
772
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.80 KB | None | 0 0
  1. from selenium import webdriver
  2. import time
  3. import threading
  4. import json
  5. from selenium.common.exceptions import TimeoutException
  6. from selenium.webdriver.common.by import By
  7. from selenium.webdriver.support.ui import WebDriverWait
  8. from selenium.webdriver.support import expected_conditions as EC
  9. import imaplib
  10. from selenium.webdriver.common.proxy import Proxy, ProxyType
  11. from selenium.common.exceptions import StaleElementReferenceException
  12.  
  13. read = open('data.json', 'r')
  14. people = json.loads(read.read())
  15. read.close()
  16.  
  17. browsers = []
  18. threads = []
  19. proxies = []
  20.  
  21.  
  22.  
  23. proxy_getter = webdriver.Firefox(executable_path = r"geckodriver.exe")
  24.  
  25. proxy_getter.get('https://free-proxy-list.net/')
  26. try:
  27.     WebDriverWait(proxy_getter, 100).until(EC.presence_of_element_located((By.ID, 'proxylisttable')))
  28. except TimeoutException:
  29.     print('Errx')
  30.  
  31.  
  32. for i in range(3):
  33.     page = proxy_getter.find_elements_by_xpath('//table[@id="proxylisttable"]/tbody/tr/td[1]')
  34.     ports = proxy_getter.find_elements_by_xpath('//table[@id="proxylisttable"]/tbody/tr/td[2]')
  35.  
  36.     for i in range(len(page)):
  37.         proxies.append(page[i].text + ':' + ports[i].text)
  38.     button = proxy_getter.find_element_by_xpath('//a[@data-dt-idx="9"]')
  39.     button.click()
  40.     time.sleep(.3)
  41. proxy_getter.quit()
  42.  
  43.  
  44.  
  45.  
  46.  
  47. mt = threading.Lock()
  48.  
  49. def createBrowser(proxy_ip):
  50.    
  51.     PROXY_HOST, PROXY_PORT = proxy_ip.split(':')
  52.  
  53.     fp = webdriver.FirefoxProfile()
  54.     fp.set_preference("network.proxy.type", 1)
  55.     fp.set_preference("network.proxy.http",PROXY_HOST)
  56.     fp.set_preference("network.proxy.http_port",int(PROXY_PORT))
  57.     fp.set_preference("network.proxy.ssl",PROXY_HOST)
  58.     fp.set_preference("network.proxy.ssl_port",int(PROXY_PORT))
  59.     fp.set_preference("general.useragent.override","whater_useragent")
  60.     fp.update_preferences()
  61.  
  62.     browser = webdriver.Firefox(executable_path = r"geckodriver.exe", firefox_profile = fp)
  63.     browser.maximize_window()
  64.     mt.acquire()
  65.     browsers.append(browser)
  66.     mt.release()
  67.  
  68.  
  69.  
  70. for i in range(len(people)):
  71.     thread = threading.Thread(target = createBrowser, args = (proxies[i],))
  72.     threads.append(thread)
  73.     thread.start()
  74.  
  75. for t in threads:
  76.     t.join()
  77.  
  78. threads = []
  79.  
  80.  
  81. def authorize(browser, person):
  82.     mt.acquire()
  83.     browser.get('https://meowskins.cc/oauth/steam/redirect')
  84.     #mt.release()
  85.     while True:
  86.         print('Entered logging in')
  87.         try:
  88.             WebDriverWait(browser, 100).until(EC.presence_of_element_located((By.XPATH, '//input[@name="username"]')))
  89.         except TimeoutException:
  90.             print('Err2')
  91.  
  92.  
  93.         username = browser.find_element_by_xpath('//input[@name="username"]')
  94.         password = browser.find_element_by_xpath('//input[@name="password"]')
  95.  
  96.         username.send_keys(person['username'])
  97.         password.send_keys(person['password'])
  98.  
  99.         #mt.acquire()
  100.  
  101.         username.submit()
  102.  
  103.         fl = True
  104.  
  105.         try:
  106.             WebDriverWait(browser, 5).until(EC.visibility_of_element_located((By.XPATH, '//input[@class="authcode_entry_input authcode_placeholder"]')))
  107.         except TimeoutException:
  108.             browser.get('https://meowskins.cc/oauth/steam/redirect')
  109.             button = browser.find_element_by_xpath('//input[@class="btn_green_white_innerfade"]')
  110.  
  111.             button.click()
  112.             fl = False
  113.  
  114.  
  115.         if fl:
  116.             time.sleep(3)
  117.  
  118.             mail = imaplib.IMAP4_SSL('imap.mail.ru')
  119.             mail.login('vadimkoch2003@mail.ru', '1ir6d26t99v167ng')
  120.             mail.list()
  121.             mail.select('inbox')
  122.             result, data = mail.search(None, "ALL")
  123.             ids = data[0]
  124.             id_list = ids.split()
  125.             latest_email_id = id_list[-1]
  126.             result, data = mail.fetch(latest_email_id, "(RFC822)")
  127.             raw_email = str(data[0][1])
  128.             pos = raw_email.find(':\\r\\n\\r\\n')
  129.             guard = raw_email[pos + 9 : pos + 14]
  130.  
  131.         mt.release()
  132.  
  133.         if fl:
  134.             guardinp = browser.find_element_by_xpath('//input[@class="authcode_entry_input authcode_placeholder"]')
  135.             guardinp.send_keys(guard)
  136.             guardinp.submit()
  137.  
  138.             try:
  139.                 WebDriverWait(browser, 100).until(EC.visibility_of_element_located((By.ID, 'success_continue_btn')))
  140.             except TimeoutException:
  141.                 print('Err6')
  142.  
  143.             auth_button = browser.find_element_by_id('success_continue_btn')
  144.             auth_button.click()
  145.  
  146.         try:
  147.             WebDriverWait(browser, 100).until(EC.presence_of_element_located((By.XPATH, '//div[@class="mini-profile-ava"]//img')))
  148.             break
  149.         except TimeoutException:
  150.             print('Err7')
  151.             mt.acquire()
  152.             browser.refresh()
  153.  
  154.     ava = browser.find_element_by_xpath('//div[@class="mini-profile-ava"]//img')
  155.     ava.click()
  156.  
  157.     try:
  158.         WebDriverWait(browser, 100).until(EC.presence_of_element_located((By.XPATH, ' ')))
  159.     except TimeoutException:
  160.         print('Err8')  
  161.  
  162.  
  163.  
  164.  
  165.  
  166. for i in range(len(people)):
  167.  
  168.     thread = threading.Thread(target = authorize, args = (browsers[i], people[i]))
  169.     threads.append(thread)
  170.     thread.start()
  171.  
  172.  
  173. for t in threads:
  174.     t.join()
  175.  
  176.  
  177. def inputCode(browser, code):
  178.  
  179.     while True:
  180.         try:
  181.             WebDriverWait(browser, 100).until(EC.presence_of_element_located((By.XPATH, '//input[@data-v-e6fade42]')))
  182.         except TimeoutException:
  183.             print('Err8')
  184.  
  185.         form = browser.find_element_by_xpath('//input[@data-v-e6fade42]')
  186.  
  187.         form.clear()
  188.         form.send_keys(code)
  189.         form.submit()
  190.  
  191.         try:
  192.             WebDriverWait(browser, 100).until(EC.presence_of_element_located((By.XPATH, '//div[@class="noty_body"]')))
  193.         except TimeoutException:
  194.             print('Err9')
  195.  
  196.         errors = browser.find_elements_by_xpath('//div[@class="noty_body"]')
  197.         fl1 = True
  198.         for error in errors:
  199.             try:
  200.                 if not ('Предупреждение' in error.text):
  201.                     fl1 = False
  202.                     break
  203.             except StaleElementReferenceException:
  204.                 pass
  205.  
  206.         if not fl1:
  207.             break
  208.  
  209.         time.sleep(.5)
  210.  
  211.     print('kk')
  212.  
  213.  
  214.  
  215. while True:
  216.     print('Введи промокод: ')
  217.     code = input()
  218.  
  219.     if code == 'exit':
  220.         break
  221.  
  222.     threads = []
  223.  
  224.     for browser in browsers:
  225.         thread = threading.Thread(target = inputCode, args = (browser, code))
  226.         threads.append(thread)
  227.         thread.start()
  228.  
  229.     for t in threads:
  230.         t.join()
  231.  
  232.  
  233.  
  234. for b in browsers:
  235.     b.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement