Last active
July 20, 2023 16:29
-
-
Save qwqtoday/b5916a6144eb87081d4aec197fef2ae1 to your computer and use it in GitHub Desktop.
Register a Roblox account and prints the roblosecurity token
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # import stuffs | |
| from selenium import webdriver | |
| from selenium.webdriver.common.by import By | |
| from selenium.webdriver.support.ui import Select, WebDriverWait | |
| from selenium.webdriver.remote.webelement import WebElement | |
| import datetime | |
| from enum import Enum | |
| # Only 2 gender, use OTHER if you don't want to set it | |
| class Gender(Enum): | |
| MALE = "MaleButton" | |
| FEMALE = "FemaleButton" | |
| OTHER = None | |
| def signup_element_is_loaded(driver: webdriver.Edge) -> None | WebElement: | |
| return driver.find_element(By.ID, "signup") | |
| def signup_button_is_enabled(driver: webdriver.Edge) -> bool: | |
| return driver.find_element(By.ID, "signup-button").is_enabled() | |
| def get_roblosecurity_cookie(driver: webdriver.Edge) -> str | None: | |
| cookie = driver.get_cookie(".ROBLOSECURITY") | |
| if cookie is None: | |
| return cookie.get("value") | |
| def set_birthday(driver: webdriver.Edge, date: datetime.date) -> None: | |
| day_select = Select(driver.find_element(By.ID, "DayDropdown")) | |
| month_select = Select(driver.find_element(By.ID, "MonthDropdown")) | |
| year_select = Select(driver.find_element(By.ID, "YearDropdown")) | |
| # Select day and month with index | |
| day_select.select_by_index(date.day) | |
| month_select.select_by_index(date.month) | |
| # Select with value because year doesn't follow the index | |
| year_select.select_by_value(f"{date.year}") | |
| def set_username(driver: webdriver.Edge, username: str) -> None: | |
| username_input = driver.find_element(By.ID, "signup-username") | |
| username_input.send_keys(username) | |
| def set_password(driver: webdriver.Edge, password: str) -> None: | |
| password_input = driver.find_element(By.ID, "signup-password") | |
| password_input.send_keys(password) | |
| def set_gender(driver: webdriver.Edge, gender: Gender) -> None: | |
| if gender.value is None: | |
| return | |
| gender_button = driver.find_element(By.ID, gender.value) | |
| gender_button.click() | |
| # Creates a Roblox account, and returns the cookie. If it fails it will return None | |
| def create_roblox_account(birth: datetime.date, username: str, password: str, gender: Gender) -> str | None: | |
| # Create the driver | |
| driver : webdriver.Edge = webdriver.Edge() | |
| # Go to Roblox website | |
| driver.get("https://roblox.com/") | |
| # Wait until signup element is loaded. | |
| WebDriverWait(driver, 5).until(signup_element_is_loaded) | |
| # Set the information | |
| set_birthday(driver, birth) | |
| set_username(driver, username) | |
| set_password(driver, password) | |
| set_gender(driver, gender) | |
| # Wait until the signup button is enabled | |
| WebDriverWait(driver, 5).until(signup_button_is_enabled) | |
| # Find the signup button, and click on it | |
| driver.find_element(By.ID, "signup-button").click() | |
| # Wait until the roblosecurity cookie exists | |
| WebDriverWait(driver, 300).until(get_roblosecurity_cookie) | |
| # Get the .ROBLOSECURITY cookie and return it | |
| ROBLOSECURITY = get_roblosecurity_cookie(driver) | |
| return ROBLOSECURITY | |
| # Testing the program | |
| if __name__ == "__main__": | |
| import string | |
| # we are literally generating passwords, use the secrets module or you are using a insecure password. | |
| import secrets | |
| random = secrets.SystemRandom() | |
| # Make the random.randint function rint, so I can consider this "cleaner" code | |
| rint = random.randint | |
| year , month , day= rint(1985, 2005), rint(1, 12), rint(1, 28) | |
| birth = datetime.date(year, month, day) | |
| username = "".join(random.choices(string.ascii_letters + string.digits, k=16)) | |
| password = "".join(random.choices(string.ascii_letters + string.digits, k=30)) | |
| cookie = create_roblox_account(birth, username, password, Gender.OTHER) | |
| print(cookie) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment