Skip to content

Instantly share code, notes, and snippets.

@qwqtoday
Last active July 20, 2023 16:29
Show Gist options
  • Select an option

  • Save qwqtoday/b5916a6144eb87081d4aec197fef2ae1 to your computer and use it in GitHub Desktop.

Select an option

Save qwqtoday/b5916a6144eb87081d4aec197fef2ae1 to your computer and use it in GitHub Desktop.
Register a Roblox account and prints the roblosecurity token
# 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