- 80
- 35
Всем бобра 🫶
Решил поделиться своим чудом, писал для себя в итоге стал не нужным.
Коротко, Заходит на аккаунт, получает куки, выходит из аккаунта
Пару недель назад написал полу-автоматический чекер аккаунтов TikTok. Почему "полу"? - Ответ прост, капчу при входе вы решаете сами.
Написан на Selenium, есть примитивное логирование в консоль, после входа в аккаунт он получает куки от него. Мало чего могу про него сказать, делал для себя, стал не нужным - решил слить, может кому пригодиться.
Создаем файл "accounts.txt" в него записываем наши аккаунты в формате - "логин:пароль:почта:парольОТпочты" (формат можно поменять в коде)
Я сравнил сколько времени уходит чекать 50 аккаунтов руками и софтом. около +-30 минут руками, 5-7 минут софтом. В любом случае намного быстрее.
Что насчёт прокси? - По стоку прокси не поддерживает, но код открытый, всегда можно прикрутить)
Написан на Selenium, есть примитивное логирование в консоль, после входа в аккаунт он получает куки от него. Мало чего могу про него сказать, делал для себя, стал не нужным - решил слить, может кому пригодиться.
Создаем файл "accounts.txt" в него записываем наши аккаунты в формате - "логин:пароль:почта:парольОТпочты" (формат можно поменять в коде)
Я сравнил сколько времени уходит чекать 50 аккаунтов руками и софтом. около +-30 минут руками, 5-7 минут софтом. В любом случае намного быстрее.
Что насчёт прокси? - По стоку прокси не поддерживает, но код открытый, всегда можно прикрутить)
CODE:
from selenium import webdriver
from time import sleep
from art import tprint
from loguru import logger
import os
class TikTok:
def __init__(self):
self.driver = webdriver.Firefox()
def __delete_cookie(self):
self.driver.delete_all_cookies()
def enter_account(self, value):
url = "https://www.tiktok.com/login/phone-or-email/email"
self.driver.get(url)
sleep(1)
self.driver.find_element('xpath', '//*[@id="loginContainer"]/div[1]/form/div[1]/input').send_keys(value[0])
sleep(1)
self.driver.find_element('xpath', '//*[@id="loginContainer"]/div[1]/form/div[2]/div/input').send_keys(value[1])
sleep(1)
self.driver.find_element('xpath', '//*[@id="loginContainer"]/div[1]/form/button').click()
Login = False
while Login == False:
page_source = self.driver.page_source
if "<span>Успешный вход</span>" in page_source:
logger.info(f"[{value[0]}] Валид.")
Login = True
elif '<span role="status">Неверная учетная запись или пароль</span>' in page_source:
logger.warning(f"[{value[0]}] Не валид.")
return
elif 'Неверное имя пользователя или пароль. Попробуйте еще раз' in page_source:
logger.warning(f"[{value[0]}] Не валид.")
return
elif '<span role="status">Пользователь не существует</span>' in page_source:
logger.warning(f"[{value[0]}] Не валид.")
return
elif '<span role="status">Ваш аккаунт сейчас заморожен.</span>' in page_source:
logger.warning(f"[{value[0]}] Не валид.")
return
self.get_cookies(value)
def get_cookies(self, value):
sleep(4)
logger.info(f"[{value[0]}] Получаю куки.")
cook = str(self.driver.get_cookies())
valid_cook = cook.replace("True", 'true')
valid_cook = valid_cook.replace("False", 'false')
valid_cook = valid_cook.replace("'", '"')
with open("success_accounts.txt", "a") as file:
file.write(f"{value[0]}:{value[1]}:{value[2]}:{value[3]}\n{valid_cook}\n\n")
self.__delete_cookie()
class UI:
def __init__(self):
with open("accounts.txt", "r") as file:
self.accounts = file.readlines()
def start(self):
os.system('cls')
if self.accounts == []:
logger.error('Заполните файл "accounts.txt"')
return
tprint("CookieTikTok")
input("\n\n> ")
tiktok = TikTok()
cout = 1
for i in self.accounts:
account = i.replace("\n","").split(":")
logger.info(f'[{cout}] Начинаю проверять "{account[0]}"')
tiktok.enter_account([account[0], account[1], account[2], account[3]])
sleep(2)
cout += 1
UI().start()