YouTube-Internal-Clients/innerbrute.py

93 lines
3.9 KiB
Python

import requests
import os
import time
client_versions = open("payloads/client_versions.txt", "r").readlines()
data_template = open("payloads/post_data.txt", "r").read()
innertube_hosts = [
{
"video_id": "vJz8QzO1VzQ", # normal video
"domain": "www.youtube.com",
"key": "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8",
"headers": {
"Origin": "https://www.youtube.com",
"Referer": "https://www.youtube.com/",
"Accept-Language": "de,de-DE;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.52"
}
},
{
"video_id": "pckuS--UlV4", # video "for kids"
"domain": "www.youtubekids.com",
"key": "AIzaSyBbZV_fZ3an51sF-mvs5w37OqqbsTOzwtU",
"headers": {
"Origin": "https://www.youtubekids.com",
"Referer": "https://www.youtubekids.com/",
"Accept-Language": "de,de-DE;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.52"
}
},
{
"video_id": "RY607kB2QiU", # music video
"domain": "music.youtube.com",
"key": "AIzaSyC9XL3ZjWddXya6X74dJoCTL-WEYFDNX30",
"headers": {
"Origin": "https://music.youtube.com",
"Referer": "https://music.youtube.com/",
"Accept-Language": "de,de-DE;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.52"
}
},
{
"video_id": "zv9NimPx3Es", # another music video
"domain": "music.youtube.com",
"key": "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8",
"headers": {
"Origin": "https://music.youtube.com",
"Referer": "https://music.youtube.com/",
"Accept-Language": "de,de-DE;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.52"
}
}
]
if not os.path.exists('responses'):
os.makedirs('responses')
requests_failed = 0
for client_name_id in range(1, 120):
for client_version in client_versions:
client_version = client_version.replace("\n", "").replace("\r", "")
if client_version == "":
continue
for i, host in enumerate(innertube_hosts):
try_id = str(client_name_id) + "_" + client_version + "_" + str(len(innertube_hosts) - i) + "_" + host["domain"] + "_" + host["key"]
print("Try ClientId: " + str(client_name_id) + " ClientVersion: " + str(client_version) + " @ " + host["domain"] + " Failed Requests: " + str(requests_failed))
data = data_template.replace("%videoId%", host["video_id"]).replace('%clientName%', str(client_name_id)).replace('%clientVersion%', client_version)
headers = host["headers"].copy()
for i in range(0, 4):
try:
response = requests.post("https://" + host["domain"] + "/youtubei/v1/player?key=" + host["key"], data=data, headers=host["headers"], timeout=5)
print("Response Code: " + str(response.status_code))
if response.status_code == 200:
out = open("responses/" + try_id + ".json", "w", encoding="utf-8")
out.write(response.text)
out.close()
break
except Exception as ex:
if i == 3:
requests_failed += 1
time.sleep(0.5)
print(ex)