peytondodd
5/30/2019 - 6:51 PM

TwitterBot SignUp

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

import json
import time


# read botnetConfig.json data
with open('botnetConfig.json') as data_file:
    botnet = json.load(data_file)
print(botnet)
bots = botnet["bots"]

for bot in bots:
    # Create a new instance of the Firefox driver
    driver = webdriver.Firefox(executable_path='/home/nau/sourceProgramsToInstall/geckodriver')


    # TEMP MAIL GENERATE
    print "Opening temp-mail.org to create an email account"
    driver.get("https://temp-mail.org/en/")
    email = driver.find_element_by_id("mail").get_attribute("value")
    print email

    # Save the window opener (current window, do not mistaken with tab... not the same)
    window_email = driver.window_handles[0]
    # open new tab
    #driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + "t")

    #
    # TWITTER SIGNUP
    #
    print "Opening twitter.com/signup to create a twitter account"
    driver.execute_script('''window.open("http://www.twitter.com/signup","_blank");''')

    # Save the window opener (current window, do not mistaken with tab... not the same)
    window_twitter = driver.window_handles[1]
    # Put focus on current window which will, in fact, put focus on the current visible tab
    driver.switch_to_window(window_twitter)

    delay = 10 # seconds
    # wait until the page is loaded, in this case, wait unitl the element with id='full-name' is loaded
    myElem = WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.ID, 'full-name')))

    print driver.title

    driver.find_element_by_id("full-name").send_keys(bot["full-name"])
    driver.find_element_by_id("email").send_keys(email)
    driver.find_element_by_id("password").send_keys(bot["password"])
    driver.find_element_by_id("submit_button").submit()


    # PHONE Verification
    myElem = WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.ID, 'phone_number')))
    driver.find_element_by_id("phone_number").send_keys(botnet["phone-number"])
    driver.find_element_by_name("discoverable_by_mobile_phone").click()#checkbox click
    driver.find_element_by_name("call_me").submit()


    code = raw_input('input something!: ')
    driver.find_element_by_id("code").send_keys(code)
    driver.find_element_by_id("code").submit()


    #
    # TWITTER APPS TOKEN GENERATION
    #
    print "Opening https://apps.twitter.com/ to generate a twitter API tokens"
    driver.execute_script('''window.open("https://apps.twitter.com/","_blank");''')
    # Save the window opener (current window, do not mistaken with tab... not the same)
    window_twitterApps = driver.window_handles[2]
    # Put focus on current window which will, in fact, put focus on the current visible tab
    driver.switch_to_window(window_twitterApps)
    driver.find_elements_by_xpath("//*[contains(text(), 'Create New App')]")[0].click()

    driver.find_element_by_id("edit-name").send_keys(bot["full-name"] + "App")
    driver.find_element_by_id("edit-description").send_keys(bot["full-name"] + " is a good app")
    driver.find_element_by_id("edit-url").send_keys("http://twitter.com")
    driver.find_element_by_name("edit-tos-agreement").click()#checkbox click

    driver.find_element_by_id("edit-submit").submit()

    #generate tokens
    driver.find_elements_by_xpath("//*[contains(text(), 'Keys and Access Tokens')]")[0].click()
    myElem = WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.ID, 'edit-submit-owner-token')))
    driver.find_element_by_id("edit-submit-owner-token").submit()

    # get the tokens
    myElem = WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.ID, 'edit-token-actions')))

    consumerKey = driver.find_elements_by_xpath("//*[contains(text(), 'Consumer Key (API Key)')]/following-sibling::span")[0].text
    consumerSecret = driver.find_elements_by_xpath("//*[contains(text(), 'Consumer Secret (API Secret)')]/following-sibling::span")[0].text
    accessToken = driver.find_elements_by_xpath("//*[contains(text(), 'Access Token')]/following-sibling::span")[0].text
    accessTokenSecret = driver.find_elements_by_xpath("//*[contains(text(), 'Access Token Secret')]/following-sibling::span")[0].text

    botnetConfig["consumerKey"] = consumerKey
    botnetConfig["consumerSecret"] = consumerSecret
    botnetConfig["accessToken"] = accessToken
    botnetConfig["accessTokenSecret"] = accessTokenSecret

    with open('results.txt', 'w') as outfile:
        json.dump(botnetConfig, outfile)