123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- #!/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()
|