| import random |
| import string |
| import threading |
| import logging |
| from selenium import webdriver |
| from selenium.webdriver.common.by import By |
| from selenium.webdriver.chrome.service import Service |
| from selenium.webdriver.chrome.options import Options |
| from selenium.webdriver.support.ui import WebDriverWait |
| from selenium.webdriver.support import expected_conditions as EC |
| from webdriver_manager.chrome import ChromeDriverManager |
| from fake_useragent import UserAgent |
|
|
| logging.basicConfig( |
| level=logging.INFO, |
| format="%(asctime)s [%(levelname)s] [Thread-%(threadName)s] %(message)s", |
| handlers=[logging.StreamHandler()] |
| ) |
|
|
| names = [ |
| "John", "Jane", "Alex", "Chris", "Taylor", "Morgan", "Jordan", "Cameron", "Sydney", "Blake", |
| "Casey", "Carter", "Riley", "Dakota", "Reese", "Peyton", "Rowan", "Dakota", "Quinn", "Emerson", |
| "Avery", "Skyler", "Ellis", "Phoenix", "Jesse", "Hayden", "Kendall", "Finley", "Dylan", "Zoe", |
| "Kai", "Emmett", "Addison", "Charlie", "Sierra", "Emery", "Grayson", "Kai", "Mackenzie", "Jordan", |
| "Parker", "Maddox", "Jordan", "Adley", "Bailey", "Elliot", "Logan", "Aubrey", "Reagan", "Finley", |
| "Cameron", "Wesley", "Hunter", "Casey", "Ashley", "Madison", "Payton", "Cassidy", "Tatum", "Drew", |
| "Brooklyn", "Evan", "Harper", "Sawyer", "Finley", "Willa", "Kaylee", "Kennedy", "Leah", "Sloane", |
| "Emery", "Morgan", "Kennedy", "Bailey", "Maya", "Delaney", "Stella", "Eden", "Landon", "Zane", |
| "Mila", "Zara", "Elijah", "Amos", "Brianna", "Lucia", "Aidan", "Caleb", "Elliott", "Isabella", |
| "Carson", "Vivian", "Jaxon", "Arianna", "Roman", "Ava", "Jackson", "Chloe", "Ivy", "Mason", "Maddox", |
| "Scarlett", "Abigail", "Noah", "Piper", "Elliana", "Joseph", "Aiden", "Zane", "Lilly", "Rylee" |
| ] |
|
|
| def generate_password(length=10): |
| characters = string.ascii_letters + string.digits |
| password = ''.join(random.choice(characters) for i in range(length)) |
| logging.info(f"Generated password: {password}") |
| return password |
|
|
|
|
| def generate_email(name): |
| random_part = ''.join(random.choices(string.ascii_lowercase + string.digits, k=5)) |
| email = name.lower() + random_part + "@gmail.com" |
| logging.info(f"Generated email: {email}") |
| return email |
|
|
| def sign_up(): |
| logging.info("Starting sign up process...") |
| try: |
| options = Options() |
|
|
| ua = UserAgent() |
| user_agent = ua.random |
| options.add_argument(f"user-agent={user_agent}") |
| options.add_argument("--headless") |
| |
| service = Service(ChromeDriverManager().install()) |
| driver = webdriver.Chrome(service=service, options=options) |
| driver.delete_all_cookies() |
|
|
| driver.get("https://app.rwalayer.com/create-account") |
|
|
| name = random.choice(names) |
| email = generate_email(name) |
| password = "Kingmaskulit001" |
|
|
| username = email.split('@')[0] |
|
|
| wait = WebDriverWait(driver, 10) |
|
|
| email_field = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "app-input.ng-invalid:nth-child(1) > div:nth-child(1) > input:nth-child(1)"))) |
| email_field.send_keys(email) |
| logging.info(f"Entered email: {email}") |
|
|
| password_field = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "app-input.ng-invalid:nth-child(2) > div:nth-child(1) > input:nth-child(1)"))) |
| password_field.send_keys(password) |
| logging.info(f"Entered password: {password}") |
|
|
| checkbox = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "body > app-root > div > div > app-create-account > div > form > div > input"))) |
| checkbox.click() |
|
|
| submit_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".bg-white"))) |
| submit_button.click() |
|
|
| username_field = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "body > app-root > div > div > app-set-username > div > form > app-input > div > input"))) |
| username_field.send_keys(username) |
| logging.info(f"Entered username: {username}") |
|
|
| submit_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "body > app-root > div > div > app-set-username > div > button"))) |
| submit_button.click() |
|
|
| referral_field = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "body > app-root > div > div > app-referral-code > div > form > app-input > div > input"))) |
| referral_field.send_keys("Rzx001") |
| logging.info("Entered referral code: Rzx001") |
|
|
| referral_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "body > app-root > div > div > app-referral-code > div > div.flex.items-center.gap-4.w-full > button.flex-1.bg-white.rounded-full.h-\[46px\].grid.place-items-center.text-black.font-medium.text-base\/\[1\].opacity-100"))) |
| referral_button.click() |
|
|
| wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "body > app-root > div > div > app-home > div.flex.flex-col.p-6.items-start.gap-6 > div.flex.flex-col.gap-4 > span"))) |
| logging.info("Sign up completed successfully.") |
|
|
| driver.quit() |
|
|
| except Exception as e: |
| logging.error(f"Error during sign up: {e}") |
|
|
| def worker_thread(): |
| while True: |
| sign_up() |
| logging.info(f"Thread {threading.current_thread().name} selesai. Menunggu 1 menit...") |
|
|
| def multi_thread(): |
| threads = [] |
| for i in range(5): |
| thread = threading.Thread(target=sign_up, name=f"Thread-{i + 1}") |
| threads.append(thread) |
| thread.start() |
|
|
| multi_thread() |