Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Starlinkboy
GitHub Repository: Starlinkboy/TikTok-Viewbot
Path: blob/main/viewbot.py
194 views
1
# do not spam or it will kill devices and ruin fun for others
2
3
import base64
4
from pystyle import *
5
import os
6
import sys
7
import ssl
8
import re
9
import time
10
import random
11
import threading
12
import requests
13
import hashlib
14
import json
15
16
from urllib3.exceptions import InsecureRequestWarning
17
from http import cookiejar
18
19
class BlockCookies(cookiejar.CookiePolicy):
20
return_ok = set_ok = domain_return_ok = path_return_ok = lambda self, *args, **kwargs: False
21
netscape = True
22
rfc2965 = hide_cookie2 = False
23
24
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
25
ssl._create_default_https_context = ssl._create_unverified_context
26
27
r = requests.Session()
28
r.cookies.set_policy(BlockCookies())
29
30
class Gorgon:
31
def __init__(self,params:str,data:str,cookies:str,unix:int)->None:self.unix=unix;self.params=params;self.data=data;self.cookies=cookies
32
def hash(self,data:str)->str:
33
try:_hash=str(hashlib.md5(data.encode()).hexdigest())
34
except Exception:_hash=str(hashlib.md5(data).hexdigest())
35
return _hash
36
def get_base_string(self)->str:base_str=self.hash(self.params);base_str=base_str+self.hash(self.data)if self.data else base_str+str('0'*32);base_str=base_str+self.hash(self.cookies)if self.cookies else base_str+str('0'*32);return base_str
37
def get_value(self)->json:base_str=self.get_base_string();return self.encrypt(base_str)
38
def encrypt(self,data:str)->json:
39
unix=self.unix;len=20;key=[223,119,185,64,185,155,132,131,209,185,203,209,247,194,185,133,195,208,251,195];param_list=[]
40
for i in range(0,12,4):
41
temp=data[8*i:8*(i+1)]
42
for j in range(4):H=int(temp[j*2:(j+1)*2],16);param_list.append(H)
43
param_list.extend([0,6,11,28]);H=int(hex(unix),16);param_list.append((H&4278190080)>>24);param_list.append((H&16711680)>>16);param_list.append((H&65280)>>8);param_list.append((H&255)>>0);eor_result_list=[]
44
for (A,B) in zip(param_list,key):eor_result_list.append(A^B)
45
for i in range(len):C=self.reverse(eor_result_list[i]);D=eor_result_list[(i+1)%len];E=C^D;F=self.rbit_algorithm(E);H=(F^4294967295^len)&255;eor_result_list[i]=H
46
result=''
47
for param in eor_result_list:result+=self.hex_string(param)
48
return{'X-Gorgon':'0404b0d30000'+result,'X-Khronos':str(unix)}
49
def rbit_algorithm(self,num):
50
result='';tmp_string=bin(num)[2:]
51
while len(tmp_string)<8:tmp_string='0'+tmp_string
52
for i in range(0,8):result=result+tmp_string[7-i]
53
return int(result,2)
54
def hex_string(self,num):
55
tmp_string=hex(num)[2:]
56
if len(tmp_string)<2:tmp_string='0'+tmp_string
57
return tmp_string
58
def reverse(self,num):tmp_string=self.hex_string(num);return int(tmp_string[1:]+tmp_string[:1],16)
59
60
def send(did, iid, cdid, openudid):
61
global reqs, _lock, success, fails
62
63
for x in range(10):
64
try:
65
params = f"device_id={did}&iid={iid}&device_type=SM-G973N&app_name=musically_go&host_abi=armeabi-v7a&channel=googleplay&device_platform=android&version_code=160904&device_brand=samsung&os_version=9&aid=1340"
66
payload = f"item_id={__aweme_id}&play_delta=1"
67
sig = Gorgon(params=params, cookies=None, data=None, unix=int(time.time())).get_value()
68
69
response = requests.post(
70
url = (
71
"https://api16-va.tiktokv.com/aweme/v1/aweme/stats/?" + params
72
),
73
data = payload,
74
headers = {'cookie':'sessionid=90c38a59d8076ea0fbc01c8643efbe47','x-gorgon':sig['X-Gorgon'],'x-khronos':sig['X-Khronos'],'user-agent':'okhttp/3.10.0.1'},
75
verify = False
76
)
77
reqs += 1
78
try:
79
_lock.acquire()
80
print(Colorate.Horizontal(Colors.green_to_white, f"+ - sent views {response.json()['log_pb']['impr_id']} {__aweme_id} {reqs}"))
81
_lock.release()
82
success += 1
83
except:
84
fails += 1
85
continue
86
87
except Exception as e:
88
pass
89
90
def rpsm_loop():
91
global rps, rpm
92
while True:
93
initial = reqs
94
time.sleep(1.5)
95
rps = round((reqs - initial) / 1.5, 1)
96
rpm = round(rps * 60, 1)
97
98
def title_loop():
99
global rps, rpm, success, fails, reqs
100
101
if os.name == "nt":
102
while True:
103
os.system(f'title TikTok Viewbot by @xtekky ^| success: {success} fails: {fails} reqs: {reqs} rps: {rps} rpm: {rpm}')
104
time.sleep(0.1)
105
106
if __name__ == "__main__":
107
os.system("cls" if os.name == "nt" else "clear"); os.system("title TikTok Viewbot by @xtekky" if os.name == "nt" else "")
108
txt = """\n\n╦ ╦╦╔═╗╦ ╦╔╗ ╔═╗╔╦╗\n╚╗╔╝║║╣ ║║║╠╩╗║ ║ ║ \n ╚╝ ╩╚═╝╚╩╝╚═╝╚═╝ ╩ \n"""
109
print(
110
Colorate.Vertical(
111
Colors.DynamicMIX((Col.light_blue, Col.purple)), Center.XCenter(txt)
112
)
113
)
114
115
try:
116
link = input(Colorate.Horizontal(Colors.green_to_white, "[?] Enter Link: "))
117
# "https://www.tiktok.com/@starlinkboy/video/7132359548412775682"
118
# str(Write.Input("\n\n ? - Video Link > ", Colors.yellow_to_red, interval=0.0001))
119
__aweme_id = str(
120
re.findall(r"(\d{18,19})", link)[0]
121
if len(re.findall(r"(\d{18,19})", link)) == 1
122
else re.findall(
123
r"(\d{18,19})",
124
requests.head(link, allow_redirects=True, timeout=5).url
125
)[0]
126
)
127
except:
128
os.system("cls" if os.name == "nt" else "clear")
129
input(Col.red + "x - Invalid link, try inputting video id only" + Col.reset)
130
sys.exit(0)
131
132
os.system("cls" if os.name == "nt" else "clear")
133
print("loading...")
134
135
_lock = threading.Lock()
136
reqs = 0
137
success = 0
138
fails = 0
139
rpm = 0
140
rps = 0
141
142
threading.Thread(target=rpsm_loop).start()
143
threading.Thread(target=title_loop).start()
144
145
devices = open('devices.txt', 'r').read().splitlines()
146
while True:
147
device = random.choice(devices)
148
149
if eval(base64.b64decode("dGhyZWFkaW5nLmFjdGl2ZV9jb3VudCgpIDwgMTAwICMgZG9uJ3QgY2hhbmdlIGNvdW50IG9yIHUgd2lsbCBraWxsIGRldmljZXMgYW5kIHJ1aW4gZnVuIGZvciBvdGhlcnM=")):
150
did, iid, cdid, openudid = device.split(':')
151
eval(base64.b64decode('dGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VuZCxhcmdzPVtkaWQsaWlkLGNkaWQsb3BlbnVkaWRdKS5zdGFydCgp'))
152