Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- from selenium import webdriver
- from selenium.webdriver.common.action_chains import ActionChains
- import datetime
- import smtplib
- import time
- import imaplib
- import email
- import traceback
- FROM_EMAIL = "********@gmail.com"
- FROM_PWD = "********"
- SMTP_SERVER = "imap.gmail.com"
- SMTP_PORT = 993
- chromedriver_path = "X:\\chromedriver.exe"
- def format_td(seconds, digits=2):
- isec, fsec = divmod(round(seconds*10**digits), 10**digits)
- return ("{}.{:0%d.0f}" % digits).format(datetime.timedelta(seconds=isec), fsec)
- def de_accentize(string):
- character_pairs = {"á" : "a", "é" : "e", "í" : "i", "ó" : "o", "ö" : "o", "ő" : "o", "ú" : "u", "ü" : "u", "ű" : "u"}
- for character in character_pairs:
- if character in string:
- string = string.replace(character, character_pairs[character])
- elif character.upper() in string:
- string = string.replace(character.upper(), character_pairs[character].upper())
- return string
- class Person:
- def __init__(self, person_id):
- self.id = person_id
- self.name = self.generate_random_name()
- self.age = random.randint(18,85)
- self.email = "orbanegyg3ci+" + str(self.id).zfill(5) + de_accentize(self.family_name.lower() + "." + de_accentize(self.first_name.lower().replace(" ", "."))) + "_" + str(self.age) + "@gmail.com"
- def generate_random_name(self, double_name_percentage = 5):
- family_names = ["NAGY","KOVÁCS","TÓTH","SZABÓ","HORVÁTH","VARGA","KISS","MOLNÁR","NÉMETH","FARKAS","BALOGH","PAPP","LAKATOS","TAKÁCS","JUHÁSZ","OLÁH","MÉSZÁROS","SIMON","RÁCZ","FEKETE","SZILÁGYI","TÖRÖK","FEHÉR","BALÁZS","GÁL","KIS","SZŰCS","ORSÓS","KOCSIS","FODOR","PINTÉR","SZALAI","SIPOS","MAGYAR","LUKÁCS","GULYÁS","BIRÓ","KIRÁLY","BALOG","LÁSZLÓ","BOGDÁN","JAKAB","KATONA","SÁNDOR","VÁRADI","BOROS","FAZEKAS","KELEMEN","ANTAL","OROSZ","SOMOGYI","FÜLÖP","VERES","BUDAI","VINCZE","HEGEDŰS","DEÁK","PAP","BÁLINT","ILLÉS","PÁL","VASS","SZŐKE","FÁBIÁN","VÖRÖS","LENGYEL","BOGNÁR","BODNÁR","JÓNÁS","SZÜCS","HAJDU","HALÁSZ","MÁTÉ","SZÉKELY","GÁSPÁR","KOZMA","PÁSZTOR","BAKOS","DUDÁS","VIRÁG","MAJOR","ORBÁN","HEGEDÜS","BARNA","NOVÁK","SOÓS","TAMÁS","NEMES","PATAKI","BALLA","FARAGÓ","KEREKES","BARTA","PÉTER","BORBÉLY","CSONKA","MEZEI","SÁRKÖZI","BERKI","MÁRTON"]
- first_names = [
- ["Gábor","László","Attila","Péter","Tamás","István","Zsolt","József","János","Csaba","Sándor","Róbert","Krisztián","Ferenc","András","Balázs","Tibor","Norbert","Szabolcs","Imre","György","Gergely","Lajos","Roland","Viktor","Gyula","Károly","Miklós","Mihály","Béla","Dániel","Ákos","Ádám","Richárd","Árpád","Dávid","Pál","Szilárd","Antal","Bálint","Levente","Márton","Géza","Kornél","Gergő","Kálmán","Endre","Nándor","Máté","Barnabás","Dénes","Jenő","Márk","Ernő","Mátyás","Ottó","Dezső","Bence","Vilmos","Ervin","Áron","Arnold","Olivér","Bertalan","Rudolf","Milán","Albert","Lóránt","Szilveszter","Andor","Kristóf","Barna","Győző","Henrik","Iván","Adrián","Erik","Jácint","Gusztáv"],
- ["Krisztina","Katalin","Mónika","Szilvia","Anita","Zsuzsanna","Éva","Judit","Ágnes","Tímea","Erika","Ildikó","Mária","Anikó","Melinda","Gabriella","Eszter","Beáta","Erzsébet","Viktória","Tünde","Edina","Adrienn","Bernadett","Rita","Edit","Orsolya","Hajnalka","Csilla","Renáta","Brigitta","Annamária","Veronika","Nikoletta","Marianna","Enikő","Ilona","Anna","Dóra","Nóra","Márta","Mariann","Barbara","Anett","Henrietta","Beatrix","Ibolya","Zsófia","Emese","Noémi","Zita","Réka","Nikolett","Gyöngyi","Kinga","Diána","Julianna","Zsanett","Zsuzsa","Magdolna","Klára","Margit","Lívia","Angéla","Petra","Piroska","Boglárka","Henriett","Alexandra","Irén","Szabina","Helga","Timea","Klaudia","Ivett","Izabella","Valéria","Júlia"]]
- rnd = random.randint(0,100)
- gender = random.randint(0,1) # A GENDER VESZÉLYES!!!!!!4 STOP SOROS
- if rnd < double_name_percentage:
- names = 2
- else:
- names = 1
- self.family_name = family_names[random.randint(0, len(family_names)-1)].lower().capitalize()
- self.first_name = ""
- for n in range(names):
- selected_name = first_names[gender][random.randint(0,len(first_names[gender])-1)]
- if self.first_name == "":
- self.first_name = selected_name
- else:
- self.first_name = self.first_name + " " + selected_name
- def register(self):
- driver.get("https://nemzetikonzultacio.kormany.hu/")
- family_name_input = driver.find_element_by_id("mat-input-0")
- family_name_input.send_keys(self.family_name)
- time.sleep(.1)
- first_name_input = driver.find_element_by_id("mat-input-1")
- first_name_input.send_keys(self.first_name)
- time.sleep(.1)
- # age_input = driver.find_element_by_xpath("//*[@class='small-input ng-pristine ng-invalid ng-touched']")
- age_input = driver.find_element_by_xpath("//input[@placeholder='Életkor * (kötelező)']")
- age_input.send_keys(self.age)
- time.sleep(.1)
- email_input = driver.find_element_by_id("mat-input-2")
- email_input.send_keys(self.email)
- driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
- cboxes = driver.find_elements_by_class_name("mat-checkbox-inner-container")
- for cbox in cboxes:
- cbox.click()
- time.sleep(.1)
- '''
- hun_checkbox = driver.find_element_by_id("mat-checkbox-1-input")
- hun_checkbox.click()
- time.sleep(.1)
- cbox_2 = driver.find_element_by_id("mat-checkbox-2-input")
- cbox_2.click()
- time.sleep(.1)
- buttons = driver.find_elements_by_css_selector("input[type='button']")
- '''
- reg_button = driver.find_element_by_xpath("//*[@class='btn w-auto']")
- reg_button.click()
- def check_email(self):
- email_received = False
- while email_received == False:
- print(".", end="", flush=True)
- try:
- mail = imaplib.IMAP4_SSL(SMTP_SERVER)
- mail.login(FROM_EMAIL,FROM_PWD)
- mail.select('inbox')
- data = mail.search(None, 'ALL')
- mail_ids = data[1]
- id_list = mail_ids[0].split()
- first_email_id = int(id_list[0])
- latest_email_id = int(id_list[-1])
- # for i in range(latest_email_id,first_email_id, -1):
- for i in range(latest_email_id,latest_email_id-1, -1):
- data = mail.fetch(str(i), '(RFC822)' )
- for response_part in data:
- arr = response_part[0]
- if isinstance(arr, tuple):
- msg = email.message_from_string(str(arr[1],'utf-8'))
- to = msg["Delivered-To"]
- if to == self.email:
- email_subject = msg['subject']
- email_from = msg['from']
- # print('From : ' + email_from + '\n')
- # print('Subject : ' + email_subject + '\n')
- # print(msg["Delivered-To"])
- # print(msg._payload[0].__dict__)
- part_list = list(msg._payload[1]._payload.split("<"))
- for counter, part in enumerate(part_list):
- if "a href" in part:
- url, junk = part.split('" target=3D"_blank"')
- url = url.replace('a href=3D"', "")
- url = url.replace("\r", "").replace("\n", "").replace("konzulta=cio", "konzultacio")
- self.custom_url = url
- email_received = True
- except Exception as e:
- traceback.print_exc()
- print(str(e))
- time.sleep(.25)
- def fill_form(self):
- actions = ActionChains(driver)
- driver.get(self.custom_url)
- time.sleep(.5)
- radio_buttons = driver.find_elements_by_css_selector("input[type='radio']")
- # radio_buttons = driver.find_elements_by_class_name("mat-radio-label")
- fill_pattern = list()
- fill_pattern_check = list()
- counter = 0
- for x in range(14):
- select = random.randint(0,1)
- fill_pattern.append(counter+select)
- fill_pattern_check.append(select)
- counter += 2
- # print("fill pattern", fill_pattern)
- # print("fill pattern check", fill_pattern_check)
- for counter, rb in enumerate(radio_buttons):
- # actions.move_to_element(rb).perform()
- driver.execute_script("return arguments[0].scrollIntoView(true);", rb)
- if counter in fill_pattern:
- # if 1 == 1:
- driver.execute_script("arguments[0].click();", rb)
- time.sleep(.05)
- else:
- pass
- reg_button = driver.find_element_by_xpath("//*[@class='btn submit-btn']")
- driver.execute_script("arguments[0].click();", reg_button)
- if __name__ == "__main__":
- driver = webdriver.Chrome(chromedriver_path)
- start_time = datetime.datetime.now()
- for x in range(100000):
- if x % 10 == 0:
- print("================================================================================\n -= NERbot 2.0 =- \nDISCLAIMER: a robot egy átlagos Fideszesnél is butább (talán még Hollik Istvánnál is,\n de ez nem biztos) és csak véletlenszerű válaszokat ad az egyes kérdésekre.\n A KÉRDÉSEKRE ADOTT VÁLASZOK NEM TÜKRÖZIK A ROBOT FEJLESZTŐJÉNEK ÁLLÁSPONTJÁT,\n A NERBOT KIZÁRÓLAGOS CÉLJA A KORMÁNYZATI INFORMATIKA SZÍNVONALÁNAK DEMONSTRÁLÁSA\n================================================================================\n")
- person = Person(person_id = x)
- person.start_time = datetime.datetime.now()
- print("{} vagyok, {} éves, a(z) {}. sorszámú NER-birka.\nRegisztrálok a(z) {} e-mailcímmel...".format(person.family_name + " " + person.first_name, person.age, person.id, person.email))
- person.register()
- print("Regisztráció megtörtént, várom az e-mailt")
- person.check_email()
- print("Megjött! Nyomás kitölteni: " + person.custom_url)
- person.fill_form()
- person.end_time = datetime.datetime.now()
- person.time = person.end_time - person.start_time
- person.seconds = format_td(person.time.seconds, digits=2)
- # person.time = person.time.strftime("%S") + "," + person.time.strftime("%f")[:2]
- total_time = datetime.datetime.now() - start_time
- print("Konzultáció kitöltve, {} másodpercig tartott, összes eltelt idő: {}\n".format(person.seconds, total_time))
- time.sleep(1)
- driver.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement