Advertisement
Guest User

Untitled

a guest
Oct 26th, 2018
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 20.34 KB | None | 0 0
  1. import time
  2. import asyncio
  3. import string
  4. import sys
  5. import random
  6. import socket
  7. import pickle
  8. import os
  9. import datetime
  10. from random import randrange
  11. from random import randint
  12. from selenium import webdriver
  13. from selenium.webdriver.common.keys import Keys
  14. from selenium.webdriver.common.by import By
  15. from selenium.webdriver.support.ui import WebDriverWait
  16. from selenium.webdriver.support import expected_conditions as ec
  17. from selenium.webdriver.common.action_chains import ActionChains
  18.  
  19. #from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
  20.  
  21. #binary = FirefoxBinary("C:\\Program Files\\Light\\light.exe")
  22.  
  23. #get = os.listdir('C:\\Users\\Administrator\\AppData\\Roaming\\Light\\Light\\Profiles')
  24. #putanja = 'C:\\Users\\Administrator\\AppData\\Roaming\\Light\\Light\\Profiles\\' + get[0]
  25. options = webdriver.ChromeOptions()
  26. #options.add_argument("user-data-dir=C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data")
  27. ua = "user-data-dir=C:\\Profiles\\"+str(sys.argv[1])+"Parent"
  28. options.add_argument(ua)
  29. pd = "--profile-directory="+str(sys.argv[1])
  30. options.add_argument(pd)
  31. #options.set_headless(headless=True)
  32. options.add_argument('window-size=1400x1080')
  33. options.add_argument('start-maximzed')
  34. options.add_argument('log-level=3')
  35. #options.add_argument('--ignore-certificate-errors')
  36. #options.add_argument("--proxy-server='direct://'")
  37. #options.add_argument('--proxy-bypass-list=*')
  38.  
  39. #options.add_argument('user-agent=Chrome/61.0.3163.79')
  40. print(ua)
  41. print(pd)
  42.  
  43. driver = webdriver.Chrome(executable_path="chromedriver.exe", chrome_options=options)
  44. #driver.set_window_size(1920, 1080)
  45. driver.get("https://discordapp.com/activity")
  46. time.sleep(30)
  47. #driver.implicitly_wait(5)
  48.  
  49. #gl = driver.find_elements_by_xpath("//div[@class='guildSeparator-1X4GQ1']/following-sibling::div[@class='guild-1EfMGQ']")
  50. #gl = driver.find_elements_by_class_name("guild-1EfMGQ")
  51. #loc = 60
  52. #print('CHeckujem guilde')
  53.  
  54. #home = gl[0]
  55.  
  56. #for guild in range(0,len(gl)-2):
  57.         #last_height = driver.execute_script("return document.body.scrollHeight")
  58.         #driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
  59.         #driver.execute_script('arguments[0].scrollIntoView()', guild)
  60.         ##driver.execute_script('arguments[0].scrollIntoView()', gl[guild])
  61.         ##await asyncio.sleep(1)
  62.         ##actions = ActionChains(driver)
  63.         #actions.move_to_element(gl[guild]).click().perform()
  64.         ##gl[guild].click()
  65.         ##actions.perform(gl[guild])
  66.         #await asyncio.sleep(1)
  67.         ##driver.execute_script("arguments[0].click();", gl[guild])
  68.         #gl[guild].send_keys(u'ue007')
  69.         #condition = ec.visibility_of_element_located(gl[guild])
  70.  
  71.         #fo = WebDriverWait(driver, 15).until(condition)
  72.         #fo.click()
  73.         #print('Usao u guildu')
  74.         #await asyncio.sleep(10)
  75.  
  76. #driver.execute_script('arguments[0].scrollIntoView()', home)
  77. #actions.click(home).perform()
  78.  
  79. #actions = ActionChains(driver)
  80. #actions.move_to_element(home.click().perform())
  81. #driver.execute_script('arguments[0].scrollIntoView()', home)
  82. #await asyncio.sleep(1)
  83. s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  84. try:
  85.         PREFIX_FILE_PATH = 'C:\\BOT\\' + str(sys.argv[1])
  86.         PREFIX_FILE_PATH_BF = 'C:\\BOT\\'
  87.  
  88.         breaker = False
  89.         memberi = []
  90.         max_number_members = 0
  91.         next_member = 0
  92.         servers_list_check = []
  93.         data = 0
  94.         cnt = 1
  95.         userFile = open(PREFIX_FILE_PATH_BF + "accountConfig.txt", "r")
  96.         configLoad = userFile.readlines()
  97.         username = configLoad[0]
  98.         password = configLoad[1]
  99.         userFile.close()
  100.         serverFile = open(PREFIX_FILE_PATH_BF + "serverProtocolConfig.txt", "r")
  101.         serverLoad = serverFile.readlines()
  102.         IPadress = serverLoad[0]
  103.         portLoader = serverLoad[1]
  104.         serverFile.close()
  105.         messageSend = []
  106.         host = IPadress
  107.         port = int(portLoader)
  108.         print('HOST : ', host)
  109.         print('PORT : ', port)
  110.  
  111.         oServersF = open(PREFIX_FILE_PATH_BF + "oservers.txt", "r")
  112.         oServersX = oServersF.readlines()
  113.         oServers = [x.replace("\n", "") for x in oServersX]
  114.         cachedKicks = []
  115.         kicksToPerform = []
  116.        
  117.         def mwconn(host, port):
  118.                 try:
  119.                         s.connect((host,port))
  120.                 except socket.error as exc:
  121.                         print('Caught exception socket.error:' + exc)
  122.                        
  123.         mwconn(host,port)
  124.  
  125.  
  126.         iskoristi = False
  127.         async def start_process():
  128.              print('Startujem bota ')
  129.              global iskoristi
  130.              if iskoristi == False:
  131.                  iskoristi = True
  132.                  await start_bot()
  133.                  
  134.         def init_client():
  135.             global s
  136.             sFileName = PREFIX_FILE_PATH + 'dict.pickle'
  137.             messageConfigure = "GIVE_PICKLE"
  138.             boolForSend = 0
  139.             global messageSend
  140.             while True:
  141.                 if boolForSend == 0:
  142.                     BUFFER_SIZE = 1024
  143.                     s.send(messageConfigure.encode())
  144.                     print('Poslao pickleFile request serveru')
  145.                     fDownloadFile = PREFIX_FILE_PATH + "dict.pickle"
  146.                     with open(fDownloadFile, 'wb') as fw:
  147.                         msg = s.recv(BUFFER_SIZE)
  148.                         fsize = int(msg.decode('utf-8').strip())
  149.                         rsize = 0
  150.                         while True:
  151.                            data = s.recv(BUFFER_SIZE)
  152.                            rsize = rsize + len(data)
  153.                            fw.write(data)
  154.                            if  rsize >= fsize:
  155.                                break
  156.                     print("Zavrseno skidanje pickle-a")
  157.                     messageConfigure = 'GIVE_MESSAGE'
  158.                     sFileName = PREFIX_FILE_PATH + 'porukaZaSlanje.txt'
  159.                     boolForSend = boolForSend + 1
  160.                     time.sleep(0.1) #MORA ZBOG TPP
  161.                     continue        #MORA ZBOG TPP extra layer
  162.                 if boolForSend == 1:
  163.                     s.send(messageConfigure.encode())
  164.                     print('Poslao messageFile request serveru')
  165.                     sData = s.recv(1024)
  166.                     fDownloadFile = open(sFileName, "wb")
  167.                     while sData:
  168.                         if 'done031337' in str(sData):
  169.                             break
  170.                         fDownloadFile.write(sData)
  171.                         sData = s.recv(1024)
  172.                     print("Zavrseno skidanje poruke")
  173.                     fDownloadFile.close()
  174.                     messageFile = open(PREFIX_FILE_PATH + "porukaZaSlanje.txt", "r")
  175.                     lineRead = messageFile.readlines()
  176.                     for line in lineRead:
  177.                         #print('PORUKA : ', line)
  178.                         messageSend.append(line)
  179.                     boolForSend = boolForSend + 1
  180.                     messageConfigure = 'GIVE_PICKLE2'
  181.                     messageFile.close()
  182.                     sFileName = PREFIX_FILE_PATH + 'serverMe8mbersConfig.txt'
  183.                     time.sleep(0.1)
  184.                     continue
  185.                 if boolForSend == 2:
  186.                     BUFFER_SIZE = 1024
  187.                     messageConfigure = 'GIVE_PICKLE2'
  188.                     s.send(messageConfigure.encode())
  189.                
  190.                     print('Poslao serverListFile request serveru')
  191.                     fDownloadFile = PREFIX_FILE_PATH + "remembServers.pickle"
  192.                     with open(fDownloadFile, 'wb') as fw:
  193.                         msg = s.recv(BUFFER_SIZE)
  194.                         fsize = int(msg.decode('utf-8').strip())
  195.                         rsize = 0
  196.                         while True:
  197.                            data = s.recv(BUFFER_SIZE)
  198.                            rsize = rsize + len(data)
  199.                            fw.write(data)
  200.                            if  rsize >= fsize:
  201.                                break
  202.                     print("Zavrseno skidanje pickle-a 2")
  203.                     messageConfigure = 'GIVE_MESSAGE'
  204.                     sFileName = PREFIX_FILE_PATH + 'porukaZaSlanje.txt'
  205.                     boolForSend = boolForSend + 1
  206.                     time.sleep(0.1) #MORA ZBOG TPP
  207.                     continue        #MORA ZBOG TPP extra layer    
  208.                 if boolForSend == 3:
  209.                     print('LOGUJEM SE IN...')
  210.                     loop = asyncio.get_event_loop()
  211.                     loop.run_until_complete(start_process())
  212.                    
  213.                     return
  214.         def BMP(s):
  215.             return "".join((i if ord(i) < 10000 else '\ufffd' for i in s))
  216.  
  217.         #@client.event
  218.         #async def on_ready():
  219.          #    client.loop.create_task(start_bot())
  220.  
  221.         def random_string(length):
  222.              return ''.join(random.choice(string.ascii_letters) for m in range(1, length))
  223.  
  224.         def configure_message(message, length, idx):
  225.              global messageSend
  226.              message = messageSend[idx]
  227.              message1 = ''
  228.              message2 = ''
  229.              messageo = message
  230.              for i in range(1, randint(1, 30)):
  231.                   message2 += '!'
  232.              messageo = messageo.replace('!!!', message2)
  233.              #messageo = messageo.replace('/Gameplay', '/' + random_string(5))
  234.              #messageo = messageo.replace('trailer.html', 'trailer/' + random_string(5))
  235.              for i in range(1, randint(1,50)):
  236.                   message1 += '!'
  237.              return message + ' ' + message2
  238.         check_flaw = 0
  239.         async def start_bot():
  240.              pickle_in = open(PREFIX_FILE_PATH + "dict.pickle", "rb")
  241.              memberi_load = pickle.load(pickle_in)#
  242.              serverListReader = open(PREFIX_FILE_PATH + "remembServers.pickle", "rb")
  243.              loadListReader = pickle.load(serverListReader)#
  244.              dict_remember = {}
  245.              for passout in loadListReader:
  246.                      dict_remember[passout] = 0
  247.              serverListReader.close()
  248.              pickle_in.close()
  249.              random_seed = []
  250.              random_seed = [1, 6, 2, 4, 5, 3, 7]
  251.              global check_flaw1
  252.              regularMESSAGE = 'GIVE_DATA'
  253.              formatMESSAGE = ''
  254.              global messageSend
  255.              global s
  256.              global cnt
  257.              if len(messageSend) < 6:
  258.                      formatMESSAGE = 'MALA PORUKA, GASIM SE'
  259.                      s.send(formatMESSAGE.encode())
  260.                      s.close()
  261.                      print('GASIM SE')
  262.                      sys.exit(0)
  263.              while True:
  264.                 try:
  265.                         #if cnt == 100:
  266.                                 #driver.get('https://discordapp.com/activity')
  267.                                 #await asyncio.sleep(2)
  268.  
  269.                         try:
  270.                                 WebDriverWait(driver, 20).until(ec.presence_of_element_located((By.XPATH, "//div[@class='guildSeparator-1X4GQ1']")))
  271.                         except Exception as e:
  272.                                 await asyncio.sleep(60 + randint(1, 13))
  273.                                 continue
  274.  
  275.                         gl = driver.find_elements_by_xpath("//div[@class='guildSeparator-1X4GQ1']/following-sibling::div[contains(@class, 'guild-1EfMGQ')]/descendant::a")
  276.  
  277.                         cursrvs = []
  278.                        
  279.                         for guild in gl:
  280.                                 srvr = str(guild.get_attribute('aria-label'))
  281.                                 cursrvs.append(srvr)
  282.  
  283.                         for x in oServers:
  284.                                 if x not in cursrvs:
  285.                                         if x not in cachedKicks:
  286.                                                 print('Server ' + x + ' ne postoji u listi originalnih, DOBIO KICK')
  287.                                                 cachedKicks.append(x)
  288.                                                 kicksToPerform.append(x)
  289.                        
  290.                         #perform pending kicks
  291.                         if len(kicksToPerform) > 0:
  292.                                 por = 'LOSE ' + kicksToPerform.pop(0)
  293.                                 s.send(por.encode())
  294.                                 print('Poslao serveru pending kick')
  295.                                 await asyncio.sleep(5)
  296.                                 continue
  297.                        
  298.                         s.send(regularMESSAGE.encode())
  299.                         print('Poslao REQ serveru')
  300.                         #await asyncio.sleep(1)
  301.                         data = s.recv(2048)
  302.                         if 'stop' in str(data):
  303.                             print('Stopirana sesija')
  304.                             break
  305.                         if 'napusti' in str(data):
  306.                             await asyncio.sleep((60 * 60) * 6)
  307.                             print('VRATIO SAM SE IZ OKIDANJA')
  308.                         if not data:
  309.                             await asyncio.sleep(5)
  310.                             continue
  311.                         next_member = int(data)
  312.                         random_index = randrange(len(random_seed))
  313.                         print('Dobio novi zadatak za izvrsavanje')
  314.      
  315.                         await asyncio.sleep(2)
  316.                        
  317.                         bdy = driver.find_element_by_tag_name("body")
  318.                         bdyactions = ActionChains(driver)
  319.                         bdyactions.move_to_element(bdy).click().send_keys(Keys.ENTER).perform()
  320.  
  321.                
  322.                         try:
  323.                                 inputbox =WebDriverWait(driver, 20).until(ec.presence_of_element_located((By.XPATH, "//input[@type='text']")))
  324.                                 print('Located input box.')
  325.                                 driver.execute_script('arguments[0].scrollIntoView(true)', inputbox)
  326.                         except Exception as e:
  327.                                 print(str(e))
  328.                                 print('Couldnt find search box!')
  329.        
  330.                                 await asyncio.sleep(60 + randint(1, 13))
  331.                                 continue
  332.  
  333.                         await asyncio.sleep(10)
  334.                         res = driver.find_element_by_xpath("//input[@type='text']")
  335.                         ActionChains(driver).move_to_element(res).click().send_keys(Keys.ENTER).perform()
  336.                         print('Otvaram Search Members...')
  337.                         await asyncio.sleep(3)
  338.                         ele = WebDriverWait(driver, 10).until(ec.presence_of_element_located((By.XPATH, "//input[@value='@']")))
  339.                         driver.execute_script('arguments[0].scrollIntoView(true)', ele)
  340.                         driver.execute_script('arguments[0].focus()', inputbox)
  341.                         ActionChains(driver).move_to_element(ele).click().perform()
  342.                         await asyncio.sleep(1)
  343.                         try:
  344.                                 ActionChains(driver).move_to_element(ele).send_keys(memberi_load[next_member].name).perform()
  345.                                 await asyncio.sleep(2)
  346.                                 ActionChains(driver).move_to_element(ele).send_keys('#' + memberi_load[next_member].discriminator).perform()
  347.                         except Exception as e:
  348.                                 print('Preskocio memebera ime ne valja ', memberi_load[next_member].name, ' na serveru ', loadListReader[next_member], ' ', datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
  349.                                 formatMESSAGE = 'Poslao '+ str(cnt) + '. poruku memberu '+ BMP(memberi_load[next_member].name) + '- u na serveru ' + loadListReader[next_member] + ' FAILURE ' + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
  350.                                 s.send(formatMESSAGE.encode())
  351.                                 cnt += 1
  352.                                 await asyncio.sleep(60 + randint(1, 13))
  353.                                 continue
  354.  
  355.                         try:
  356.                                 WebDriverWait(driver, 15).until(ec.presence_of_element_located((By.CSS_SELECTOR, ".resultFocused-3aIoYe")))
  357.                                 ActionChains(driver).send_keys(Keys.ENTER).perform()
  358.                                 await asyncio.sleep(3)
  359.                                 WebDriverWait(driver, 10).until(ec.presence_of_element_located((By.XPATH, "//textarea[@placeholder='Message @"+memberi_load[next_member].name+"']")))
  360.                                 res3 = driver.find_element_by_xpath("//textarea[@placeholder='Message @"+memberi_load[next_member].name+"']")
  361.                                 res3.send_keys(configure_message(messageSend, 5, random_index))
  362.                                 res3.send_keys(Keys.ENTER)
  363.                                 await asyncio.sleep(2)          
  364.                         except Exception as e:
  365.                                 print(str(e))
  366.                                 ActionChains(driver).send_keys(Keys.ESCAPE).perform()
  367.                                 await asyncio.sleep(2)
  368.                                 ActionChains(driver).send_keys(Keys.ESCAPE).perform()
  369.                                 form = 'Poslao '+ str(cnt) + '. poruku memberu '+ BMP(memberi_load[next_member].name) + '- u na serveru ' + loadListReader[next_member] + ' FAILURE ' + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
  370.                                 print('Nije moguce poslati poruku ', memberi_load[next_member].name, 'na serveru ', loadListReader[next_member], ' greska = ', str(e), datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
  371.                                 print('RAZLOG: Nisam nasao memebera u listi...')
  372.                                 s.send(form.encode())
  373.                                 cnt += 1
  374.                                 await asyncio.sleep(60 + randint(1, 13))
  375.                                 continue
  376.                        
  377.                         try:
  378.                                 WebDriverWait(driver, 10).until(ec.presence_of_element_located((By.XPATH, "//a[@href='/activity']")))
  379.                                 act = driver.find_element_by_xpath("//a[@href='/activity']")
  380.                                 driver.execute_script('arguments[0].focus()', act)
  381.                                 try:
  382.                                         print('Clicked activity 1st time')
  383.                                         act.click()
  384.                                 except Exception as e:
  385.                                         print('Clicked activity 2nd time')
  386.                                         bu = driver.find_element_by_xpath("//a[@href='/activity']")
  387.                                         bu.click()
  388.    
  389.                         except Exception as e:
  390.                                 print(str(e))
  391.  
  392.                         print('Poslao ', cnt, '. poruku memberu ', memberi_load[next_member].name, '- u na serveru ', loadListReader[next_member], ' ', datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
  393.                         formatMESSAGE = 'Poslao '+ str(cnt) + '. poruku memberu '+ BMP(memberi_load[next_member].name) + '- u na serveru ' + loadListReader[next_member] + ' ' + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
  394.                         s.send(formatMESSAGE.encode())
  395.                         cnt = cnt + 1
  396.                         #if cnt % (48) == 0: #prosti
  397.                         #        await asyncio.sleep(970 + randint(1, 5))
  398.                         #else:
  399.                         await asyncio.sleep(60 + randint(1, 13))
  400.                 except Exception as e:
  401.                     porukaLOG = 'Nije moguce poslati poruku ' + BMP(memberi_load[next_member].name) + ' greska = ' + str(e) + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
  402.                     print('Nije moguce poslati poruku ', BMP(memberi_load[next_member].name), 'na serveru ', loadListReader[next_member], ' greska = ', str(e), datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
  403.                     s.send(porukaLOG.encode())
  404.                     await asyncio.sleep(60 + randint(1, 13))
  405.                    
  406.              print('Bot zavrsio sa radom')
  407.              s.close()
  408.              sys.exit(0)
  409.         init_client()
  410. except Exception as e:
  411.         s.close()
  412.         print(str(e))
  413.         print('GASIM SE1')
  414.         sys.exit(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement