├── .gitignore ├── LICENSE ├── README.md ├── __banner └── myBanner.py ├── __colors__ └── colors.py ├── __constants └── const.py ├── __dwnldDrivers └── versions.py ├── bot.py ├── myccAcc.txt ├── prefBrowser.txt ├── setup.py └── webdriver └── .gitkeep /.gitignore: -------------------------------------------------------------------------------- 1 | #### Cache #### 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | #### Debug Files #### 6 | play.py 7 | play1.py 8 | play2.py -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Ammey Saini 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Edu-Mail-Generator-Mod 2 | For educational purposes 3 | All credits goes to the developer of this project 4 | - I just modified it 5 | // Added more colleges 6 | // Fixed errors. 7 | Let me know if you face any problem. 8 | 9 | ----- Generate Free Edu Mail(s) within minutes ----- 10 | 11 | ## Only For Educational Purpose ## 12 | ## ***Requirements*** 13 | 14 | - Python `3.7 or >` 15 | - Python `pip` 16 | 17 | ## ***Installation*** 18 | 19 | python3 setup.py 20 | It will download all required packages and webdrivers automatically based on your browsers versions (You need not to install them seprately) 21 | 22 | ## ***Usage*** 23 | 24 | python3 bot.py 25 | Follow the instructions to get started with generating your own edu mail 26 | 27 | ## ***Features*** 28 | 29 | - One click install/setup. 30 | - No programming knowledge needed (other then python3 with pip installed). 31 | - Setup will install all webdrivers needed automatically based on your browsers. 32 | - Many more features. 33 | 34 | ## ***Why should you use it ?*** 35 | 36 | - It saves the time by doing the work for you (It usually takes 10 to 15 minutes to fill a form manually) 37 | - No limit on creating edu mails. You can create as much as you need (preferred to use in limits) 38 | - Many benefits of having an edu mail like `Spotify 50% off` `Apple music 50% off` `Discount on Adobe CC` `Free amazon prime` and many more 39 | -------------------------------------------------------------------------------- /__banner/myBanner.py: -------------------------------------------------------------------------------- 1 | import colorama 2 | import random 3 | import sys 4 | 5 | def bannerTop(): 6 | banner = ''' 7 | _____ _ __ __ _ _ ____ 8 | | ____|__| |_ _ | \/ | __ _(_) | / ___| ___ _ __ 9 | | _| / _` | | | | | |\/| |/ _` | | | | | _ / _ \ '_ \\ 10 | | |__| (_| | |_| | | | | | (_| | | | | |_| | __/ | | |_ 11 | |_____\__,_|\__,_| |_| |_|\__,_|_|_| \____|\___|_| |_(_) 12 | Github Repo - https://git.io/JJisT/\n\n Modified by Imran 13 | ''' 14 | 15 | bad_colors = ['BLACK', 'WHITE', 'LIGHTBLACK_EX', 'RESET'] 16 | codes = vars(colorama.Fore) 17 | colors = [codes[color] for color in codes if color not in bad_colors] 18 | colored_chars = [random.choice(colors) + char for char in banner] 19 | 20 | return ''.join(colored_chars) 21 | -------------------------------------------------------------------------------- /__colors__/colors.py: -------------------------------------------------------------------------------- 1 | from colorama import init, Fore, Back, Style 2 | 3 | init(autoreset=True) 4 | # colors foreground text: 5 | fc = Fore.CYAN 6 | fg = Fore.GREEN 7 | fw = Fore.WHITE 8 | fr = Fore.RED 9 | fb = Fore.BLUE 10 | fy = Fore.YELLOW 11 | fm = Fore.MAGENTA 12 | 13 | 14 | # colors background text: 15 | bc = Back.CYAN 16 | bg = Back.GREEN 17 | bw = Back.WHITE 18 | br = Back.RED 19 | bb = Back.BLUE 20 | by = Fore.YELLOW 21 | bm = Fore.MAGENTA 22 | 23 | # colors style text: 24 | sd = Style.DIM 25 | sn = Style.NORMAL 26 | sb = Style.BRIGHT 27 | -------------------------------------------------------------------------------- /__constants/const.py: -------------------------------------------------------------------------------- 1 | from faker import Faker 2 | import random 3 | 4 | ######## This script is only for educational purpose ######## 5 | ######## use it on your own RISK ######## 6 | ######## I'm not responsible for any loss or damage ######## 7 | ######## caused to you using this script ######## 8 | ######## Github Repo - https://git.io/JJisT/ ######## 9 | 10 | start_url = 'https://www.opencccapply.net/gateway/apply?cccMisCode=' 11 | 12 | clg_ids = ['941', '311', '361', '233', '431', '371'] 13 | 14 | allColleges = ['MSJC College', 'Contra Costa College', 'City College', 'Sacramento College', 'Ohlone College', 'Cañada College'] 15 | 16 | country_codes = ['855', '561', '800', '325', '330', '229'] 17 | 18 | fake = Faker('en_US') 19 | 20 | ex = fake.name().split(' ') 21 | 22 | firstName = ex[0] 23 | LastName = ex[1] 24 | studentAddress = fake.address() 25 | randomMonth = random.randint(1, 12) 26 | randomDay = random.randint(1, 27) 27 | randomYear = random.randint(1996, 1999) 28 | randomEduMonth = random.randint(1, 12) 29 | randomEduDay = random.randint(1, 27) 30 | eduYears = [2019, 2020] 31 | randomEduYear = random.choice(eduYears) 32 | -------------------------------------------------------------------------------- /__dwnldDrivers/versions.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | import subprocess 4 | try: 5 | import requests 6 | except ImportError: 7 | subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'requests']) 8 | finally: 9 | import requests 10 | import urllib, time 11 | from io import BytesIO 12 | from zipfile import ZipFile 13 | import tarfile 14 | try: 15 | from clint.textui import progress 16 | except ImportError: 17 | subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'clint']) 18 | finally: 19 | from clint.textui import progress 20 | 21 | ######## This script is only for educational purpose ######## 22 | ######## use it on your own RISK ######## 23 | ######## I'm not responsible for any loss or damage ######## 24 | ######## caused to you using this script ######## 25 | ######## Github Repo - https://git.io/JJisT/ ######## 26 | 27 | def os_arch(): 28 | os_arch = '32' 29 | if os.name == 'nt': 30 | output = subprocess.check_output(['wmic', 'os', 'get', 'OSArchitecture']) 31 | os_arch = output.split()[1].decode('utf-8').replace('-bit', '') 32 | else: 33 | output = subprocess.check_output(['uname', '-m']) 34 | if type(output) != str: 35 | output = output.decode('utf-8') 36 | if 'x86_64' in output: 37 | os_arch = '64' 38 | else: 39 | os_arch = '32' 40 | return os_arch 41 | 42 | def get_platform_architecture_firefox(): 43 | if sys.platform.startswith('linux'): 44 | platform = 'linux' 45 | architecture = os_arch() 46 | elif sys.platform == 'darwin': 47 | platform = 'mac' 48 | architecture = 'os' 49 | elif sys.platform.startswith('win'): 50 | platform = 'win' 51 | architecture = os_arch() 52 | else: 53 | raise RuntimeError('Could not determine geckodriver download URL for this platform.') 54 | return platform, architecture 55 | 56 | def get_platform_architecture_chrome(): 57 | if sys.platform.startswith('linux') and sys.maxsize > 2 ** 32: 58 | platform = 'linux' 59 | architecture = '64' 60 | elif sys.platform == 'darwin': 61 | platform = 'mac' 62 | architecture = '64' 63 | elif sys.platform.startswith('win'): 64 | platform = 'win' 65 | architecture = '32' 66 | else: 67 | raise RuntimeError('Could not determine chromedriver download URL for this platform.') 68 | return platform, architecture 69 | 70 | def get_firefox_version(): 71 | """ 72 | :return: the version of firefox installed on client 73 | """ 74 | platform, _ = get_platform_architecture_firefox() 75 | if platform == 'linux': 76 | try: 77 | with subprocess.Popen(['firefox', '--version'], stdout=subprocess.PIPE) as proc: 78 | version = proc.stdout.read().decode('utf-8').replace('Mozilla Firefox', '').strip() 79 | except: 80 | return None 81 | elif platform == 'mac': 82 | try: 83 | process = subprocess.Popen(['/Applications/Firefox.app/Contents/MacOS/firefox', '--version'], stdout=subprocess.PIPE) 84 | version = process.communicate()[0].decode('UTF-8').replace('Mozilla Firefox', '').strip() 85 | except: 86 | return None 87 | elif platform == 'win': 88 | path1 = 'C:\\PROGRA~1\\Mozilla Firefox\\firefox.exe' 89 | path2 = 'C:\\PROGRA~2\\Mozilla Firefox\\firefox.exe' 90 | if os.path.exists(path1): 91 | process = subprocess.Popen([path1, '-v', '|', 'more'], stdout=subprocess.PIPE) 92 | elif os.path.exists(path2): 93 | process = subprocess.Popen([path2, '-v', '|', 'more'], stdout=subprocess.PIPE) 94 | else: 95 | return 96 | version = process.communicate()[0].decode('UTF-8').replace('Mozilla Firefox', '').strip() 97 | else: 98 | return 99 | return version 100 | 101 | 102 | def get_chrome_version(): 103 | """ 104 | :return: the version of chrome installed on client 105 | """ 106 | platform, _ = get_platform_architecture_chrome() 107 | if platform == 'linux': 108 | try: 109 | with subprocess.Popen(['google-chrome', '--version'], stdout=subprocess.PIPE) as proc: 110 | version = proc.stdout.read().decode('utf-8').replace('Chromium', '').strip() 111 | version = version.replace('Google Chrome', '').strip() 112 | except: 113 | return None 114 | elif platform == 'mac': 115 | try: 116 | process = subprocess.Popen(['/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', '--version'], stdout=subprocess.PIPE) 117 | version = process.communicate()[0].decode('UTF-8').replace('Google Chrome', '').strip() 118 | except: 119 | return None 120 | elif platform == 'win': 121 | try: 122 | process = subprocess.Popen( 123 | ['reg', 'query', 'HKEY_CURRENT_USER\\Software\\Google\\Chrome\\BLBeacon', '/v', 'version'], 124 | stdout=subprocess.PIPE, stderr=subprocess.DEVNULL, stdin=subprocess.DEVNULL 125 | ) 126 | version = process.communicate()[0].decode('UTF-8').strip().split()[-1] 127 | except: 128 | return None 129 | else: 130 | return 131 | try: 132 | version = version.split(' ')[0] 133 | except: 134 | pass 135 | return version 136 | 137 | def get_latest_geckodriver_version(): 138 | """ 139 | :return: the latest version of geckodriver 140 | """ 141 | url = requests.get('https://github.com/mozilla/geckodriver/releases/latest').url 142 | if '/tag/' not in url: 143 | return 144 | return url.split('/')[-1] 145 | 146 | def get_dwnld_url_firefox(version): 147 | platform, architecture = get_platform_architecture_firefox() 148 | 149 | if platform == 'win': 150 | return 'https://github.com/mozilla/geckodriver/releases/download/' + version + '/geckodriver-' + version + '-' + platform + architecture + '.zip' 151 | else: 152 | return 'https://github.com/mozilla/geckodriver/releases/download/' + version + '/geckodriver-' + version + '-' + platform + architecture + '.tar.gz' 153 | def get_major_version(version): 154 | """ 155 | :param version: the version of chrome 156 | :return: the major version of chrome 157 | """ 158 | return version.split('.')[0] 159 | 160 | def get_chrome_driver_v(version): 161 | """ 162 | :param version: the version of chrome 163 | :return: the chromedriver version needed 164 | """ 165 | return requests.get('https://chromedriver.storage.googleapis.com/LATEST_RELEASE_' + str(version)).text 166 | 167 | def get_chrome_driver_dwnld_url(version): 168 | """ 169 | :param version: the version of webdriver 170 | :return: download url of webdriver 171 | """ 172 | platform, architecture = get_platform_architecture_chrome() 173 | 174 | return 'https://chromedriver.storage.googleapis.com/' + str(version) + '/chromedriver_' + platform + str(architecture) + '.zip' 175 | 176 | def dwnld_zip_file(url, save_path, chunk_size=128): 177 | 178 | print('Downloading...') 179 | 180 | r = requests.get(url) 181 | 182 | total_length = int(r.headers['Content-Length']) 183 | 184 | if total_length is None or total_length == 0: 185 | print('Download failed') 186 | exit() 187 | 188 | with ZipFile(BytesIO(r.content)) as my_zip_file: 189 | for chunk in progress.bar(r.iter_content(chunk_size=1024), expected_size=(total_length/1024) + 1): 190 | pass 191 | print('Download Successful') 192 | my_zip_file.extractall(save_path) 193 | 194 | def dwnld_tar_file(url, save_path): 195 | 196 | print('Downloading...') 197 | 198 | response = requests.get(url) 199 | 200 | total_length = sum(len(chunk) for chunk in response.iter_content(8196)) 201 | 202 | if total_length is None or total_length == 0: 203 | print('Download Failed') 204 | exit() 205 | 206 | with tarfile.open(fileobj=BytesIO(response.content), mode='r|gz') as my_tar_file: 207 | for chunk in progress.bar(response.iter_content(chunk_size=1024), expected_size=(total_length/1024) + 1): 208 | pass 209 | print('Download Successful') 210 | my_tar_file.extractall(save_path) 211 | 212 | ######## For Chrome ######## 213 | 214 | def setup_Chrome(version): 215 | mjVer = get_major_version(version) 216 | if mjVer != None: 217 | print('Installed version - ' + str(mjVer)) 218 | chromeDv = get_chrome_driver_v(mjVer) 219 | print('Chrome Driver Version Needed -', chromeDv) 220 | dwnldLink = get_chrome_driver_dwnld_url(chromeDv) 221 | 222 | dwnld_zip_file(dwnldLink, './webdriver') 223 | else: 224 | print('Chrome is not downloaded') 225 | 226 | 227 | ######## For Firefox ######## 228 | 229 | def setup_Firefox(firefox_ver): 230 | arc_user = get_platform_architecture_firefox() 231 | # firefox_ver = get_firefox_version() 232 | if firefox_ver != None: 233 | print('Installed verision - ' + str(firefox_ver)) 234 | latestDriverv = get_latest_geckodriver_version() 235 | print('Latest geckodriver version - ' + latestDriverv) 236 | dwnldLink = get_dwnld_url_firefox(latestDriverv) 237 | if dwnldLink.endswith('.tar.gz'): 238 | dwnld_tar_file(dwnldLink, './webdriver') 239 | else: 240 | pass 241 | dwnld_zip_file(dwnldLink, './webdriver') 242 | else: 243 | print('Firefox is not installed') -------------------------------------------------------------------------------- /bot.py: -------------------------------------------------------------------------------- 1 | import time 2 | import re 3 | import string 4 | import random 5 | import sys 6 | import colorama 7 | from selenium import webdriver 8 | from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 9 | from selenium.webdriver.common.keys import Keys 10 | from selenium.webdriver.common.action_chains import ActionChains 11 | from selenium.webdriver.chrome.options import Options 12 | from selenium.webdriver.support.ui import WebDriverWait 13 | from selenium.webdriver.common.by import By 14 | from selenium.webdriver.support import expected_conditions as EC 15 | from selenium.webdriver.support.ui import Select 16 | from selenium.common.exceptions import NoSuchElementException 17 | from random import randint 18 | from __constants.const import * 19 | from __banner.myBanner import bannerTop 20 | from __colors__.colors import * 21 | 22 | ######## This script is only for educational purpose ######## 23 | ######## use it on your own RISK ######## 24 | ######## I'm not responsible for any loss or damage ######## 25 | ######## caused to you using this script ######## 26 | ######## Github Repo - https://git.io/JJisT/ ######## 27 | 28 | def postFix(n): 29 | range_start = 10**(n-1) 30 | range_end = (10**n)-1 31 | return randint(range_start, range_end) 32 | 33 | def random_phone_num_generator(): 34 | first = str(random.choice(country_codes)) 35 | second = str(random.randint(1, 888)).zfill(3) 36 | last = (str(random.randint(1, 9998)).zfill(4)) 37 | while last in ['1111', '2222', '3333', '4444', '5555', '6666', '7777', '8888']: 38 | last = (str(random.randint(1, 9998)).zfill(4)) 39 | return '{}-{}-{}'.format(first, second, last) 40 | 41 | def start_bot(start_url, email, college, collegeID): 42 | studentPhone = random_phone_num_generator() 43 | 44 | ex_split = studentAddress.split("\n") 45 | 46 | streetAddress = ex_split[0] 47 | 48 | if(re.compile(',').search(ex_split[1]) != None): 49 | ex_split1 = ex_split[1].split(', ') 50 | cityAddress = ex_split1[0] 51 | ex_split2 = ex_split1[1].split(' ') 52 | stateAddress = ex_split2[0] 53 | postalCode = ex_split2[1] 54 | else: 55 | ex_split3 = ex_split[1].split(' ') 56 | cityAddress = ex_split3[0] 57 | stateAddress = ex_split3[1] 58 | postalCode = ex_split3[2] 59 | 60 | random.seed() 61 | 62 | letters = string.ascii_uppercase 63 | 64 | middleName = random.choice(letters) 65 | 66 | fp = open('prefBrowser.txt', 'r') 67 | typex = fp.read() 68 | 69 | try: 70 | # For Chrome 71 | if typex == 'chrome': 72 | driver = webdriver.Chrome(executable_path=r'./webdriver/chromedriver') 73 | # For Firefox 74 | elif typex == 'firefox': 75 | # cap = DesiredCapabilities().FIREFOX 76 | # cap['marionette'] = True 77 | driver = webdriver.Firefox(executable_path=r'./webdriver/geckodriver') 78 | elif typex == '': 79 | print(fr + 'Error - Run setup.py first') 80 | exit() 81 | except Exception as e: 82 | time.sleep(0.4) 83 | print('\n' + fr + 'Error - '+ str(e)) 84 | exit() 85 | 86 | driver.maximize_window() 87 | driver.get(start_url) 88 | 89 | time.sleep(1) 90 | 91 | driver.find_element_by_xpath('//*[@id="portletContent_u16l1n18"]/div/div[2]/div/a[2]').click() 92 | 93 | time.sleep(1) 94 | 95 | WebDriverWait(driver, 60).until( 96 | EC.presence_of_element_located((By.ID, "accountFormSubmit")) 97 | ).click() 98 | 99 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fy + 'Account Progress - 1/3', end='') 100 | 101 | WebDriverWait(driver, 60).until( 102 | EC.presence_of_element_located((By.ID, "inputFirstName")) 103 | ).send_keys(firstName) 104 | 105 | time.sleep(0.7) 106 | 107 | WebDriverWait(driver, 60).until( 108 | EC.presence_of_element_located((By.ID, "inputMiddleName")) 109 | ).send_keys(middleName) 110 | 111 | time.sleep(0.7) 112 | 113 | WebDriverWait(driver, 60).until( 114 | EC.presence_of_element_located((By.ID, "inputLastName")) 115 | ).send_keys(LastName) 116 | 117 | time.sleep(0.7) 118 | 119 | driver.find_element_by_xpath('//*[@id="hasOtherNameNo"]').click() 120 | 121 | driver.find_element_by_xpath('//*[@id="hasPreferredNameNo"]').click() 122 | 123 | time.sleep(0.7) 124 | 125 | WebDriverWait(driver, 60).until( 126 | EC.element_to_be_clickable( 127 | (By.CSS_SELECTOR, '#inputBirthDateMonth option[value="' + str(randomMonth) + '"]')) 128 | ).click() 129 | 130 | time.sleep(0.7) 131 | 132 | WebDriverWait(driver, 60).until( 133 | EC.element_to_be_clickable( 134 | (By.CSS_SELECTOR, '#inputBirthDateDay option[value="' + str(randomDay) + '"]')) 135 | ).click() 136 | 137 | time.sleep(0.7) 138 | 139 | WebDriverWait(driver, 60).until( 140 | EC.presence_of_element_located((By.ID, 'inputBirthDateYear')) 141 | ).send_keys(randomYear) 142 | 143 | time.sleep(0.7) 144 | 145 | WebDriverWait(driver, 60).until( 146 | EC.element_to_be_clickable( 147 | (By.CSS_SELECTOR, '#inputBirthDateMonthConfirm option[value="' + str(randomMonth) + '"]')) 148 | ).click() 149 | 150 | time.sleep(0.7) 151 | 152 | WebDriverWait(driver, 60).until( 153 | EC.element_to_be_clickable( 154 | (By.CSS_SELECTOR, '#inputBirthDateDayConfirm option[value="' + str(randomDay) + '"]')) 155 | ).click() 156 | 157 | time.sleep(0.7) 158 | 159 | WebDriverWait(driver, 60).until( 160 | EC.presence_of_element_located((By.ID, 'inputBirthDateYearConfirm')) 161 | ).send_keys(randomYear) 162 | 163 | time.sleep(0.7) 164 | 165 | WebDriverWait(driver, 60).until( 166 | EC.element_to_be_clickable((By.ID, '-have-ssn-no')) 167 | ).click() 168 | 169 | time.sleep(4) 170 | 171 | element = driver.find_element_by_id('accountFormSubmit') 172 | desired_y = (element.size['height'] / 2) + element.location['y'] 173 | window_h = driver.execute_script('return window.innerHeight') 174 | window_y = driver.execute_script('return window.pageYOffset') 175 | current_y = (window_h / 2) + window_y 176 | scroll_y_by = desired_y - current_y 177 | 178 | driver.execute_script("window.scrollBy(0, arguments[0]);", scroll_y_by) 179 | 180 | time.sleep(1) 181 | 182 | element.click() 183 | 184 | print(fg + ' (Success)') 185 | 186 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fy + 'Account Progress - 2/3', end='') 187 | 188 | time.sleep(0.7) 189 | 190 | WebDriverWait(driver, 60).until( 191 | EC.presence_of_element_located((By.ID, 'inputEmail')) 192 | ).send_keys(email) 193 | 194 | time.sleep(0.7) 195 | 196 | WebDriverWait(driver, 60).until( 197 | EC.presence_of_element_located((By.ID, 'inputEmailConfirm')) 198 | ).send_keys(email) 199 | 200 | time.sleep(0.7) 201 | 202 | WebDriverWait(driver, 60).until( 203 | EC.presence_of_element_located((By.ID, 'inputSmsPhone')) 204 | ).send_keys(studentPhone) 205 | 206 | time.sleep(0.7) 207 | 208 | WebDriverWait(driver, 60).until( 209 | EC.presence_of_element_located((By.ID, 'inputStreetAddress1')) 210 | ).send_keys(streetAddress) 211 | 212 | time.sleep(0.7) 213 | 214 | WebDriverWait(driver, 60).until( 215 | EC.presence_of_element_located((By.ID, 'inputCity')) 216 | ).send_keys(cityAddress) 217 | 218 | time.sleep(0.7) 219 | 220 | WebDriverWait(driver, 60).until( 221 | EC.element_to_be_clickable( 222 | (By.CSS_SELECTOR, '#inputState option[value="' + stateAddress + '"]')) 223 | ).click() 224 | 225 | time.sleep(0.7) 226 | 227 | WebDriverWait(driver, 60).until( 228 | EC.presence_of_element_located((By.ID, 'inputPostalCode')) 229 | ).send_keys(postalCode) 230 | 231 | time.sleep(2) 232 | 233 | WebDriverWait(driver, 60).until( 234 | EC.presence_of_element_located((By.ID, 'accountFormSubmit')) 235 | ).click() 236 | 237 | # driver.find_element_by_xpath('//*[@id="accountFormSubmit"]').click() 238 | 239 | try: 240 | time.sleep(1) 241 | driver.find_element_by_xpath('//*[@id="messageFooterLabel"]').click() 242 | 243 | opError = True 244 | 245 | while opError != False: 246 | chkInputPhone = driver.find_element_by_id('inputSmsPhone') 247 | chkError = chkInputPhone.get_attribute('class') 248 | if chkError == 'portlet-form-input-field error': 249 | print('\n' + fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fr + 'Invalid Number, Retrying....') 250 | chkInputPhone.clear() 251 | studentPhone = random_phone_num_generator() 252 | chkInputPhone.send_keys(studentPhone) 253 | time.sleep(0.4) 254 | WebDriverWait(driver, 60).until( 255 | EC.presence_of_element_located((By.ID, 'inputAlternatePhone_auth_txt')) 256 | ).click() 257 | 258 | try: 259 | time.sleep(2) 260 | WebDriverWait(driver, 10).until( 261 | EC.presence_of_element_located((By.XPATH, '//*[@id="messageFooterLabel"]')) 262 | ).click() 263 | except: 264 | opError = False 265 | else: 266 | opError = False 267 | break 268 | 269 | except Exception as e: 270 | print(e) 271 | 272 | time.sleep(4) 273 | 274 | WebDriverWait(driver, 10).until( 275 | EC.presence_of_element_located((By.ID, 'accountFormSubmit')) 276 | ).click() 277 | 278 | try: 279 | time.sleep(1) 280 | WebDriverWait(driver, 10).until( 281 | EC.presence_of_element_located((By.ID, 'messageFooterLabel')) 282 | ).click() 283 | 284 | time.sleep(0.7) 285 | 286 | WebDriverWait(driver, 60).until( 287 | EC.element_to_be_clickable((By.ID, 'inputAddressValidationOverride')) 288 | ).click() 289 | 290 | time.sleep(2) 291 | 292 | WebDriverWait(driver, 10).until( 293 | EC.presence_of_element_located((By.ID, 'accountFormSubmit')) 294 | ).click() 295 | 296 | except: 297 | pass 298 | 299 | print(fg + ' (Success)') 300 | 301 | userName = firstName + str(postFix(7)) 302 | pwd = LastName + str(postFix(5)) 303 | pin = postFix(4) 304 | 305 | WebDriverWait(driver, 60).until( 306 | EC.presence_of_element_located((By.ID, 'inputUserId')) 307 | ).send_keys(userName) 308 | 309 | time.sleep(0.7) 310 | 311 | WebDriverWait(driver, 60).until( 312 | EC.presence_of_element_located((By.ID, 'inputPasswd')) 313 | ).send_keys(pwd) 314 | 315 | time.sleep(0.7) 316 | 317 | WebDriverWait(driver, 60).until( 318 | EC.presence_of_element_located((By.ID, 'inputPasswdConfirm')) 319 | ).send_keys(pwd) 320 | 321 | time.sleep(0.7) 322 | 323 | WebDriverWait(driver, 60).until( 324 | EC.presence_of_element_located((By.ID, 'inputPin')) 325 | ).send_keys(pin) 326 | 327 | time.sleep(0.7) 328 | 329 | WebDriverWait(driver, 60).until( 330 | EC.presence_of_element_located((By.ID, 'inputPinConfirm')) 331 | ).send_keys(pin) 332 | 333 | time.sleep(0.7) 334 | 335 | ######### Question 1 ######### 336 | 337 | WebDriverWait(driver, 60).until( 338 | EC.element_to_be_clickable( 339 | (By.CSS_SELECTOR, '#inputSecurityQuestion1 option[value="5"]')) 340 | ).click() 341 | 342 | time.sleep(1) 343 | 344 | random.seed(10) 345 | letters = string.ascii_lowercase 346 | 347 | sec_ans1 = LastName + ''.join(random.choices(letters,k=4)) 348 | 349 | sec_ans2 = LastName + ''.join(random.choices(letters,k=4)) 350 | 351 | sec_ans3 = LastName + ''.join(random.choices(letters,k=4)) 352 | 353 | WebDriverWait(driver, 60).until( 354 | EC.presence_of_element_located((By.ID, 'inputSecurityAnswer1')) 355 | ).send_keys(sec_ans1) 356 | 357 | time.sleep(1) 358 | 359 | ######### Question 2 ######### 360 | 361 | WebDriverWait(driver, 60).until( 362 | EC.element_to_be_clickable( 363 | (By.CSS_SELECTOR, '#inputSecurityQuestion2 option[value="6"]')) 364 | ).click() 365 | 366 | time.sleep(1) 367 | 368 | 369 | WebDriverWait(driver, 60).until( 370 | EC.presence_of_element_located((By.ID, 'inputSecurityAnswer2')) 371 | ).send_keys(sec_ans2) 372 | 373 | time.sleep(1) 374 | 375 | ######### Question 3 ######### 376 | 377 | WebDriverWait(driver, 60).until( 378 | EC.element_to_be_clickable( 379 | (By.CSS_SELECTOR, '#inputSecurityQuestion3 option[value="7"]')) 380 | ).click() 381 | time.sleep(1) 382 | 383 | WebDriverWait(driver, 60).until( 384 | EC.presence_of_element_located((By.ID, 'inputSecurityAnswer3')) 385 | ).send_keys(sec_ans3) 386 | 387 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fr + 'Please fill the captcha in webdriver to proceed further') 388 | 389 | for d in range(1, 200): 390 | 391 | xx = driver.find_element_by_name('captchaResponse') 392 | 393 | tdt = xx.get_attribute('value') 394 | 395 | if tdt != '': 396 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fg + 'Captcha Solved, Executing Further') 397 | solved = 1 398 | break 399 | else: 400 | time.sleep(2) 401 | solved = 0 402 | 403 | if solved == 1: 404 | time.sleep(2) 405 | 406 | element = driver.find_element_by_id('accountFormSubmit') 407 | desired_y = (element.size['height'] / 2) + element.location['y'] 408 | window_h = driver.execute_script('return window.innerHeight') 409 | window_y = driver.execute_script('return window.pageYOffset') 410 | current_y = (window_h / 2) + window_y 411 | scroll_y_by = desired_y - current_y 412 | 413 | driver.execute_script("window.scrollBy(0, arguments[0]);", scroll_y_by) 414 | 415 | time.sleep(1) 416 | 417 | WebDriverWait(driver, 60).until( 418 | EC.presence_of_element_located((By.ID, "accountFormSubmit")) 419 | ).click() 420 | 421 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fy + 'Account Progress - 3/3' + fg + ' (Success)') 422 | fp = open('myccAcc.txt', 'a') 423 | birthDay = str(randomMonth) + '/' + str(randomDay) + '/' + str(randomYear) 424 | fp.write('Email - ' + email + ' Password - ' + pwd + ' UserName - ' + userName + ' First Name - ' + firstName + ' Middle Name - ' + middleName + ' Last Name - ' + LastName + ' College - ' + college + ' Pin - ' + str(pin) + ' Birthday - ' + birthDay +'\n\n') 425 | fp.close() 426 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fg + 'Account Created Successfully, Details saved in myccAcc.txt, Filling Application Form Now') 427 | 428 | time.sleep(1) 429 | 430 | WebDriverWait(driver, 60).until( 431 | EC.element_to_be_clickable((By.XPATH, '//*[@id="registrationSuccess"]/main/div[2]/div/div/button')) 432 | ).click() 433 | 434 | time.sleep(0.7) 435 | 436 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fy + 'Details Progress - 1/8', end='') 437 | 438 | WebDriverWait(driver, 60).until( 439 | EC.presence_of_element_located((By.NAME, 'application.termId')) 440 | ) 441 | 442 | dropdown_menu = Select(driver.find_element_by_name('application.termId')) 443 | dropdown_menu.select_by_index(1) 444 | 445 | time.sleep(0.7) 446 | 447 | WebDriverWait(driver, 60).until( 448 | EC.element_to_be_clickable( 449 | (By.CSS_SELECTOR, '#inputEduGoal option[value="B"]')) 450 | ).click() 451 | 452 | time.sleep(2) 453 | 454 | try: 455 | dropdown_menu = Select(driver.find_element_by_id('inputMajorCategory')) 456 | dropdown_menu.select_by_index(random.randint(1, 4)) 457 | except NoSuchElementException: 458 | pass 459 | 460 | time.sleep(2.5) 461 | 462 | dropdown_menu = Select(driver.find_element_by_id('inputMajorId')) 463 | dropdown_menu.select_by_index(random.randint(1, 7)) 464 | 465 | 466 | time.sleep(2.5) 467 | WebDriverWait(driver, 60).until( 468 | EC.element_to_be_clickable((By.NAME, '_eventId_continue')) 469 | ).click() 470 | 471 | print(fg + ' (Success)') 472 | 473 | 474 | WebDriverWait(driver, 60).until( 475 | EC.element_to_be_clickable((By.ID, 'inputAddressSame')) 476 | ).click() 477 | 478 | time.sleep(2.5) 479 | 480 | WebDriverWait(driver, 60).until( 481 | EC.element_to_be_clickable((By.XPATH, '//*[@id="column2"]/div[6]/ol/li[2]/button')) 482 | ).click() 483 | 484 | # Page 2 485 | 486 | dropdown_menu = Select(driver.find_element_by_name('appEducation.enrollmentStatus')) 487 | dropdown_menu.select_by_index(1) 488 | 489 | time.sleep(0.7) 490 | 491 | WebDriverWait(driver, 60).until( 492 | EC.element_to_be_clickable( 493 | (By.CSS_SELECTOR, '#inputHsEduLevel option[value="4"]')) 494 | ).click() 495 | 496 | time.sleep(0.7) 497 | 498 | rndPassYear = [3, 4] 499 | 500 | WebDriverWait(driver, 60).until( 501 | EC.element_to_be_clickable( 502 | (By.CSS_SELECTOR, '#inputHsCompMM option[value="' + str(random.choice(rndPassYear)) + '"]')) 503 | ).click() 504 | 505 | time.sleep(0.7) 506 | 507 | WebDriverWait(driver, 60).until( 508 | EC.element_to_be_clickable( 509 | (By.CSS_SELECTOR, '#inputHsCompDD option[value="' + str(randomEduDay) + '"]')) 510 | ).click() 511 | 512 | time.sleep(0.7) 513 | 514 | WebDriverWait(driver, 60).until( 515 | EC.element_to_be_clickable((By.ID, 'inputHsCompYYYY')) 516 | ).send_keys(randomEduYear) 517 | 518 | time.sleep(1) 519 | 520 | WebDriverWait(driver, 60).until( 521 | EC.element_to_be_clickable((By.ID, 'inputCaHsGradYes')) 522 | ).click() 523 | 524 | time.sleep(1) 525 | 526 | WebDriverWait(driver, 60).until( 527 | EC.element_to_be_clickable((By.ID, 'inputCaHs3yearNo')) 528 | ).click() 529 | 530 | time.sleep(0.7) 531 | 532 | # WebDriverWait(driver, 60).until( 533 | # EC.element_to_be_clickable((By.ID, 'inputHsAttendance')) 534 | # ).click() 535 | 536 | WebDriverWait(driver, 60).until( 537 | EC.element_to_be_clickable( 538 | (By.CSS_SELECTOR, '#inputHsAttendance option[value="1"]')) 539 | ).click() 540 | 541 | time.sleep(0.7) 542 | 543 | bad_states = ['AA', 'AE', 'AP'] 544 | 545 | if stateAddress in bad_states: 546 | stateAddress = 'CA' 547 | 548 | WebDriverWait(driver, 60).until( 549 | EC.element_to_be_clickable( 550 | (By.CSS_SELECTOR, '#hs-input-sf-state option[value="' + stateAddress + '"]')) 551 | ).click() 552 | 553 | search = driver.find_element_by_id('hs-school-name') 554 | search.clear() 555 | search.send_keys('high') 556 | auto_complete = WebDriverWait(driver, 60).until( 557 | EC.element_to_be_clickable((By.ID, 'hs-suggestions')) 558 | ) 559 | time.sleep(2) 560 | 561 | parentElement = driver.find_element_by_class_name('autocomplete-menu') 562 | it = parentElement.find_elements_by_tag_name("li") 563 | 564 | if len(it) < 5: 565 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fr + 'Changing State....') 566 | Select(driver.find_element_by_id('hs-input-sf-state')).select_by_value('CA') 567 | 568 | search.clear() 569 | search.send_keys('high', Keys.ENTER) 570 | auto_complete = WebDriverWait(driver, 60).until( 571 | EC.element_to_be_clickable((By.ID, 'hs-suggestions')) 572 | ) 573 | time.sleep(2) 574 | 575 | parentElement = driver.find_element_by_class_name('autocomplete-menu') 576 | it = parentElement.find_elements_by_tag_name("li") 577 | if len(it) > 5: 578 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fy + 'State Changed, Resuming') 579 | 580 | try: 581 | time.sleep(1) 582 | it[random.randint(4, 8)].click() 583 | except Exception as e: 584 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fr + str(e), 'can\'t click') 585 | 586 | time.sleep(0.4) 587 | 588 | WebDriverWait(driver, 60).until( 589 | EC.element_to_be_clickable((By.ID, 'inputGPA')) 590 | ).send_keys(Keys.BACKSPACE, '400') 591 | 592 | time.sleep(0.4) 593 | 594 | WebDriverWait(driver, 60).until( 595 | EC.element_to_be_clickable( 596 | (By.CSS_SELECTOR, '#inputHighestEnglishCourse option[value="4"]')) 597 | ).click() 598 | 599 | time.sleep(0.7) 600 | 601 | WebDriverWait(driver, 60).until( 602 | EC.element_to_be_clickable( 603 | (By.CSS_SELECTOR, '#inputHighestEnglishGrade option[value="A"]')) 604 | ).click() 605 | 606 | time.sleep(0.7) 607 | 608 | WebDriverWait(driver, 60).until( 609 | EC.element_to_be_clickable( 610 | (By.CSS_SELECTOR, '#inputHighestMathCourseTaken option[value="7"]')) 611 | ).click() 612 | 613 | time.sleep(0.7) 614 | 615 | WebDriverWait(driver, 60).until( 616 | EC.element_to_be_clickable( 617 | (By.CSS_SELECTOR, '#inputHighestMathTakenGrade option[value="A"]')) 618 | ).click() 619 | 620 | time.sleep(4) 621 | 622 | WebDriverWait(driver, 60).until( 623 | EC.presence_of_element_located((By.XPATH, '//*[@id="column2"]/div[14]/ol/li[2]/button')) 624 | ).click() 625 | 626 | 627 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fy + 'Details Progress - 2/8' + fg + ' (Success)') 628 | 629 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fy + 'Details Progress - 3/8', end='') 630 | 631 | # Military 632 | 633 | time.sleep(4) 634 | 635 | WebDriverWait(driver, 60).until( 636 | EC.element_to_be_clickable( 637 | (By.CSS_SELECTOR, '#inputCitizenshipStatus option[value="1"]')) 638 | ).click() 639 | 640 | time.sleep(1) 641 | 642 | WebDriverWait(driver, 60).until( 643 | EC.element_to_be_clickable( 644 | (By.CSS_SELECTOR, '#inputMilitaryStatus option[value="1"]')) 645 | ).click() 646 | 647 | time.sleep(1) 648 | 649 | WebDriverWait(driver, 60).until( 650 | EC.presence_of_element_located((By.XPATH, '//*[@id="column2"]/div[6]/ol/li[2]/button')) 651 | ).click() 652 | 653 | print(fg + ' (Success)') 654 | 655 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fy + 'Details Progress - 4/8', end='') 656 | 657 | # Residency 658 | 659 | WebDriverWait(driver, 60).until( 660 | EC.element_to_be_clickable((By.ID, 'inputCaRes2YearsYes')) 661 | ).click() 662 | 663 | time.sleep(1) 664 | 665 | WebDriverWait(driver, 60).until( 666 | EC.element_to_be_clickable((By.ID, 'inputHomelessYouthNo')) 667 | ).click() 668 | 669 | time.sleep(1) 670 | 671 | WebDriverWait(driver, 60).until( 672 | EC.element_to_be_clickable((By.ID, 'inputIsEverInFosterCareNo')) 673 | ).click() 674 | 675 | time.sleep(4) 676 | 677 | WebDriverWait(driver, 60).until( 678 | EC.presence_of_element_located((By.XPATH, '//*[@id="column2"]/div[7]/ol/li[2]/button')) 679 | ).click() 680 | 681 | # driver.find_element_by_xpath('//*[@id="column2"]/div[7]/ol/li[2]/button').click() 682 | 683 | print(fg + ' (Success)') 684 | 685 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fy + 'Details Progress - 5/8', end='') 686 | 687 | # Intersts 688 | 689 | WebDriverWait(driver, 60).until( 690 | EC.element_to_be_clickable((By.ID, 'inputEnglishYes')) 691 | ).click() 692 | 693 | time.sleep(2) 694 | 695 | WebDriverWait(driver, 60).until( 696 | EC.element_to_be_clickable((By.ID, 'inputFinAidInfoNo')) 697 | ).click() 698 | 699 | time.sleep(1) 700 | 701 | WebDriverWait(driver, 60).until( 702 | EC.element_to_be_clickable((By.ID, 'inputAssistanceNo')) 703 | ).click() 704 | 705 | time.sleep(1) 706 | 707 | WebDriverWait(driver, 60).until( 708 | EC.element_to_be_clickable((By.ID, 'inputAthleticInterest1')) 709 | ).click() 710 | 711 | time.sleep(1) 712 | 713 | parentElement = driver.find_elements_by_class_name('ccc-form-layout')[5] 714 | element = parentElement 715 | desired_y = (element.size['height'] / 2) + element.location['y'] 716 | window_h = driver.execute_script('return window.innerHeight') 717 | window_y = driver.execute_script('return window.pageYOffset') 718 | current_y = (window_h / 2) + window_y 719 | scroll_y_by = desired_y - current_y 720 | 721 | driver.execute_script("window.scrollBy(0, arguments[0]);", scroll_y_by) 722 | 723 | allElements = parentElement.find_elements_by_tag_name('li') 724 | 725 | 726 | rndList = [2, 1, 2, 2] 727 | 728 | occurance = 0 729 | inputChecked = False 730 | 731 | while occurance < 2: 732 | for elementxx in allElements: 733 | myRandom = random.choice(rndList) 734 | time.sleep(0.4) 735 | xx = elementxx.find_element_by_class_name('portlet-form-input-checkbox') 736 | if xx.get_attribute('id') == 'inputOnlineClasses' and inputChecked == False: 737 | myRandom = 1 738 | inputChecked = True 739 | if myRandom == 1: 740 | occurance += 1 741 | element = xx 742 | desired_y = (element.size['height'] / 2) + element.location['y'] 743 | window_h = driver.execute_script('return window.innerHeight') 744 | window_y = driver.execute_script('return window.pageYOffset') 745 | current_y = (window_h / 2) + window_y 746 | scroll_y_by = desired_y - current_y 747 | 748 | driver.execute_script("window.scrollBy(0, arguments[0]);", scroll_y_by) 749 | time.sleep(0.4) 750 | xx.click() 751 | 752 | time.sleep(2) 753 | 754 | WebDriverWait(driver, 60).until( 755 | EC.presence_of_element_located((By.XPATH, '//*[@id="column2"]/div[9]/ol/li[2]/button')) 756 | ).click() 757 | 758 | # driver.find_element_by_xpath('//*[@id="column2"]/div[9]/ol/li[2]/button').click() 759 | 760 | print(fg + ' (Success)') 761 | 762 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fy + 'Details Progress - 6/8', end='') 763 | 764 | # Demographic 765 | 766 | time.sleep(4) 767 | 768 | WebDriverWait(driver, 60).until( 769 | EC.element_to_be_clickable( 770 | (By.CSS_SELECTOR, '#inputGender option[value="Male"]')) 771 | ).click() 772 | time.sleep(1) 773 | 774 | WebDriverWait(driver, 60).until( 775 | EC.element_to_be_clickable( 776 | (By.CSS_SELECTOR, '#inputTransgender option[value="No"]')) 777 | ).click() 778 | 779 | time.sleep(1) 780 | 781 | WebDriverWait(driver, 60).until( 782 | EC.element_to_be_clickable( 783 | (By.CSS_SELECTOR, '#inputOrientation option[value="StraightHetrosexual"]')) 784 | ).click() 785 | 786 | time.sleep(1) 787 | 788 | WebDriverWait(driver, 60).until( 789 | EC.element_to_be_clickable( 790 | (By.CSS_SELECTOR, '#inputParentGuardianEdu1 option[value="6"]')) 791 | ).click() 792 | 793 | time.sleep(1) 794 | 795 | WebDriverWait(driver, 60).until( 796 | EC.element_to_be_clickable( 797 | (By.CSS_SELECTOR, '#inputParentGuardianEdu2 option[value="2"]')) 798 | ).click() 799 | 800 | time.sleep(1) 801 | 802 | WebDriverWait(driver, 60).until( 803 | EC.element_to_be_clickable((By.ID, 'inputHispanicNo')) 804 | ).click() 805 | 806 | time.sleep(1) 807 | 808 | WebDriverWait(driver, 60).until( 809 | EC.element_to_be_clickable((By.ID, 'inputRaceEthnicity800')) 810 | ).click() 811 | 812 | WebDriverWait(driver, 60).until( 813 | EC.element_to_be_clickable((By.ID, 'inputRaceEthnicity' + str(random.randint(801, 809)))) 814 | ).click() 815 | 816 | time.sleep(4) 817 | 818 | WebDriverWait(driver, 60).until( 819 | EC.presence_of_element_located((By.XPATH, '//*[@id="column2"]/div[7]/ol/li[2]/button')) 820 | ).click() 821 | 822 | # driver.find_element_by_xpath('//*[@id="column2"]/div[7]/ol/li[2]/button').click() 823 | 824 | print(fg + ' (Success)') 825 | 826 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fy + 'Details Progress - 7/8', end='') 827 | 828 | # Supplemental 829 | 830 | if collegeID == 1: 831 | 832 | WebDriverWait(driver, 60).until( 833 | EC.element_to_be_clickable( 834 | (By.CSS_SELECTOR, '#_supp_MENU_1 option[value="AAAS"]')) 835 | ).click() 836 | 837 | time.sleep(0.7) 838 | 839 | WebDriverWait(driver, 60).until( 840 | EC.element_to_be_clickable( 841 | (By.CSS_SELECTOR, '#_supp_MENU_2 option[value="HS"]')) 842 | ).click() 843 | 844 | time.sleep(0.7) 845 | 846 | WebDriverWait(driver, 60).until( 847 | EC.element_to_be_clickable( 848 | (By.CSS_SELECTOR, '#_supp_MENU_3 option[value="6"]')) 849 | ).click() 850 | 851 | time.sleep(0.7) 852 | 853 | WebDriverWait(driver, 60).until( 854 | EC.element_to_be_clickable( 855 | (By.CSS_SELECTOR, '#_supp_MENU_4 option[value="H"]')) 856 | ).click() 857 | 858 | time.sleep(0.7) 859 | 860 | WebDriverWait(driver, 60).until( 861 | EC.element_to_be_clickable((By.ID, 'YESNO_1_no')) 862 | ).click() 863 | 864 | time.sleep(4) 865 | 866 | WebDriverWait(driver, 60).until( 867 | EC.presence_of_element_located((By.XPATH, '//*[@id="applyForm"]/main/div[3]/div[5]/ol/li[2]/button')) 868 | ).click() 869 | 870 | # driver.find_element_by_xpath('//*[@id="applyForm"]/main/div[3]/div[5]/ol/li[2]/button').click() 871 | 872 | elif collegeID == 2: 873 | pass 874 | 875 | elif collegeID == 3: 876 | 877 | try: 878 | element = WebDriverWait(driver, 60).until( 879 | EC.presence_of_element_located((By.ID, "_supp_MENU_1")) 880 | ) 881 | except: 882 | pass 883 | Select(driver.find_element_by_id("_supp_MENU_1")).select_by_value('ENG') 884 | time.sleep(2) 885 | Select(driver.find_element_by_id("_supp_MENU_5")).select_by_value('N') 886 | Select(driver.find_element_by_id("_supp_MENU_6")).select_by_value('N') 887 | Select(driver.find_element_by_id("_supp_MENU_4")).select_by_value('OPT2') 888 | driver.find_element_by_id("_supp_CHECK_5").click() 889 | time.sleep(2) 890 | driver.find_element_by_name("_eventId_continue").click() 891 | 892 | elif collegeID == 4: 893 | 894 | time.sleep(2) 895 | driver.find_element_by_id("YESNO_1_yes").click() 896 | driver.find_element_by_id("YESNO_2_yes").click() 897 | time.sleep(2) 898 | driver.find_element_by_id("_supp_TEXT_1").send_keys(studentPhone.replace('-', '')) 899 | time.sleep(2) 900 | 901 | GPA = Select(driver.find_element_by_id('_supp_MENU_2')) 902 | GPA.select_by_value('4') 903 | time.sleep(2) 904 | 905 | units = Select(driver.find_element_by_id('_supp_MENU_8')) 906 | units.select_by_value('4') 907 | time.sleep(2) 908 | 909 | money = Select(driver.find_element_by_id('_supp_MENU_3')) 910 | money.select_by_value('30') 911 | time.sleep(2) 912 | 913 | house = Select(driver.find_element_by_id('_supp_MENU_4')) 914 | house.select_by_value('1') 915 | time.sleep(2) 916 | 917 | house = Select(driver.find_element_by_id('_supp_MENU_5')) 918 | house.select_by_value('B') 919 | time.sleep(2) 920 | 921 | driver.find_element_by_id("YESNO_4_yes").click() 922 | driver.find_element_by_id("YESNO_5_yes").click() 923 | time.sleep(2) 924 | driver.find_element_by_id("YESNO_6_yes").click() 925 | driver.find_element_by_id("YESNO_7_no").click() 926 | time.sleep(2) 927 | driver.find_element_by_id("YESNO_8_yes").click() 928 | driver.find_element_by_id("YESNO_9_no").click() 929 | driver.find_element_by_id("YESNO_10_no").click() 930 | time.sleep(1) 931 | driver.find_element_by_id("YESNO_11_yes").click() 932 | time.sleep(1) 933 | driver.find_element_by_id("YESNO_12_no").click() 934 | time.sleep(2) 935 | driver.find_element_by_id("YESNO_13_no").click() 936 | driver.find_element_by_id("YESNO_14_yes").click() 937 | 938 | question = Select(driver.find_element_by_id('_supp_MENU_6')) 939 | question.select_by_value('What school did you attend for sixth grade?') 940 | time.sleep(2) 941 | question = Select(driver.find_element_by_id('_supp_MENU_7')) 942 | question.select_by_value( 943 | 'What is the first name of your least favorite relative?') 944 | time.sleep(1) 945 | driver.find_element_by_id("_supp_TEXT_3").send_keys("Nulled") 946 | driver.find_element_by_id("_supp_TEXT_4").send_keys("Nulled") 947 | time.sleep(2) 948 | 949 | driver.find_element_by_name("_eventId_continue").click() 950 | 951 | print(fg + ' (Success)') 952 | 953 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fy + 'Details Progress - 8/8', end='') 954 | 955 | # Submission 956 | 957 | WebDriverWait(driver, 60).until( 958 | EC.element_to_be_clickable((By.ID, 'inputConsentYes')) 959 | ).click() 960 | 961 | time.sleep(1) 962 | 963 | WebDriverWait(driver, 60).until( 964 | EC.element_to_be_clickable((By.ID, 'inputESignature')) 965 | ).click() 966 | 967 | time.sleep(1) 968 | 969 | WebDriverWait(driver, 60).until( 970 | EC.element_to_be_clickable((By.ID, 'inputFinancialAidAck')) 971 | ).click() 972 | 973 | time.sleep(1) 974 | 975 | print(fg + ' (Success)') 976 | 977 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fy + 'Sleeping for 30 seconds, HOLD ON !!') 978 | 979 | time.sleep(30) 980 | 981 | element = driver.find_element_by_xpath('//*[@id="submit-application-button"]') 982 | desired_y = (element.size['height'] / 2) + element.location['y'] 983 | window_h = driver.execute_script('return window.innerHeight') 984 | window_y = driver.execute_script('return window.pageYOffset') 985 | current_y = (window_h / 2) + window_y 986 | scroll_y_by = desired_y - current_y 987 | 988 | driver.execute_script("window.scrollBy(0, arguments[0]);", scroll_y_by) 989 | 990 | time.sleep(1) 991 | 992 | # driver.find_element_by_xpath('//*[@id="submit-application-button"]').click() 993 | element.click() 994 | 995 | time.sleep(2) 996 | 997 | confirmedText = driver.find_element_by_class_name('mypath-confirmation-text').text 998 | 999 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fg + confirmedText) 1000 | 1001 | driver.close() 1002 | 1003 | else: 1004 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fr + 'Timeout while Checking for captcha') 1005 | 1006 | def main(): 1007 | sys.stdout.write(bannerTop()) 1008 | 1009 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fg + 'Select a college from all available colleges to proceed....\n') 1010 | 1011 | time.sleep(0.4) 1012 | 1013 | bad_colors = ['BLACK', 'WHITE', 'LIGHTBLACK_EX', 'RESET'] 1014 | codes = vars(colorama.Fore) 1015 | colors = [codes[color] for color in codes if color not in bad_colors] 1016 | 1017 | for index, college in enumerate(allColleges): 1018 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fy + str(index + 1) + ' - ' + random.choice(colors) + college) 1019 | 1020 | isIDError = True 1021 | 1022 | while isIDError != False: 1023 | print('\n' + fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fg + 'Enter college id for ex - 1 or 2 or 3.... : ', end='') 1024 | userInput = int(input()) 1025 | if userInput > len(allColleges) or userInput < 1: 1026 | print(fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fr + 'Wrong College id') 1027 | else: 1028 | userInput = userInput - 1 1029 | isIDError = False 1030 | 1031 | time.sleep(0.4) 1032 | 1033 | print('\n' + fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fg + 'Selected College: ' + fy + allColleges[userInput]) 1034 | 1035 | time.sleep(0.4) 1036 | 1037 | print('\n' + fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fg + 'Enter Your Email: ', end='') 1038 | userEmail = input() 1039 | 1040 | time.sleep(0.4) 1041 | 1042 | print('\n' + fc + sd + '[' + fm + sb + '*' + fc + sd + '] ' + fg + 'Hold on Starting now, Keep checking this terminal for instructions') 1043 | 1044 | time.sleep(1) 1045 | reg_url = start_url + clg_ids[userInput] 1046 | 1047 | start_bot(reg_url, userEmail, allColleges[userInput], userInput + 1) 1048 | 1049 | if __name__ == '__main__': 1050 | main() 1051 | -------------------------------------------------------------------------------- /myccAcc.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whatimran/Edu-Mail-Generator/fab35431961808061fb98223a5a326756e004504/myccAcc.txt -------------------------------------------------------------------------------- /prefBrowser.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whatimran/Edu-Mail-Generator/fab35431961808061fb98223a5a326756e004504/prefBrowser.txt -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | import sys 3 | from __dwnldDrivers.versions import * 4 | 5 | ######## This script is only for educational purpose ######## 6 | ######## use it on your own RISK ######## 7 | ######## I'm not responsible for any loss or damage ######## 8 | ######## caused to you using this script ######## 9 | ######## Github Repo - https://git.io/JJisT/ ######## 10 | 11 | def install(name): 12 | subprocess.check_call([sys.executable, '-m', 'pip', 'install', name]) 13 | 14 | def main(): 15 | 16 | my_packages = ['requests', 'clint', 'faker', 'selenium', 'colorama'] 17 | 18 | installed_pr = [] 19 | 20 | for package in my_packages: 21 | install(package) 22 | print('\n') 23 | 24 | print('Firefox') 25 | firefox_ver = get_firefox_version() 26 | if firefox_ver != None: 27 | is_firefox_there = 1 28 | installed_pr.append('Firefox') 29 | setup_Firefox(firefox_ver) 30 | else: 31 | is_firefox_there = 0 32 | print('Firefox isn\'t installed') 33 | 34 | print('\nChrome') 35 | chrome_ver = get_chrome_version() 36 | 37 | if chrome_ver != None: 38 | is_chrome_there = 1 39 | installed_pr.append('Chrome') 40 | setup_Chrome(chrome_ver) 41 | else: 42 | is_chrome_there = 0 43 | print('Chrome isn\'t installed') 44 | 45 | if is_firefox_there == 0 and is_chrome_there == 0: 46 | print('Error - Setup installation failed \nReason - Please install either Chrome or Firefox browser to complete setup process') 47 | exit() 48 | 49 | print('\nWich browser do you prefer to run script on') 50 | 51 | for index, pr in enumerate(installed_pr, start=1): 52 | print('\n[*] ' + str(index) + ' ' + pr) 53 | 54 | inpErr = True 55 | 56 | while inpErr != False: 57 | print('\nEnter id ex - 1 or 2: ', end='') 58 | userInput = int(input()) 59 | 60 | if userInput <= len(installed_pr) and userInput > 0: 61 | selected = installed_pr[userInput - 1] 62 | fp = open('prefBrowser.txt', 'w') 63 | fp.write(selected.lower()) 64 | inpErr = False 65 | else: 66 | print('Wrong id, Either input 1 or 2') 67 | 68 | print('Setup Completed') 69 | if __name__ == '__main__': 70 | main() -------------------------------------------------------------------------------- /webdriver/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whatimran/Edu-Mail-Generator/fab35431961808061fb98223a5a326756e004504/webdriver/.gitkeep --------------------------------------------------------------------------------