Рандомный заголовок запроса.

This commit is contained in:
2025-11-19 14:39:32 +10:00
parent 7131e85e9b
commit 010815e743
3 changed files with 89 additions and 15 deletions

85
include/http_header.py Normal file
View File

@@ -0,0 +1,85 @@
import random
def get_headers():
# ОС Chrome/Firefox
platforms = [
'Windows NT 10.0; Win64; x64',
'Windows NT 10.0; WOW64',
'Macintosh; Intel Mac OS X 10_15_7',
'X11; Linux x86_64',
]
# Chrome версии
chrome_major = random.randint(120, 128)
chrome_build = random.randint(6000, 9999)
chrome_patch = random.randint(10, 200)
chrome_ua = (
f"Mozilla/5.0 ({random.choice(platforms)}) "
f"AppleWebKit/537.36 (KHTML, like Gecko) "
f"Chrome/{chrome_major}.0.{chrome_build}.{chrome_patch} Safari/537.36"
)
# Firefox версии
ff_ver = random.randint(110, 125)
firefox_ua = (
f"Mozilla/5.0 ({random.choice(platforms)}; rv:{ff_ver}.0) "
f"Gecko/20100101 Firefox/{ff_ver}.0"
)
# Выбираем браузер
user_agent = random.choice([chrome_ua, firefox_ua])
# sec-ch-ua зависит только от Chrome
if "Chrome" in user_agent:
sec_ch_ua = f'"Not_A Brand";v="8", "Chromium";v="{chrome_major}", "Google Chrome";v="{chrome_major}"'
sec_ch_mob = "?0"
sec_platform = '"Windows"' if "Windows" in user_agent else '"macOS"' if "Macintosh" in user_agent else '"Linux"'
else:
# Firefox их не отправляет
sec_ch_ua = None
sec_ch_mob = None
sec_platform = None
# Accept-Language
accept_lang = random.choice([
"en-US,en;q=0.9",
"en-US,en;q=0.8",
"ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
"en;q=0.8",
])
# Реалистичные fetch-заголовки Chrome
sec_fetch_site = random.choice(["none", "same-site", "same-origin", "cross-site"])
sec_fetch_mode = "navigate"
sec_fetch_user = "?1"
sec_fetch_dest = "document"
# Заголовки в случайном порядке как в браузере
headers_list = [
("User-Agent", user_agent),
("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"),
("Accept-Language", accept_lang),
("Accept-Encoding", "gzip, deflate, br"),
("Connection", "keep-alive"),
("Upgrade-Insecure-Requests", "1"),
]
if sec_ch_ua:
headers_list.extend([
("sec-ch-ua", sec_ch_ua),
("sec-ch-ua-mobile", sec_ch_mob),
("sec-ch-ua-platform", sec_platform),
("Sec-Fetch-Site", sec_fetch_site),
("Sec-Fetch-Mode", sec_fetch_mode),
("Sec-Fetch-User", sec_fetch_user),
("Sec-Fetch-Dest", sec_fetch_dest),
])
# Перемешиваем порядок (!) — браузеры могут менять порядок
random.shuffle(headers_list)
# Превращаем в dict
headers = {k: v for k, v in headers_list}
return headers