• 15-03-2026, 11:29:54
    #1
    Ücretsiz Cookie Creator (Forum Ruhunu Diriltiyorum Konu 1)
    HER ŞEY PARA DEĞİL!!!
    Arkadaşlar elimde bir proxy destekli olabildiğince özgün cookie oluşturmaya yarayan bir kod var. Bu işin uzmanları lütfen incelesin baksın ve ona göre söylesin. Bu kod bir işe yarar mı yaramaz mı diye. Ayrıca bu kodun ortaya çıkardığı cookieler nerelerde kullanılır. Onu da söylerlerse iyi olur. Örnek çıktıyı ben bırakmıyorum test edip deneyenler bizi aydınlatsın. Ayrıca kodu kullanmak için taget iste ve proxy kısımlarını güncellemek lazımdır ona göre.
    stealth eklendi önceki konuyu silmiyorum çünkü herkes duruma göre istediğini kullanır.



    import json
    import random
    import time
    from datetime import datetime
    import logging
    import argparse
    import os
    from playwright.sync_api import sync_playwright
    # Configure logging
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s - %(levelname)s - %(message)s'
    )
    logger = logging.getLogger(__name__)
    # Configuration
    TARGET_WEBSITE = "https://google.com" # Replace with your target website
    IP_DETECTION_API = "https://api.ipify.org?format=json"
    OUTPUT_FILE = "visitors_v2.json"
    # === ANTI-BOT GÜNCELLEMESİ 1: TUTARLI TARAYICI PARMAK İZLERİ ===
    # Sadece Chromium kullanacağımız için sadece Chrome User-Agent'ları tanımladık.
    # Ayrıca modern Client Hints (Sec-CH-UA) başlıklarını User-Agent ile uyumlu hale getirdik.
    BROWSER_PROFILES = [
        {
            "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
            "ch_ua": '"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',
            "ch_platform": '"Windows"',
            "ch_mobile": "?0"
        },
        {
            "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
            "ch_ua": '"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',
            "ch_platform": '"macOS"',
            "ch_mobile": "?0"
        },
        {
            "ua": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
            "ch_ua": '"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',
            "ch_platform": '"Linux"',
            "ch_mobile": "?0"
        }
    ]
    # Common viewport sizes
    VIEWPORTS = [
        {"width": 1920, "height": 1080}, # Full HD
        {"width": 1366, "height": 768},  # Common laptop
        {"width": 1440, "height": 900},  # Macbook Pro
        {"width": 1536, "height": 864},  # Surface Laptop
    ]
    # Language settings
    LANGUAGES = [
        "tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7",
        "en-US,en;q=0.9",
        "en-GB,en;q=0.9",
    ]
    # Timezones
    TIMEZONES = [
        "Europe/Istanbul",
        "America/New_York",
        "Europe/London"
    ]
    def validate_proxy(proxy):
        if not proxy: return False
        if not (proxy.startswith("http://") or proxy.startswith("https://") or proxy.startswith("socks5://")): return False
        if "@" in proxy:
            parts = proxy.split("@")
            if len(parts) != 2: return False
            if ":" not in parts[1]: return False
        else:
            if ":" not in proxy: return False
        return True
    def setup_browser_with_proxy(proxy):
        playwright = None
        browser = None
        context = None
        
        try:
            if not validate_proxy(proxy):
                logger.error(f"Invalid proxy format: {proxy}")
                return None, None, None
                
            playwright = sync_playwright().start()
            
            proxy_config = {}
            if "@" in proxy:
                protocol, rest = proxy.split("://")
                auth, host_port = rest.split("@")
                username, password = auth.split(":")
                
                proxy_config = {
                    "server": f"{protocol}://{host_port}",
                    "username": username,
                    "password": password
                }
            else:
                proxy_config = {"server": proxy}
            
            # === ANTI-BOT GÜNCELLEMESİ 2: CHROME ARGS (BAYRAKLAR) ===
            # Otomasyon yazılımı olduğunu saklayan argümanlar eklendi
            browser = playwright.chromium.launch(
                headless=True,
                proxy=proxy_config,
                args=[
                    '--disable-blink-features=AutomationControlled', # AutomationControlled flag'ini gizler
                    '--disable-infobars',
                    '--no-sandbox',
                    '--disable-setuid-sandbox',
                    '--window-position=0,0',
                    '--ignore-certifcate-errors',
                    '--ignore-certifcate-errors-spki-list',
                ]
            )
            
            # Randomize fingerprint safely
            profile = random.choice(BROWSER_PROFILES)
            viewport = random.choice(VIEWPORTS)
            language = random.choice(LANGUAGES)
            locale = language.split(",")[0]
            timezone_id = random.choice(TIMEZONES)
            
            # === ANTI-BOT GÜNCELLEMESİ 3: DOĞRU HTTP BAŞLIKLARI (HEADERS) ===
            extra_headers = {
                "Accept-Language": language,
                "sec-ch-ua": profile["ch_ua"],
                "sec-ch-ua-mobile": profile["ch_mobile"],
                "sec-ch-ua-platform": profile["ch_platform"],
                "Upgrade-Insecure-Requests": "1"
            }
            
            context = browser.new_context(
                user_agent=profile["ua"],
                viewport=viewport,
                locale=locale,
                timezone_id=timezone_id,
                extra_http_headers=extra_headers
            )
            
            # === ANTI-BOT GÜNCELLEMESİ 4: JAVASCRIPT GİZLENMESİ (STEALTH INIT SCRIPT) ===
            # Sayfa açılır açılmaz navigator altındaki webdriver özelliklerini gizliyoruz ki
            # bot scriptleri "tarayıcı headless mı?" kontrolünü geçemesin.
            context.add_init_script("""
                // 1. Webdriver özelliğini kaldır
                Object.defineProperty(navigator, 'webdriver', {
                    get: () => undefined
                });
                // 2. Chrome objesini taklit et
                window.chrome = {
                    runtime: {}
                };
                // 3. Eklentiler listesini boş olmaktan çıkar
                Object.defineProperty(navigator, 'plugins', {
                    get: () => [1, 2, 3, 4, 5]
                });
                // 4. Dilleri taklit et
                Object.defineProperty(navigator, 'languages', {
                    get: () => ['tr-TR', 'tr', 'en-US', 'en']
                });
            """)
            
            logger.info(f"Browser set up with proxy {proxy.split('@')[-1] if '@' in proxy else proxy}")
            return playwright, browser, context
            
        except Exception as e:
            logger.error(f"Error setting up browser with proxy: {e}")
            if browser: browser.close()
            if playwright: playwright.stop()
            return None, None, None
    def simulate_mouse_movements(page):
        try:
            viewport = page.viewport_size
            movements = random.randint(3, 8)
            for _ in range(movements):
                x = random.randint(0, viewport["width"])
                y = random.randint(0, viewport["height"])
                duration = random.uniform(100, 500)
                page.mouse.move(x, y, steps=int(duration/10))
                time.sleep(random.uniform(0.1, 0.5))
            logger.debug("Simulated mouse movements")
        except Exception as e:
            pass
    def simulate_scroll_behavior(page):
        try:
            page_height = page.evaluate("document.body.scrollHeight")
            viewport_height = page.viewport_size["height"]
            if page_height > viewport_height:
                scrolls = random.randint(1, 4)
                for _ in range(scrolls):
                    current_scroll = page.evaluate("window.pageYOffset")
                    max_scroll = page_height - viewport_height
                    if random.random() < 0.7:
                        scroll_distance = random.randint(100, min(500, max_scroll - current_scroll + 1))
                    else:
                        scroll_distance = -random.randint(100, min(500, current_scroll + 1))
                    page.evaluate(f"window.scrollBy(0, {scroll_distance})")
                    time.sleep(random.uniform(1, 3))
        except Exception as e:
            pass
    def simulate_click_behavior(page):
        try:
            if random.random() < 0.3: # Click ihtimali biraz azaltıldı
                links = page.query_selector_all("a[href]")
                if links:
                    internal_links = []
                    for link in links:
                        href = link.get_attribute("href")
                        if href and (not href.startswith("http") or (TARGET_WEBSITE in href)):
                            internal_links.append(link)
                    if internal_links:
                        random_link = random.choice(internal_links)
                        random_link.scroll_into_view_if_needed()
                        time.sleep(random.uniform(0.5, 1.5))
                        random_link.click()
                        time.sleep(random.uniform(2, 5))
                        page.go_back()
                        time.sleep(random.uniform(1, 3))
        except Exception as e:
            pass
    def simulate_user_behavior(page):
        try:
            time.sleep(random.uniform(3, 6))
            simulate_mouse_movements(page)
            simulate_scroll_behavior(page)
            simulate_click_behavior(page)
            time.sleep(random.uniform(1, 3))
            logger.info("Simulated user behavior")
        except Exception as e:
            pass
    def get_public_ip(page):
        try:
            response = page.goto(IP_DETECTION_API)
            content = response.text()
            ip_data = json.loads(content)
            return ip_data.get("ip")
        except Exception as e:
            return None
    def extract_cookies(context):
        try:
            return context.cookies()
        except Exception as e:
            return []
    def generate_visitor(proxy):
        playwright = None
        browser = None
        visitor_data = {}
        
        try:
            playwright, browser, context = setup_browser_with_proxy(proxy)
            if not browser or not context: return {}
            
            page = context.new_page()
            
            ip = get_public_ip(page)
            response = page.goto(TARGET_WEBSITE, wait_until="domcontentloaded")
            
            if not response or response.status >= 400:
                logger.error(f"Failed to load target, status: {response.status if response else 'None'}")
                return {}
                
            simulate_user_behavior(page)
            cookies = extract_cookies(context)
            user_agent = page.evaluate("navigator.userAgent")
            
            visitor_data = {
                "proxy": proxy.split("@")[-1] if "@" in proxy else proxy,
                "ip": ip,
                "user_agent": user_agent,
                "visit_time": datetime.now().isoformat(),
                "cookies": cookies
            }
            
            logger.info(f"Generated visitor with IP {ip}")
            
        except Exception as e:
            logger.error(f"Error generating visitor: {e}")
        finally:
            if browser: browser.close()
            if playwright: playwright.stop()
                
        return visitor_data
    def generate_visitors(count, proxies):
        valid_proxies = [p for p in proxies if validate_proxy(p)]
        if not valid_proxies:
            logger.error("No valid proxies provided")
            return []
            
        visitors = []
        for i in range(count):
            proxy = valid_proxies[i % len(valid_proxies)]
            logger.info(f"Generating visitor {i+1}/{count} with proxy {proxy.split('@')[-1] if '@' in proxy else proxy}")
            
            visitor = generate_visitor(proxy)
            if visitor:
                visitors.append(visitor)
                
            time.sleep(random.uniform(1, 3))
            
        return visitors
    def save_visitors(visitors, filename=OUTPUT_FILE):
        try:
            with open(filename, "w") as f:
                json.dump(visitors, f, indent=2)
            logger.info(f"Saved {len(visitors)} visitors to {filename}")
        except Exception as e:
            pass
    def load_proxies_from_file(filename):
        proxies = []
        try:
            with open(filename, "r") as f:
                for line in f:
                    line = line.strip()
                    if line and not line.startswith("#"):
                        proxies.append(line)
        except Exception as e:
            pass
        return proxies
    def main():
        global TARGET_WEBSITE, OUTPUT_FILE
        parser = argparse.ArgumentParser(description="Generate realistic website visitors (Anti-Bot Enhanced)")
        parser.add_argument("--count", type=int, default=10)
        parser.add_argument("--proxies", nargs="+")
        parser.add_argument("--proxy-file", type=str)
        parser.add_argument("--output", type=str, default=OUTPUT_FILE)
        parser.add_argument("--website", type=str, default=TARGET_WEBSITE)
        
        args = parser.parse_args()
        
        TARGET_WEBSITE = args.website
        OUTPUT_FILE = args.output
        proxies = []
        
        if args.proxies: proxies.extend(args.proxies)
        if args.proxy_file and os.path.exists(args.proxy_file):
            proxies.extend(load_proxies_from_file(args.proxy_file))
                
        if not proxies:
            proxies = [
                "http://kullanıcıadı:şifre@ip:port",
            ]
            
        visitors = generate_visitors(args.count, proxies)
        save_visitors(visitors, args.output)
    if __name__ == "__main__":
        main()
  • 15-03-2026, 12:09:28
    #2
    Hocam botun mantığı ; Gerçek kullanıcı gibi davranan otomatik web ziyaretçileri üretir. Ama cookies falan kullanmıyor gizli tarayıcı gibi işlem yapıyor.Chromium tarayıcı kullanıyor
  • 15-03-2026, 12:11:32
    #3
    Merhabalar hocam, hayırlı pazarlarınız olsun.

    Güzel bir çalışma, debug edilir ve ihtiyaç fazlası kodlar temizlenir ise temel seviye yakalama yazılımları üzerinde hatasız çalışacaktır, kutlarım, güzel bir proje.