Skip to content

Instantly share code, notes, and snippets.

@rpgraham84
Created May 31, 2018 17:27
Show Gist options
  • Save rpgraham84/7967cb57a16a90943b44374023130f47 to your computer and use it in GitHub Desktop.
Save rpgraham84/7967cb57a16a90943b44374023130f47 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3.6
import os
import sys
import time
import string
import random
import requests
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def rstring():
return ''.join(random.choice(string.ascii_uppercase + string.ascii_lowercase) for _ in range(10))
def online(check_google=True):
try:
text = requests.get("http://google.com").text.lower()
except:
print(sys.exc_info())
return False
if check_google:
return "i'm feeling lucky" in text
return "xfinity" in text
def authenticate():
os.system('service NetworkManager stop')
os.system('ifconfig wlan0 down')
os.system('macchanger -a wlan0')
os.system('ifconfig wlan0 up')
os.system('service NetworkManager start')
os.system('echo "nameserver 8.8.8.8" > /etc/resolv.conf')
os.system('ifconfig eth0 192.168.0.1 netmask 255.255.255.0')
FIRST_NAME = rstring()
LAST_NAME = rstring()
PASSWORD = rstring() + "1"
EMAIL = f'{rstring()}@{rstring()}.com'
ZIP_CODE = ''.join(random.choice(string.digits) for _ in range(5))
SECRET = rstring()
driver = webdriver.Firefox()
driver.implicitly_wait(10)
while not online(check_google=False):
continue
driver.get("http://msn.com")
assert "xfinity" in driver.title.lower()
elem = WebDriverWait(driver, 120).until(
EC.element_to_be_clickable((By.ID, "amdocs_signup"))
)
elem.click()
elem = WebDriverWait(driver, 120).until(
EC.element_to_be_clickable((By.NAME, "offerListInput"))
)
elem.click()
elem = WebDriverWait(driver, 120).until(
EC.element_to_be_clickable((By.ID, "continueButton"))
)
elem.click()
elem = WebDriverWait(driver, 120).until(
EC.element_to_be_clickable((By.ID, "registerFirstName"))
)
elem.click()
elem.send_keys(FIRST_NAME)
elem = WebDriverWait(driver, 120).until(
EC.element_to_be_clickable((By.ID, "registerLastName"))
)
elem.click()
elem.send_keys(LAST_NAME)
elem = WebDriverWait(driver, 120).until(
EC.element_to_be_clickable((By.ID, "registerEmail"))
)
elem.click()
elem.send_keys(EMAIL)
elem = WebDriverWait(driver, 120).until(
EC.element_to_be_clickable((By.ID, "registerZipCode"))
)
elem.click()
elem.send_keys(ZIP_CODE)
elem = WebDriverWait(driver, 120).until(
EC.element_to_be_clickable((By.ID, "registerContinueButton"))
)
elem.click()
elem = WebDriverWait(driver, 120).until(
EC.element_to_be_clickable((By.ID, "usePersonalEmail"))
)
elem.click()
elem = driver.find_element_by_id("password")
elem.click()
elem.send_keys(PASSWORD)
elem = driver.find_element_by_id("passwordRetype")
elem.click()
elem.send_keys(PASSWORD)
elem = WebDriverWait(driver, 120).until(
EC.element_to_be_clickable((By.ID, "dk0-secretQuestion"))
)
elem.click()
elem = WebDriverWait(driver, 120).until(
EC.element_to_be_clickable((By.ID, "dk0-What-was your first car (make and model)?"))
)
elem.click()
# elem = WebDriverWait(driver, 120).until(
# EC.element_to_be_clickable((By.ID, "secretQuestion"))
# )
# select = Select(elem)
# select.select.select_by_visible_text("model")
elem = WebDriverWait(driver, 120).until(
EC.element_to_be_clickable((By.ID, "secretAnswer"))
)
elem.click()
elem.send_keys(SECRET)
elem = WebDriverWait(driver, 120).until(
EC.element_to_be_clickable((By.ID, "submitButton"))
)
elem.click()
elem = WebDriverWait(driver, 120).until(
EC.element_to_be_clickable((By.ID, "orderConfirmationActivatePass"))
)
elem.click()
driver.close()
def loop():
fails = 0
while True:
s_duration = 5
if online():
print(f"Online as of {time.strftime('%c')} | Fails : {fails}", end="\r")
if fails > 0:
fails -= 1
else:
fails += 1
if fails >= 2:
print(f"Authenticating at {time.strftime('%c')} | Fails : {fails}")
try:
authenticate()
fails = 0
s_duration = 0
while not online():
continue
print(f"Successfully authenticated at {time.strftime('%c')}")
except Exception:
print(f"Failed to authenticate at {time.strftime('%c')} | Fails : {fails}")
print(sys.exc_info())
time.sleep(s_duration)
if __name__ == '__main__':
loop()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment