Created
May 31, 2018 17:27
-
-
Save rpgraham84/7967cb57a16a90943b44374023130f47 to your computer and use it in GitHub Desktop.
This file contains 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
#!/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