#!/usr/bin/env python # -*- encoding: utf-8 -*- ''' @Contact : liuyuqi.gov@msn.cn @Time : 2022/11/26 22:54:35 @License : Copyright © 2017-2022 liuyuqi. All Rights Reserved. @Desc : ''' import argparse import json,os,re,logging from time import sleep, time import random from twitter_account_creator.models.phone import Phone from twitter_account_creator.utils.chrome import Chrome from twitter_account_creator.utils.edge import Edge from twitter_account_creator.utils.firefox import Firefox from selenium.webdriver.common.by import By as by import requests from twitter_account_creator.models import api from selenium import webdriver from selenium.webdriver.common.keys import Keys class Twitter(object): def __init__(self,proxy=None): self.parser = None self.sess=requests.Session() self.sess.proxies={ "127.0.0.1:1080" } self.driver=None def signup(self, apkKey :str, url, text, proxy=None): '''注册''' self.driver.get(api.signup) time.sleep(5) # 点击注册按钮 try: self.driver.find_element(by.XPATH, "//span[contains(text(), 'Sign up with phone or email')]").click(); time.sleep(10) except: pass # 获取手机号码,填入手机号码 try: # driver.find_element(by.XPATH, "//span[contains(text(), 'Use email instead')]").click(); time.sleep(1.5) _email = self.driver.find_element(by.XPATH, "//input[@name='phone_number']") pv = Phone() number, _id = pv.getNumber() number = f"+34{number}" time.sleep(3.5) # driver.switch_to.window(driver.window_handles[0]) _email.click(); _email.send_keys(f"{number}") except Exception: pass # 输入用户名 try: name = self.getRandomName() _name = self.driver.find_element(by.XPATH, "//input[@name='name']") _name.click(); _name.send_keys(name); time.sleep(1.5) except Exception: pass try: self.driver.find_element(by.XPATH, "//select[@id='SELECTOR_1']/option[@value='1']").click(); time.sleep(0.5) self.driver.find_element(by.XPATH, "//select[@id='SELECTOR_2']/option[@value='1']").click(); time.sleep(0.5) self.driver.find_element(by.XPATH, "//select[@id='SELECTOR_3']/option[@value='1987']").click(); time.sleep(0.5) except Exception: pass try: self.driver.find_element(by.XPATH, "//span[contains(text(), 'Next')]").click(); time.sleep(5.5) except Exception: pass try: self.driver.find_element(by.XPATH, "//span[contains(text(), 'Next')]").click(); time.sleep(5.5) except Exception: pass try: self.driver.find_element(by.XPATH, "//span[contains(text(), 'Sign up')]").click(); time.sleep(5.5) except Exception: pass try: self.driver.find_element(by.XPATH, "//span[contains(text(), 'OK')]").click(); time.sleep(5.5) except Exception: pass time.sleep(105) try: ver =self.driver.find_element(by.XPATH, "//input[@name='verfication_code']") # driver.switch_to.window(driver.window_handles[1]) # ver_code = get_code(driver, email) check=True while check: # text_res = get_sms(_id) ver_code = pv.get_sms(_id) if ver_code != "" and ver_code != None: check =False time.sleep(5) time.sleep(3.5) # driver.switch_to.window(driver.window_handles[0]) ver.click(); ver.send_keys(ver_code) time.sleep(1.5) except Exception: pass try: self.driver.find_element(by.XPATH, "//span[contains(text(), 'Next')]").click(); time.sleep(5.5) except Exception: pass try: self.driver.find_element(by.XPATH, "//span[contains(text(), 'Next')]").click(); time.sleep(5.5) # time.sleep(60*24) except Exception: pass # 输入密码 try: password = self.driver.find_element(by.XPATH, "//input[@name='password']"); password.click(); password.send_keys("Vojko123") time.sleep(5.5) except Exception: pass try: self.driver.find_element(by.XPATH, "//span[contains(text(), 'Next')]").click(); time.sleep(5.5) # time.sleep(60*24) except Exception: pass # check_phone_verification(driver, api_key) if not os.path.exists("data/accounts"): os.makedirs("data/accounts") try: self.driver.find_element(by.XPATH, "//span[contains(text(), 'Accept all cookies')]").click(); time.sleep(5.5) except: pass try: img_name = random.randint(1000, 9999) open(f"data/{img_name}.jpg", "wb").write(requests.get("https://thispersondoesnotexist.com/image").content) # img_info = random.choice(list(filter(None, open("infos.txt", "r").read().split("\n")))) # img_name = img_info.split("\t")[0] # bio = img_info.split("\t")[1] time.sleep(3.5) try: self.driver.find_elements(by.XPATH, "//input[@data-testid='fileInput']")[1].send_keys(os.path.abspath(f"data/{img_name}.jpg")) # f"data/{img_name}.jpg" except: try: self.driver.find_element(by.XPATH, "//input[@data-testid='fileInput']").send_keys(os.path.abspath(f"data/{img_name}.jpg")) # f"data/{img_name}.jpg" except: pass time.sleep(1.5) self.driver.find_element(by.XPATH, "//span[contains(text(), 'Apply')]").click(); time.sleep(1.5) self.driver.find_element(by.XPATH, "//span[contains(text(), 'Next')]").click(); time.sleep(5.5) os.remove(f"data/{img_name}.jpg") # os.remove(f"data/{img_name}") except Exception as e: # print(e) pass # try: # txt_area = driver.find_element(by.XPATH, '//textarea[@data-testid="ocfEnterTextTextInput"]') # txt_area.click(); txt_area.send_keys(bio); time.sleep(0.5) # driver.find_element(by.XPATH, "//span[contains(text(), 'Next')]").click(); time.sleep(5.5) # except: # pass try: self.driver.get("https://twitter.com"); time.sleep(7) try: self.driver.find_element(by.XPATH, "//span[contains(text(), 'Profile')]").click(); time.sleep(7) except: try: self.driver.find_element(by.XPATH, "//a[@data-testid='AppTabBar_Profile_Link']").click(); time.sleep(7) except: pass try: username_ = self.driver.current_url.replace("https://twitter.com/", "") except: username_ = "" img_name = random.randint() open(f"data/{img_name}.jpg", "wb").write(requests.get("https://thispersondoesnotexist.com/image").content) try: self.driver.find_element(by.XPATH, "//span[contains(text(), 'Edit profile')]").click(); time.sleep(5.5) except: try: self.driver.find_element(by.XPATH, "//span[contains(text(), 'Set Up Profile')]").click(); time.sleep(5.5) except: try: self.driver.find_element(by.XPATH, "//span[contains(text(), 'Set up profile')]").click(); time.sleep(5.5) except: pass # driver.find_element(by.XPATH, "//input[@data-testid='fileInput']").send_keys(f"data/{img_name}.jpg") self.driver.find_elements(by.XPATH, "//input[@data-testid='fileInput']")[1].send_keys(os.path.abspath(f"data/{img_name}.jpg")) time.sleep(1.5) self.driver.find_element(by.XPATH, "//span[contains(text(), 'Apply')]").click(); time.sleep(1.5) self.driver.find_element(by.XPATH, "//span[contains(text(), 'Save')]").click(); time.sleep(5.5) except: pass time.sleep(1.5) # 评论 # driver.get(url); time.sleep(7) # self.comments(driver, text) # 写入账户 os.makedirs("data/accounts") if not os.path.exists("data/accounts") else False with open("data/accounts/accounts.txt", "a") as file: file.write(f"{number}:Vojko123:{username_}\n") self.driver.quit() def comments(self,driver,text): try: add_comment = driver.find_element(by.XPATH, "//div[@data-testid='reply']") add_comment.click(); time.sleep(3.5) add_comment = driver.find_element(by.XPATH, "//div[@data-testid='tweetTextarea_0']") add_comment.click(); add_comment.send_keys(text); time.sleep(1.5) add_comment.send_keys(" "); time.sleep(1.5) try: driver.find_element(by.XPATH, "//span[contains(text(), 'Reply')]").click() except: try: driver.find_element(by.XPATH, "//span[contains(text(), 'Tweet')]").click() except: try: add_comment.send_keys(Keys.ENTER) except: pass # driver.find_element(by.XPATH, "//span[contains(text(), 'Tweet')]").click() time.sleep(5.5) e="Success comment" except Exception as e: # print(e) return e pass return e def phoneVerification(self, apiKey): if self.driver.current_url==api.accountAccess: try: # self.driver.find_element(by=by.XPATH,"//") # number,_id=pv.getNumber pass except Exception as e: pass finally: pass def getRandomName(self): '''获取随机昵称''' return json.loads(self.sess.get(api.getNickName).text)["name"] def run(self): # 下载驱动 self.chooseBrowser() self.signup(apkKey="xx",url="",text="xx") def chooseBrowser(self): browserType=input("if you installed \r\n Chrome input 1,\r\n Edge input 2,\r\n Firefox iniput 3:\r\n") # self.driver= webdriver.Chrome(executable_path=chrome_path,options=options) # chrome = Chrome() # self.driver=chrome.getWebdriver(proxy_address=proxy) if browserType=="1": self.driver=Chrome().getWebdriver() elif browserType=="2": self.driver=Edge().getWebdriver(proxy_address='127.0.0.1:1080') elif browserType=="3": self.driver=Firefox().getWebdriver() def getArgs(self): '''获取参数''' self.parser = argparse.ArgumentParser(description="desc help") self.parser.add_argument( "--proxy", type=str, default="127.0.0.1:1080", help="input local proxy") self.parser.add_argument( "--pwd", type=str, default="123456", help="input password") return self.parser.parse_args()