# # SPDX-FileCopyrightText: Hadad # SPDX-License-Identifier: Apache-2.0 # import random import threading import time from collections import deque from config import ( OS, OCTETS, BROWSERS, CHROME_VERSIONS, FIREFOX_VERSIONS, SAFARI_VERSIONS, EDGE_VERSIONS, DOMAINS, PROTOCOLS, SEARCH_ENGINES, KEYWORDS, COUNTRIES, LANGUAGES, TIMEZONES ) class WebLoader: def __init__(self): self.ipv4_pool = deque(maxlen=1000) self.ipv6_pool = deque(maxlen=1000) self.user_agent_pool = deque(maxlen=500) self.origin_pool = deque(maxlen=500) self.referrer_pool = deque(maxlen=500) self.location_pool = deque(maxlen=500) self.lock = threading.Lock() self.running = True def generate_ipv4(self): while len(self.ipv4_pool) < 1000 and self.running: octet = random.choice(OCTETS) ip = f"{octet}.{random.randint(0, 255)}.{random.randint(0, 255)}.{random.randint(1, 254)}" with self.lock: self.ipv4_pool.append(ip) time.sleep(0.001) def generate_ipv6(self): while len(self.ipv6_pool) < 1000 and self.running: segments = [] for _ in range(8): segments.append(f"{random.randint(0, 65535):04x}") ip = ":".join(segments) with self.lock: self.ipv6_pool.append(ip) time.sleep(0.001) def generate_user_agents(self): os_list = OS browsers = BROWSERS chrome_versions = CHROME_VERSIONS firefox_versions = FIREFOX_VERSIONS safari_versions = SAFARI_VERSIONS edge_versions = EDGE_VERSIONS while len(self.user_agent_pool) < 500 and self.running: browser = random.choice(browsers) os_string = random.choice(os_list) if browser == "Chrome": version = random.choice(chrome_versions) ua = f"Mozilla/5.0 ({os_string}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{version} Safari/537.36" elif browser == "Firefox": version = random.choice(firefox_versions) ua = f"Mozilla/5.0 ({os_string}) Gecko/20100101 Firefox/{version}" elif browser == "Safari": version = random.choice(safari_versions) webkit_version = f"{600 + random.randint(0, 15)}.{random.randint(1, 9)}.{random.randint(1, 20)}" ua = f"Mozilla/5.0 ({os_string}) AppleWebKit/{webkit_version} (KHTML, like Gecko) Version/{version} Safari/{webkit_version}" elif browser == "Edge": version = random.choice(edge_versions) ua = f"Mozilla/5.0 ({os_string}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{version.split('.')[0]}.0.0.0 Safari/537.36 Edg/{version}" else: version = f"{random.randint(70, 100)}.0.{random.randint(3000, 5000)}.{random.randint(50, 150)}" ua = f"Mozilla/5.0 ({os_string}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{version} Safari/537.36 OPR/{random.randint(80, 106)}.0.0.0" with self.lock: self.user_agent_pool.append(ua) time.sleep(0.002) def generate_origins(self): domains = DOMAINS protocols = PROTOCOLS while len(self.origin_pool) < 500 and self.running: protocol = random.choice(protocols) domain = random.choice(domains) origin = f"{protocol}{domain}" with self.lock: self.origin_pool.append(origin) time.sleep(0.002) def generate_referrers(self): search_engines = SEARCH_ENGINES keywords = KEYWORDS while len(self.referrer_pool) < 500 and self.running: engine = random.choice(search_engines) keyword = random.choice(keywords) referrer = f"{engine}{keyword}" with self.lock: self.referrer_pool.append(referrer) time.sleep(0.002) def generate_locations(self): countries = COUNTRIES languages = LANGUAGES timezones = TIMEZONES while len(self.location_pool) < 500 and self.running: country = random.choice(countries) language = random.choice(languages) timezone = random.choice(timezones) location = { "country": country, "language": language, "timezone": timezone } with self.lock: self.location_pool.append(location) time.sleep(0.002) def get_ipv4(self): with self.lock: if self.ipv4_pool: return self.ipv4_pool[random.randint(0, len(self.ipv4_pool) - 1)] return f"{random.randint(1, 223)}.{random.randint(0, 255)}.{random.randint(0, 255)}.{random.randint(1, 254)}" def get_ipv6(self): with self.lock: if self.ipv6_pool: return self.ipv6_pool[random.randint(0, len(self.ipv6_pool) - 1)] segments = [f"{random.randint(0, 65535):04x}" for _ in range(8)] return ":".join(segments) def get_user_agent(self): with self.lock: if self.user_agent_pool: return self.user_agent_pool[random.randint(0, len(self.user_agent_pool) - 1)] return "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" def get_origin(self): with self.lock: if self.origin_pool: return self.origin_pool[random.randint(0, len(self.origin_pool) - 1)] return "https://www.google.com" def get_referrer(self): with self.lock: if self.referrer_pool: return self.referrer_pool[random.randint(0, len(self.referrer_pool) - 1)] return "https://www.google.com/search?q=search" def get_location(self): with self.lock: if self.location_pool: return self.location_pool[random.randint(0, len(self.location_pool) - 1)] return { "country": "US", "language": "en-US", "timezone": "America/New_York" } def start_engine(self): threads = [ threading.Thread(target=self.generate_ipv4, daemon=True), threading.Thread(target=self.generate_ipv6, daemon=True), threading.Thread(target=self.generate_user_agents, daemon=True), threading.Thread(target=self.generate_origins, daemon=True), threading.Thread(target=self.generate_referrers, daemon=True), threading.Thread(target=self.generate_locations, daemon=True) ] for thread in threads: thread.start() def stop(self): self.running = False web_loader = WebLoader() web_loader.start_engine()