├── setup.bat ├── License ├── README.md └── main.py /setup.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | color 0A 3 | cls 4 | echo Downloading Modules... 5 | python -m pip install colorama 6 | python -m pip install selenium 7 | python -m pip install time 8 | python -m pip install os 9 | echo Done 10 | pause -------------------------------------------------------------------------------- /License: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 stan_711 4 | 5 | Permission is hereby granted to use this tool if our tool name is out of reach in this Contribution of our Repostirory we 6 | will be able to confront any problems in our server if modified and replaced name with someone else you will be 7 | charged or sued for these actions. This is our tool do not change the name of it you can add extra code but the rest 8 | is ours. Be careful with this tool it is against TOS of TIKTOK! 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software/Tool. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. WE DONT HOLD COUNTABILITY OF OTHERS PROBLEMS 16 | IF YOU DO JOIN OUR SERVER IN README.txt FILE FOR MORE INFORMATION OR REASON. 17 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Zefoy TikTok Automator | Vex Services

  2 | 3 |

**PATCHED** WE ARE WORKING ON A FIX AND UPDATE TO MAKE IT WORK AND MAKE IT BETTER, THANK YOU! 4 | *FOR MORE INFORMATION PLEASE JOIN:* `https://discord.gg/9G3m78jZSY`

5 | 6 | `REQUIREMENTS:` 7 | - python ( 3.9 or latest version: `https://www.python.org/downloads/` ) 8 | - chromedriver.exe ( current version as chrome ) 9 | - visual studio code 10 | 11 | `INSTRUCTIONS:` 12 | - download requirements 13 | - start setup.bat file 14 | - in *main.py* file, put the file location for the chromewebdriver.exe with double back slash: *//* ( PATH LOCATED ON LINE #125 ) should say "//chromedriver.exe" 15 | - run main.py botter and then type the tiktok video URL and solve the captcha on Zefoy and then type "y", the bot will check captcha then it'll start. 16 | *NOTE: IF IT SAYS CAPTCHA NOT SOLVED WHEN YOU TYPE Y DO IT AGAIN ( & it should work ). * 17 | 18 | `INCLUDES:` 19 | - Followers 20 | - Shares 21 | - Hearts 22 | - Views 23 | - Option: All ( selects all options, merges ) 24 | 25 | ![image](https://user-images.githubusercontent.com/104242556/201496694-2920cf4d-b9e0-4d24-b98a-b8a0de9e7589.png) 26 | 27 | `COMMON ERRORS:` 28 | - "Checking if the site connection is secure" 29 | | *To prevent this error make sure your VPN or Proxy is turned off. Also make sure to have a secure network.* 30 | - "[>] You Didn't Finish The Captcha. 31 | [>>>] Type "y" Once You Finished The Captcha: y 32 | | *WORKING ON FIX* 33 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | import time 2 | from colorama import Fore, init 3 | from selenium import webdriver 4 | from selenium.webdriver.chrome.service import Service 5 | from selenium.webdriver.common.by import By 6 | from os import system, get_terminal_size 7 | 8 | init() 9 | system("mode 800") 10 | system("title Zefoy TikTok Automator | Vex Services") 11 | 12 | def color(str, color): 13 | if color.lower() == "green": 14 | result = f"{Fore.WHITE}[{Fore.LIGHTGREEN_EX}{str}{Fore.WHITE}]{Fore.LIGHTGREEN_EX}" 15 | 16 | elif color.lower() == "red": 17 | result = f"{Fore.WHITE}[{Fore.LIGHTRED_EX}{str}{Fore.WHITE}]{Fore.LIGHTRED_EX}" 18 | 19 | return result 20 | 21 | def align(str): 22 | lines = str.splitlines( ) 23 | greatest = [] 24 | for i in lines: 25 | greatest.append(len(i)) 26 | 27 | for i in lines: 28 | length = round(int(greatest[-1])/2) 29 | print(f"{' '*round(get_terminal_size().columns/2-length)}{i}") 30 | 31 | 32 | class printing(): 33 | 34 | def __init__(self, a, b, c, d): 35 | self.a = a 36 | self.b = b 37 | self.c = c 38 | self.d = d 39 | 40 | def text(): 41 | text = f"""{Fore.LIGHTBLUE_EX} 42 | 43 | ██╗░░░██╗███████╗██╗░░██╗ 44 | ██║░░░██║██╔════╝╚██╗██╔╝ 45 | ╚██╗░██╔╝█████╗░░░╚███╔╝░ 46 | ░╚████╔╝░██╔══╝░░░██╔██╗░ 47 | ░░╚██╔╝░░███████╗██╔╝╚██╗ 48 | ░░░╚═╝░░░╚══════╝╚═╝░░╚═╝ 49 | .gg/9G3m78jZSY 50 | 51 | """ 52 | text = text.replace('▪', f'{Fore.GREEN}▪{Fore.LIGHTBLUE_EX}') 53 | text = text.replace('•', f'{Fore.GREEN}•{Fore.LIGHTBLUE_EX}') 54 | text = text.replace('·', f'{Fore.GREEN}·{Fore.LIGHTBLUE_EX}') 55 | text = text.replace('.', f'{Fore.GREEN}.{Fore.LIGHTBLUE_EX}') 56 | align(text) 57 | 58 | def info(): 59 | align(f"""{Fore.WHITE} 60 | ╔═════════════════════════════════════════╗ 61 | ║ ║ 62 | ║ {color(">", "green")} Developer: {Fore.LIGHTBLUE_EX}stan#0633{Fore.WHITE} 63 | ║ {color(">", "green")} Discord: {Fore.LIGHTBLUE_EX}https://discord.gg/9G3m78jZSY{Fore.WHITE} 64 | ║ {color(">", "green")} Github: {Fore.LIGHTBLUE_EX}https://github.com/vex-ss{Fore.WHITE} 65 | ║ ║ 66 | ╚═════════════════════════════════════════╝ 67 | """) 68 | 69 | def options(): 70 | align(f"""{Fore.WHITE} 71 | ╔═══════════════════════════════╗ 72 | ║ ║ 73 | ║ {color("1", "green")} {Fore.LIGHTBLUE_EX}Start{Fore.WHITE} ║ 74 | ║ {color("2", "green")} {Fore.LIGHTBLUE_EX}Info{Fore.WHITE} ║ 75 | ║ {color("3", "green")} {Fore.LIGHTBLUE_EX}Options{Fore.WHITE} ║ 76 | ║ {color("4", "green")} {Fore.LIGHTBLUE_EX}Clear{Fore.WHITE} ║ 77 | ║ {color("5", "green")} {Fore.LIGHTBLUE_EX}Exit{Fore.WHITE} ║ 78 | ║ ║ 79 | ╚═══════════════════════════════╝ 80 | """) 81 | 82 | def botOptions(): 83 | align(f"""{Fore.WHITE} 84 | ╔═══════════════════════════════╗ 85 | ║ ║ 86 | ║ {color("1", "green")} {Fore.LIGHTBLUE_EX}Follows{Fore.WHITE} ║ 87 | ║ {color("2", "green")} {Fore.LIGHTBLUE_EX}Hearts{Fore.WHITE} ║ 88 | ║ {color("3", "green")} {Fore.LIGHTBLUE_EX}Views{Fore.WHITE} ║ 89 | ║ {color("4", "green")} {Fore.LIGHTBLUE_EX}Shares{Fore.WHITE} ║ 90 | ║ {color("5", "green")} {Fore.LIGHTBLUE_EX}All{Fore.WHITE} ║ 91 | ║ ║ 92 | ╚═══════════════════════════════╝ 93 | """) 94 | 95 | def cooldowns(self): 96 | align(f"""{Fore.WHITE} 97 | ╔═══════════════════════════════╗ 98 | ║ {color(">", "green")} {Fore.LIGHTBLUE_EX}Cool Downs {color("<", "green")}║ 99 | ║ {color(">", "green")} {Fore.LIGHTBLUE_EX}Follows: {Fore.LIGHTCYAN_EX}{self.a}s{Fore.WHITE} ║ 100 | ║ {color(">", "green")} {Fore.LIGHTBLUE_EX}Hearts: {Fore.LIGHTCYAN_EX}{self.b}s{Fore.WHITE} ║ 101 | ║ {color(">", "green")} {Fore.LIGHTBLUE_EX}Views: {Fore.LIGHTCYAN_EX}{self.c}s{Fore.WHITE} ║ 102 | ║ {color(">", "green")} {Fore.LIGHTBLUE_EX}Shares: {Fore.LIGHTCYAN_EX}{self.d}s{Fore.WHITE} ║ 103 | ║ ║ 104 | ╚═══════════════════════════════╝ 105 | """) 106 | 107 | def refresh(): 108 | system("cls") 109 | printing.text() 110 | align(f"\n\n\t\t\t{color('>', 'green')}Developer: {Fore.LIGHTBLUE_EX}stan#0633{color('<', 'green')}") 111 | align(f"\t\t\t\t{color('>', 'green')}{Fore.LIGHTGREEN_EX}Github: {Fore.LIGHTBLUE_EX}https://github.com/vex-ss{color('<', 'green')}") 112 | printing.options() 113 | 114 | ## iliya was here < :) 115 | 116 | option = webdriver.ChromeOptions() 117 | option.add_experimental_option('excludeSwitches', ['enable-logging']) 118 | service = Service('C:\\Users\\Stan\\Downloads\\zefoy-tiktok-automator-main\\chromedriver.exe') 119 | driver = webdriver.Chrome(options=option) 120 | 121 | def start(video, botChoice): 122 | 123 | 124 | driver.get("https://zefoy.com") 125 | 126 | if driver.title == "zefoy.com | 502: Bad gateway": 127 | print(f"{color('>', 'red')} Zefoy Is Down... Attempting To Fix.\n") 128 | while driver.title == "zefoy.com | 502: Bad gateway": 129 | time.sleep(20) 130 | driver.refresh() 131 | if driver.title != "zefoy.com | 502: Bad gateway": 132 | print(f"\n{color('>', 'red')} Fixed! Zefoy is Back Up. Starting Now.\n") 133 | break 134 | else: 135 | print(f"\n{color('>', 'green')} Zefoy Is Up!\n") 136 | 137 | captchaCheck = input(f"{color('>>>', 'green')} Type \"y\" Once You Finished The Captcha: {Fore.LIGHTBLUE_EX}") 138 | captchaFinish = False 139 | 140 | if captchaCheck == "y": 141 | while captchaFinish != True: 142 | try: 143 | driver.find_element(By.XPATH, "/html/body/div[4]/div[1]/div[3]/div/div[1]/div/h5") 144 | captchaFinish = True 145 | except: 146 | print(f"\n{color('>', 'red')} You Didn't Finish The Captcha.") 147 | input(f"{color('>>>', 'green')} Type \"y\" Once You Finished The Captcha: {Fore.LIGHTBLUE_EX}") 148 | 149 | # Defining Find Cooldown 150 | def findCooldown(xpath): 151 | cooldown = driver.find_element(By.XPATH, xpath).text 152 | 153 | # String Slicing For Minutes 154 | minute1 = cooldown.find("wait") + 4 155 | minute2 = minute1 156 | while True: 157 | minute2 += 1 158 | if cooldown[minute2] == "m": 159 | break 160 | 161 | # String Slicing For Seconds 162 | second1 = cooldown.find(")") + 1 163 | second2 = second1 164 | while True: 165 | second2 += 1 166 | if cooldown[second2] == "s": 167 | break 168 | 169 | # Returning Minutes & Second Added 170 | return (int(cooldown[minute1:minute2])*60) + int(cooldown[second1:second2]) 171 | 172 | print(f"\n{color('>', 'green')} Captcha is Finished, Starting...\n") 173 | 174 | # Defining Xpaths 175 | home = "/html/body/nav/ul/li/a" 176 | 177 | views_enter = "/html/body/div[4]/div[1]/div[3]/div/div[4]/div/button" 178 | views_input = "/html/body/div[4]/div[5]/div/form/div/input" 179 | views_search = "/html/body/div[4]/div[5]/div/form/div/div/button" 180 | views_submit = "/html/body/div[4]/div[5]/div/div/div[1]/div/form/button" 181 | views_cooldowns = "/html/body/div[4]/div[5]/div/div/h4" 182 | 183 | shares_enter = "/html/body/div[4]/div[1]/div[3]/div/div[5]/div/button" 184 | shares_input = "/html/body/div[4]/div[6]/div/form/div/input" 185 | shares_search = "/html/body/div[4]/div[6]/div/form/div/div/button" 186 | shares_submit = "/html/body/div[4]/div[6]/div/div/div[1]/div/form/button" 187 | shares_cooldowns = "/html/body/div[4]/div[6]/div/div/h4" 188 | 189 | hearts_enter = "/html/body/div[4]/div[1]/div[3]/div/div[2]/div/button" 190 | hearts_input = "/html/body/div[4]/div[3]/div/form/div/input" 191 | hearts_search = "/html/body/div[4]/div[3]/div/form/div/div/button" 192 | hearts_submit = "/html/body/div[4]/div[3]/div/div/div[1]/div/form/button" 193 | hearts_cooldowns = "/html/body/div[4]/div[3]/div/div/h4" 194 | 195 | follows_enter = "/html/body/div[4]/div[1]/div[3]/div/div[1]/div/button" 196 | follows_input = "/html/body/div[4]/div[2]/div/form/div/input" 197 | follows_search = "/html/body/div[4]/div[2]/div/form/div/div/button" 198 | follows_submit = "/html/body/div[4]/div[2]/div/div/div[1]/div/form/button" 199 | follows_cooldowns = "/html/body/div[4]/div[2]/div/div/h4" 200 | 201 | # List of Xpaths for the Bot All 202 | enterList = [ 203 | [follows_enter, follows_input, follows_search, follows_submit, follows_cooldowns, "Follows"], 204 | [views_enter, views_input, views_search, views_submit, views_cooldowns, "Views"], 205 | [hearts_enter, hearts_input, hearts_search, hearts_submit, hearts_cooldowns, "Hearts"], 206 | [shares_enter, shares_input, shares_search, shares_submit, shares_cooldowns, "Shares"], 207 | ] 208 | 209 | # Defining Cool-downs 210 | follows_cooldown = 0 211 | hearts_cooldown = 0 212 | views_cooldown = 0 213 | shares_cooldown = 0 214 | 215 | # Defining Boolean 216 | continue1 = False 217 | continue2 = False 218 | 219 | time.sleep(5) 220 | 221 | # Defining Botting Function, Uses XPaths as parameters 222 | def bot(which, enter, input, search, submit, con1, con2, cooldownText, cooldownTime): 223 | amount = 0 224 | while captchaFinish: 225 | driver.refresh() 226 | 227 | #Checks If Zefoy Down 228 | if driver.title == "zefoy.com | 502: Bad gateway": 229 | print(f"{color('>', 'red')} Zefoy Is Down... Attempting To Fix.\n") 230 | while driver.title == "zefoy.com | 502: Bad gateway": 231 | time.sleep(20) 232 | driver.refresh() 233 | if driver.title != "zefoy.com | 502: Bad gateway": 234 | print(f"\n{color('>', 'red')} Fixed! Zefoy is Back Up. Starting Now.\n") 235 | break 236 | 237 | print(f"{color('>', 'green')} Sending {which}...") 238 | try: 239 | driver.find_element(By.XPATH, enter).click() 240 | time.sleep(1) 241 | driver.find_element(By.XPATH, input).send_keys(video) 242 | con1 = True 243 | except: 244 | con1 = False 245 | print(f"\n{color('>', 'red')} {which} Page is Down on Zefoy.") 246 | print(f"{color('>', 'red')} Stopped.") 247 | time.sleep(1000000) 248 | if con1 == True: 249 | time.sleep(2) 250 | driver.find_element(By.XPATH, search).click() 251 | time.sleep(3) 252 | try: 253 | driver.find_element(By.XPATH, submit).click() 254 | con2 = True 255 | print(f"{color('>', 'green')} Sent {which}, Getting Cool Down\n") 256 | except: 257 | con2 = False 258 | print(f"{color('>', 'red')} {which} Cool Down Isn't Finished, Getting Cool Down.\n") 259 | time.sleep(5) 260 | cooldownTime += findCooldown(cooldownText) 261 | if con2 == True: 262 | time.sleep(5) 263 | cooldownTime += findCooldown(cooldownText) 264 | else: 265 | pass 266 | else: 267 | pass 268 | 269 | amount += 1 270 | driver.find_element(By.XPATH, home).click() 271 | print(f"{color('>', 'green')} Completed {Fore.LIGHTCYAN_EX}{amount} {Fore.LIGHTGREEN_EX}Time.") 272 | print(f"{color('>', 'green')} Cooldown: {Fore.LIGHTCYAN_EX}{cooldownTime}s\n") 273 | for i in range(10): 274 | time.sleep(cooldownTime/10) 275 | driver.refresh() 276 | print(f"{color('>', 'green')} Cool-Down: {Fore.LIGHTCYAN_EX}{i+1}/10") 277 | 278 | print(f"\n{color('>', 'green')} Finished Cool Down, Restarting...\n") 279 | time.sleep(5) 280 | 281 | def botAll(boolean): 282 | amount = 0 283 | while True: 284 | 285 | #Checks If Zefoy Down 286 | if driver.title == "zefoy.com | 502: Bad gateway": 287 | print(f"{color('>', 'red')} Zefoy Is Down... Attempting To Fix.\n") 288 | while driver.title == "zefoy.com | 502: Bad gateway": 289 | time.sleep(20) 290 | driver.refresh() 291 | if driver.title != "zefoy.com | 502: Bad gateway": 292 | print(f"\n{color('>', 'red')} Fixed! Zefoy is Back Up. Starting Now.\n") 293 | break 294 | 295 | driver.refresh() 296 | cooldownList = [] 297 | if boolean: 298 | for i in enterList: 299 | time.sleep(3) 300 | print(f"{color('>', 'green')} Sending {i[5]}...") 301 | try: 302 | driver.find_element(By.XPATH, i[0]).click() 303 | time.sleep(1) 304 | driver.find_element(By.XPATH, i[1]).send_keys(video) 305 | continue1 = True 306 | except: 307 | print(f"{color('>', 'red')} {i[5]} Page is Down on Zefoy.\n") 308 | cooldownList.append(0) 309 | continue1 = False 310 | driver.find_element(By.XPATH, home) 311 | 312 | if continue1 == True: 313 | time.sleep(2) 314 | driver.find_element(By.XPATH, i[2]).click() 315 | time.sleep(3) 316 | 317 | try: 318 | driver.find_element(By.XPATH, i[3]).click() 319 | continue2 = True 320 | print(f"{color('>', 'green')} Sent {i[5]}, Getting Cool Down.\n") 321 | except: 322 | print(f"{color('>', 'red')} {i[5]} Cool Down Isn't Finished, Getting Cool Down.\n") 323 | time.sleep(5) 324 | cooldownList.append(findCooldown(i[4])) 325 | driver.find_element(By.XPATH, home).click() 326 | continue2 = False 327 | 328 | if continue2 == True: 329 | time.sleep(5) 330 | cooldownList.append(findCooldown(i[4])) 331 | driver.refresh() 332 | else: 333 | pass 334 | else: 335 | pass 336 | 337 | amount +=1 338 | cooldownList.sort() 339 | 340 | 341 | print(f"{color('>', 'green')} Completed {amount} Time.") 342 | print(f"{color('>', 'green')} Cooldown: {Fore.LIGHTCYAN_EX}{cooldownList[-1]}s\n") 343 | 344 | for i in range(10): 345 | time.sleep(cooldownList[-1]/10) 346 | driver.refresh() 347 | print(f"{color('>', 'green')} Cool-Down: {Fore.LIGHTCYAN_EX}{i+1}/10") 348 | 349 | time.sleep(5) 350 | print(f"\n{color('>', 'green')} Finished Cool Down, Restarting...\n") 351 | driver.refresh() 352 | 353 | if botChoice == 1: 354 | bot("Follows", follows_enter, follows_input, follows_search, follows_submit, continue1, continue2, follows_cooldowns, follows_cooldown) 355 | elif botChoice == 2: 356 | bot("Hearts", hearts_enter, hearts_input, hearts_search, hearts_submit, continue1, continue2, hearts_cooldowns, hearts_cooldown) 357 | elif botChoice == 3: 358 | bot("Views", views_enter, views_input, views_search, views_submit, continue1, continue2, views_cooldowns, views_cooldown) 359 | elif botChoice == 4: 360 | bot("Shares", shares_enter, shares_input, shares_search, shares_submit, continue1, continue2, shares_cooldowns, shares_cooldown) 361 | elif botChoice == 5: 362 | botAll(True) 363 | 364 | printing.refresh() 365 | 366 | while True: 367 | choice = input(f"{color('>>>', 'green')} Choice: {Fore.LIGHTBLUE_EX}") 368 | if choice == "1": 369 | video = input(f"{color('>>>', 'green')} TikTok Video URL: {Fore.LIGHTBLUE_EX}") 370 | printing.botOptions() 371 | option = input(f"\n{color('>>>', 'green')} Which to Bot: {Fore.LIGHTBLUE_EX}") 372 | start(video, int(option)) 373 | break 374 | 375 | elif choice == "2": 376 | printing.info() 377 | elif choice == "3": 378 | printing.options() 379 | elif choice == "4": 380 | printing.refresh() 381 | elif choice =="5": 382 | exit() 383 | --------------------------------------------------------------------------------