Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from selenium import webdriver
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.common.by import By
- from selenium.webdriver.support.ui import WebDriverWait
- from selenium.webdriver.support import expected_conditions as EC
- from selenium.webdriver.chrome.options import Options
- from selenium.webdriver.common.action_chains import ActionChains
- import time
- import random
- import re
- import threading
- import names
- import os
- import json
- import zipfile
- from queue import Queue
- import datetime
- #INSTALL PYTHON 3.6
- #PIP INSTALL SELENIUM
- #INSTALL CHROME DRIVER FOR SELENIUM
- with open('config.json') as data:
- data = json.load(data)
- ##accountlocation = data['accountlocation']
- ##password = data['password']
- ##restartprog = data['restartprog']
- ##useproxy = data['useproxy']
- ##domain = data['domain']
- accountlocation = "nikeyahoo.txt"
- yahoolocation = "russianyahoo.txt"
- restartprog = True
- useproxy = False
- def readaccounts():
- accountList = []
- numberAccounts = 0
- file = open(yahoolocation,"r")
- for line in file:
- accountList.append(1)
- accountList[numberAccounts] = line.strip("\n")
- numberAccounts += 1
- file.close()
- return accountList
- def getaccount(accountList):
- global entirecounter
- full = accountList[entirecounter]
- split = full.split(":")
- email = split[0]
- password = split[1]
- password = password + "1"
- return email,password
- def getStartTime():
- currentDT = datetime.datetime.now()
- startTime = currentDT.strftime("%M:%S")
- startList = list(startTime)
- return startList
- def getFinalTime(startList):
- currentDT = datetime.datetime.now()
- finishTime = currentDT.strftime("%M:%S")
- finishList = list(finishTime)
- if finishList[1] == startList[1]:
- startTime12 = startList[3] + startList[4]
- startTime = int(startTime12)
- finishTime12 = finishList[3] + finishList[4]
- finishTime = int(finishTime12)
- timeTaken = finishTime - startTime
- print("The time taken was " + str(timeTaken) + " seconds")
- elif finishList[0] == startList[0]:
- startTimeMin = startList[1]
- startTimeMin = int(startTimeMin)
- startTime12 = startList[3] + startList[4]
- startTimeSec = int(startTime12)
- finishTimeMin = finishList[1]
- finishTimeMin = int(finishTimeMin)
- finishTime12 = finishList[3] + finishList[4]
- finishTimeSec = int(finishTime12)
- totalMin = finishTimeMin - startTimeMin
- totalSec = finishTimeSec - startTimeSec
- totalMinInSec = totalMin*60
- totalSec += totalMinInSec
- print("here")
- print("The time taken was " + str(totalSec) + " seconds")
- else:
- startTimeMin = startList[0] + startList[1]
- startTimeMin = int(startTimeMin)
- startTimeSec = startList[3] + startList[4]
- startTimeSec = int(startTimeSec)
- finishTimeMin = finishList[0] + finishList[1]
- finishTimeMin = int(finishTimeMin)
- finishTimeSec = finishList[3] + finishList[4]
- finishTimeSec = int(finishTimeSec)
- totalMin = finishTimeMin - startTimeMin
- totalSec = finishTimeSec - startTimeSec
- totalMinInSec = totalMin*60
- totalSec += totalMinInSec
- print("The time taken was " + str(totalSec) + " seconds")
- #Take a random proxy from a list of proxies and return it
- def findproxy():
- progfile =open("proxies.txt","r")
- position = 0
- proxylist = []
- for line in progfile:
- proxylist.append(1)
- proxylist[position]=line.strip("\n")
- position += 1
- print("There are " + str(position) + " proxies saved")
- proxy = random.choice(proxylist)
- return proxy
- #Split the proxy into its IP, port, username and password
- def splitproxy(proxy):
- indproxy = proxy.split(":")
- PROXY_HOST = indproxy[0]
- PROXY_PORT = indproxy[1]
- try:
- PROXY_USER = indproxy[2]
- PROXY_PASS = indproxy[3]
- is_userpass = True
- except Exception:
- is_userpass = False
- return PROXY_HOST,PROXY_PORT,PROXY_USER,PROXY_PASS,is_userpass
- def initialisebrowser(useproxy):
- if useproxy == True:
- proxy = findproxy()
- PROXY_HOST,PROXY_PORT,PROXY_USER,PROXY_PASS,is_userpass = splitproxy(proxy)
- print("Using proxy: " + proxy)
- if is_userpass == True:
- manifest_json = """
- {
- "version": "1.0.0",
- "manifest_version": 2,
- "name": "Chrome Proxy",
- "permissions": [
- "proxy",
- "tabs",
- "unlimitedStorage",
- "storage",
- "<all_urls>",
- "webRequest",
- "webRequestBlocking"
- ],
- "background": {
- "scripts": ["background.js"]
- },
- "minimum_chrome_version":"22.0.0"
- }
- """
- background_js = """
- var config = {
- mode: "fixed_servers",
- rules: {
- singleProxy: {
- scheme: "http",
- host: "%s",
- port: parseInt(%s)
- },
- bypassList: ["localhost"]
- }
- };
- chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});
- function callbackFn(details) {
- return {
- authCredentials: {
- username: "%s",
- password: "%s"
- }
- };
- }
- chrome.webRequest.onAuthRequired.addListener(
- callbackFn,
- {urls: ["<all_urls>"]},
- ['blocking']
- );
- """ % (PROXY_HOST, PROXY_PORT, PROXY_USER, PROXY_PASS)
- def get_chromedriver(use_proxy=True,user_agent = None):
- path = os.path.dirname(os.path.abspath(__file__))
- chrome_options = webdriver.ChromeOptions()
- if use_proxy:
- pluginfile = 'proxy_auth_plugin.zip'
- with zipfile.ZipFile(pluginfile, 'w') as zp:
- zp.writestr("manifest.json", manifest_json)
- zp.writestr("background.js", background_js)
- chrome_options.add_extension(pluginfile)
- browser = webdriver.Chrome(
- os.path.join(path, 'chromedriver'),
- chrome_options=chrome_options)
- return browser
- browser = get_chromedriver(use_proxy=True,user_agent = None)
- elif is_userpass == False:
- address = PROXY_HOST + ":" + PROXY_HOST
- print("Using proxy: " + proxy)
- chrome_options = webdriver.ChromeOptions()
- chrome_options.add_argument('--proxy-server=%s' % address)
- browser = webdriver.Chrome(r'''chromedriver.exe''',chrome_options=chrome_options)
- else:
- useproxy = False
- print("Invalid user:pass variable, running on Home IP")
- browser = webdriver.Chrome(r'''chromedriver.exe''')
- else:
- print("Using Home IP")
- browser = webdriver.Chrome(r'''chromedriver.exe''')
- return browser
- #Pass in the browser and url, and go to the url with the browser
- def geturl(browser, url):
- browser.get(url)
- #if useproxy == True:
- #webdriver.ActionChains(browser).send_keys("cop35477" + Keys.TAB + "cop9729").perform()
- #Set up functions to remove cookie and email pop-ups
- def rejectcookies(browser):
- try:
- cookiesreject = WebDriverWait(browser, 1).until(EC.element_to_be_clickable((By.CLASS_NAME, 'js-closeCookieBanner')))
- cookiesreject.click()
- except:
- pass
- def rejectemails():
- try:
- emailsreject = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, 'bx-button')))
- emailsreject.click()
- except:
- print("Email not found")
- #Generates the email to be used to create the account
- def generatedata():
- forename=names.get_first_name(gender='male')
- surname = names.get_last_name()
- date = random.randint(1,28)
- if len(str(date))==1:
- date = "0" + str(date)
- month = random.randint(1,12)
- if len(str(month))==1:
- month="0"+str(month)
- year = random.randint(1985,2000)
- dob=str(date)+str(month)+str(year)
- return forename,surname,dob,date,year
- #filling the page with info and submitting it
- def autofill(browser,email,password,forename,surname,dob):
- created = False
- while created == False:
- ## time.sleep(1)
- ## openmenu = WebDriverWait(browser, 3).until(EC.element_to_be_clickable((By.CLASS_NAME,"cart-button")))
- ## openmenu.click()
- ## time.sleep(1)
- ##
- ## loginbutton = browser.find_element_by_xpath("//*[@data-qa='join-login-button']")
- ## loginbutton.click()
- ## time.sleep(0.5)
- ##
- ## joinbutton = browser.find_element_by_xpath("//*[contains(text(),'Join now.')]")
- ## joinbutton.click()
- time.sleep(5)
- emailbox = browser.find_element_by_name("emailAddress")
- emailbox.send_keys(email)
- passwordbox = browser.find_element_by_name("password")
- passwordbox.send_keys(password)
- forenamebox = browser.find_element_by_name("firstName")
- forenamebox.send_keys(forename)
- surnamebox = browser.find_element_by_name("lastName")
- surnamebox.send_keys(surname)
- dobbox = browser.find_element_by_name("dateOfBirth")
- dobbox.send_keys(dob)
- malebutton = browser.find_element_by_xpath("//span[text() = 'Male']")
- malebutton.click()
- createbutton = browser.find_element_by_class_name("nike-unite-submit-button")
- time.sleep(1)
- createbutton.click()
- try:
- dismissbox = WebDriverWait(browser, 3).until(EC.element_to_be_clickable((By.CLASS_NAME, 'nike-unite-error-close')))
- dismissbox.click()
- created = False
- try:
- alreadycreatedbox = WebDriverWait(browser, 5).until(EC.visibility_of_element_located((By.CLASS_NAME, 'duplicate-email')))
- print("Account already created. Please start again")
- except Exception:
- print("Server error. Attempting account creation again...")
- geturl(browser,"https://www.nike.com/gb/launch/")
- time.sleep(1)
- except Exception:
- print("Succesfully created and logged into account with email: '" + email + "' and password: '" + password + "'!")
- created = True
- time.sleep(5)
- pass
- ## inp = input("click enter when account is verified")
- ## geturl(browser,"chrome://settings/clearBrowserData")
- def signin(browser,email,created):
- loggedin = False
- login_attempts = 0
- while loggedin ==False:
- emailtextbox = WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.NAME, 'emailAddress')))
- emailtextbox.clear()
- emailtextbox.send_keys(email)
- pwtextbox = browser.find_element_by_name('password')
- pwtextbox.clear()
- pwtextbox.send_keys(password)
- delay = random.uniform(0.1,5)
- time.sleep(delay)
- pwtextbox.send_keys(Keys.ENTER)
- print("Logging in with email: '" + email + "' and password: '" + password + "'!")
- try:
- dismissbox = WebDriverWait(browser, 3).until(EC.element_to_be_clickable((By.CLASS_NAME, 'nike-unite-error-close')))
- dismissbox.click()
- login_attempts = login_attempts + 1
- loggedin = False
- print("Server error. Attempting login again...")
- geturl(browser,"https://store.nike.com/gb/en_gb/?l=shop,login_register")
- print("Delaying before login...")
- if login_attempts < 4:
- pass
- else:
- time.sleep(15)
- except Exception:
- print("Successfully logged in")
- loggedin = True
- created=True
- print("Navigating to url")
- pass
- def restart(browser, email, password):
- inp = input("press enter to restart program")
- progfile = open(accountlocation,"a")
- progfile.write(email + ":" + password + "\n")
- progfile.close()
- print("Saved account to " + accountlocation + "!")
- print("Clearing cookies and logging out")
- browser.delete_all_cookies()
- print("Cleared all cookies!")
- geturl(browser,"https://www.nike.com/gb/launch/")
- counter = 0
- global entirecounter
- entirecounter = -1
- def run(counter):
- while True:
- global entirecounter
- entirecounter += 1
- startList = getStartTime()
- accountList = readaccounts()
- email,password = getaccount(accountList)
- counter += 1
- if counter == 1:
- proxy = findproxy()
- PROXY_HOST,PROXY_PORT,PROXY_USER,PROXY_PASS,is_userpass = splitproxy(proxy)
- browser = initialisebrowser(useproxy)
- geturl(browser,"https://www.nike.com/gb/launch/")
- rejectcookies(browser)
- box = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, 'join-log-in')))
- box.click()
- forename,surname,dob,date,year=generatedata()
- autofill(browser,email,password,forename,surname,dob)
- restart(browser,email,password)
- getFinalTime(startList)
- if counter == 3 and useproxy == True:
- counter = 0
- run(counter)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement