• 05-05-2025, 05:05:53
    #1
    Üyeliği durduruldu
    Merhabalar arkadaşlar , Daha önce kullandığım pyhon ile yazılmış Google Analytics e tamı tamına yansıyan kodlarımı veriyorum, artık kullanmıyorum requestte gectiğim için.


    import asyncio
    from playwright.async_api import async_playwright
    import random
    import time
    import logging
    import argparse
    import os
    import sys
    import subprocess
    import json
    from datetime import datetime
    from urllib.parse import urlparse
    import ssl
    
    
    ssl._create_default_https_context = ssl._create_unverified_context
    
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s - %(levelname)s - %(message)s',
        handlers=[
            logging.FileHandler(f"analytics_traffic_{datetime.now().strftime('%Y%m%d_%H%M%S')}.log", encoding='utf-8'),
            logging.StreamHandler()
        ]
    )
    logger = logging.getLogger()
    
    class ProxyManager:
        def __init__(self, proxy_file):
            """
            
            Args:
                proxy_file (str): Proxy dosyasının yolu
            """
            self.proxy_file = proxy_file
            self.proxies = []
            self.working_proxies = []  
            self.load_proxies()
            
            if not self.proxies:
                logger.error(f"Proxy bulunamadi! Lutfen {proxy_file} dosyasini kontrol edin.")
                raise FileNotFoundError(f"Proxy dosyası bulunamadı veya boş: {proxy_file}")
        
        def load_proxies(self):
            """Dosyadan proxy'leri yükler"""
            try:
                with open(self.proxy_file, 'r') as file:
                    for line in file:
                        line = line.strip()
                        if line:
                            try:
                              
                                parts = line.split(':')
                                if len(parts) >= 4:
                                    host = parts[0]
                                    port = parts[1]
                                    username = parts[2]
                                    password = ':'.join(parts[3:])  
                                    
                                    
                                    self.proxies.append({
                                        "server": f"http://{host}:{port}",
                                        "username": username,
                                        "password": password,
                                        "original": line
                                    })
                                else:
                                    logger.warning(f"Gecersiz proxy formati: {line}")
                            except Exception as e:
                                logger.error(f"Proxy ayristirma hatasi: {e} - Satir: {line}")
                
                logger.info(f"Toplam {len(self.proxies)} proxy okundu.")
                
                
                self.working_proxies = self.proxies
                
            except Exception as e:
                logger.error(f"Dosya okuma hatasi: {e}")
        
        async def test_proxies(self, max_test=10):
            """
            
            """
            logger.info("Proxy testi atlanıyor, tüm proxy'lerin çalıştığı varsayılıyor...")
            # Tüm proxy'lerin çalıştığını varsay
            self.working_proxies = self.proxies
        
        def get_random_proxy(self):
            """Rastgele bir proxy döndürür"""
            if not self.proxies:
                return None
            return random.choice(self.proxies)
        
        def get_proxies_for_sessions(self, num_sessions):
          
            if len(self.proxies) < num_sessions:
                # Proxy sayısı yetersizse, tekrar kullan
                return [self.proxies[i % len(self.proxies)] for i in range(num_sessions)]
            else:
                # Rastgele num_sessions kadar proxy seç
                return random.sample(self.proxies, num_sessions)
        
        def mask_proxy_url(self, proxy_info):
          
            if not proxy_info:
                return "Proxy yok"
            
            try:
                server = proxy_info["server"]
                username = proxy_info["username"]
                
                
                masked_username = username[:3] + '*' * (len(username) - 3) if len(username) > 3 else username
                
                
                parsed = urlparse(server)
                host_port = f"{parsed.netloc}"
                
                return f"{parsed.scheme}://{masked_username}:******@{host_port}"
            except:
                return str(proxy_info)
    
    class UserAgentManager:
        def __init__(self):
            """User-Agent yönetim sınıfı""
            self.user_agents = [
                'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
                'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0',
                'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15',
                'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36',
                'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36',
                'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36',
                'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0',
                'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:90.0) Gecko/20100101 Firefox/90.0',
                'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.55'
            ]
            
            
            try:
                from fake_useragent import UserAgent
                self.ua = UserAgent()
                logger.info("Fake UserAgent basariyla baslatildi.")
                self.has_fake_ua = True
            except Exception as e:
                logger.warning(f"Fake UserAgent baslatma hatasi: {e}")
                logger.warning("Onceden tanimlanmis user agent'lar kullanilacak.")
                self.has_fake_ua = False
        
        def get_random_user_agent(self):
            """Rastgele bir User-Agent döndürür"""
            if hasattr(self, 'has_fake_ua') and self.has_fake_ua:
                try:
                    return self.ua.random
                except:
                    pass
            return random.choice(self.user_agents)
    
    class PlaywrightManager:
        def __init__(self, target_urls, proxy_file, num_sessions=2000, visit_duration=60, page_interaction=True, browser_type="all"):
            """
            
            
            Args:
                target_urls (list): Ziyaret edilecek URL'ler listesi
                proxy_file (str): Proxy dosyasının yolu
                num_sessions (int): Oturum sayısı
                visit_duration (int): Her sayfada kalma süresi (saniye)
                page_interaction (bool): Sayfa ile etkileşim kurulsun mu?
                browser_type (str): Kullanılacak tarayıcı tipi ("all", "chromium", "firefox", "webkit")
            """
            self.target_urls = target_urls if isinstance(target_urls, list) else [target_urls]
            self.proxy_manager = ProxyManager(proxy_file)
            self.ua_manager = UserAgentManager()
            self.num_sessions = num_sessions
            self.visit_duration = visit_duration
            self.page_interaction = page_interaction
            self.browser_type = browser_type
            self.session_stats = {i: {"success": 0, "failed": 0} for i in range(num_sessions)}
            self.total_visits = 0
            self.start_time = None
            self.browsers = []
            self.tasks = []
        
        async def check_playwright_browsers(self):
          
            try:
                # Tarayıcıların kurulu olup olmadığını kontrol et
                result = subprocess.run(
                    ["playwright", "install", "--dry-run"],
                    capture_output=True,
                    text=True
                )
                
              
                if "Browsers are already installed" not in result.stdout:
                    logger.warning("Playwright tarayıcıları kurulu değil!")
                    logger.info("Tarayıcılar indiriliyor... Bu işlem birkaç dakika sürebilir.")
                    
                    install_process = subprocess.run(
                        ["playwright", "install"],
                        capture_output=True,
                        text=True
                    )
                    
                    if install_process.returncode == 0:
                        logger.info("Tarayıcılar başarıyla kuruldu!")
                    else:
                        logger.error("Tarayıcı kurulumu başarısız oldu!")
                        logger.error(install_process.stderr)
                        logger.info("Lütfen manuel olarak 'playwright install' komutunu çalıştırın.")
                        sys.exit(1)
                else:
                    logger.info("Playwright tarayıcıları zaten kurulu.")
            
            except Exception as e:
                logger.error(f"Tarayıcı kontrolü sırasında hata: {e}")
                logger.info("Lütfen manuel olarak 'playwright install' komutunu çalıştırın.")
                sys.exit(1)
        
        async def setup_browser(self, playwright, proxy_info, user_agent, session_id):
            """
            
            
            Args:
                playwright: Playwright nesnesi
                proxy_info (dict): Proxy bilgileri
                user_agent (str): User-Agent
                session_id (int): Oturum ID'si
            
            Returns:
                tuple: (browser, context) tarayıcı ve bağlam nesneleri
            """
            try:
                # Tarayıcı tipini seç
                if self.browser_type == "all":
                    browser_types = ["chromium", "firefox", "webkit"]
                    browser_weights = [0.7, 0.2, 0.1]  # Chromium daha yaygın
                    browser_type = random.choices(browser_types, weights=browser_weights, k=1)[0]
                else:
                    browser_type = self.browser_type
                
                l
                if browser_type == "chromium":
                    browser_obj = playwright.chromium
                elif browser_type == "firefox":
                    browser_obj = playwright.firefox
                else:
                    browser_obj = playwright.webkit
                
                
                browser = await browser_obj.launch(
                    headless=True,  # Görünmez modda çalıştır
                    slow_mo=50,     # İşlemleri yavaşlat (ms)
                    args=[
                        '--disable-extensions',
                        '--disable-gpu',
                        '--disable-dev-shm-usage',
                        '--no-sandbox',
                        '--disable-web-security'
                    ]
                )
                
                
                context = await browser.new_context(
                    proxy={
                        "server": proxy_info["server"],
                        "username": proxy_info["username"],
                        "password": proxy_info["password"]
                    },
                    user_agent=user_agent,
                    viewport={"width": 1366, "height": 768},
                    locale="tr-TR",  # Türkçe dil ayarı
                    timezone_id="Europe/Istanbul",  # Türkiye zaman dilimi
                    geolocation={"latitude": 31.995408, "longitude": 36.544443},  # İstanbul konumu
                    permissions=["geolocation", "notifications"]  # İzinler
                )
                
                
                await context.add_init_script("""
                    Object.defineProperty(navigator, 'webdriver', {
                        get: () => false,
                    });
                """)
                
                logger.info(f"Oturum #{session_id+1} - {browser_type.capitalize()} tarayıcı başlatıldı")
                return browser, context
            
            except Exception as e:
                logger.error(f"Oturum #{session_id+1} - Tarayıcı başlatma hatası: {e}")
                return None, None
        
        async def interact_with_page(self, page):
            """
            Sayfa ile etkileşim kurar (scroll, tıklama vb.)
            
            Args:
                page: Playwright page nesnesi
            """
            try:
              
                for _ in range(random.randint(2, 5)):
                    await page.evaluate("window.scrollBy(0, window.innerHeight / 2)")
                    await asyncio.sleep(random.uniform(1, 2))
                
                
                await page.evaluate("window.scrollTo(0, 0)")
                await asyncio.sleep(random.uniform(0.5, 1))
                
              
                try:
                    links = await page.query_selector_all('a[href^="/"], a[href^="http"]')
                    if links and random.random() < 0.3:  # %30 ihtimalle bir linke tıkla
                        random_link = random.choice(links)
                        try:
                          
                            async with page.expect_navigation(timeout=10000, wait_until="domcontentloaded"):
                                await random_link.click()
                            
                          
                            await asyncio.sleep(random.uniform(3, 5))
                            
                          
                            await page.go_back()
                            await asyncio.sleep(random.uniform(1, 2))
                        except Exception as e:
                            logger.debug(f"Link tıklama hatası: {e}")
                except Exception as e:
                    logger.debug(f"Link seçme hatası: {e}")
            
            except Exception as e:
                logger.debug(f"Sayfa etkileşim hatası: {e}")
        
        async def custom_page_load_strategy(self, page, url):
            """
            
            
            Args:
                page: Playwright page nesnesi
                url (str): Ziyaret edilecek URL
                
            Returns:
                bool: Başarılı ise True, değilse False
            """
            try:
                # Temel navigasyon - minimum bekleme ile
                await page.goto(url, wait_until="commit", timeout=20000)
                
                
                for _ in range(30):  # Maksimum 30 saniye bekle
                    # Sayfa hazır mı kontrol et
                    is_ready = await page.evaluate("""() => {
                        return document.readyState === 'complete' || document.readyState === 'interactive';
                    }""")
                    
                    if is_ready:
                        
                        has_content = await page.evaluate("""() => {
                            return !!document.querySelector('body') &&
                                   document.body.innerHTML.length > 500;
                        }""")
                        
                        if has_content:
                            return True
                    
                    # 1 saniye bekle ve tekrar dene
                    await asyncio.sleep(1)
                
                return False
            except Exception as e:
                logger.error(f"Özel yükleme stratejisi hatası: {e}")
                return False
        
        async def visit_url(self, context, url, session_id):
            """
            Belirtilen URL'yi ziyaret eder - İyileştirilmiş sürüm
            
            Args:
                context: Playwright context nesnesi
                url (str): Ziyaret edilecek URL
                session_id (int): Oturum ID'si
            
            Returns:
                bool: Başarılı ise True, değilse False
            """
            try:
                # Yeni sayfa oluştur
                page = await context.new_page()
                
                
                start_time = time.time()
                
                i
                try:
                    
                    response = await page.goto(
                        url,
                        wait_until="domcontentloaded",
                        timeout=40000
                    )
                except Exception as e:
                    logger.warning(f"Oturum #{session_id+1} - domcontentloaded ile yükleme başarısız: {e}")
                    # Başarısız olursa, commit ile dene
                    try:
                        response = await page.goto(
                            url,
                            wait_until="commit",
                            timeout=20000
                        )
                    except Exception as e2:
                        logger.error(f"Oturum #{session_id+1} - Sayfa yükleme tamamen başarısız: {e2}")
                        self.session_stats[session_id]["failed"] += 1
                        await page.close()
                        return False
                
                # Yükleme süresini hesapla
                load_time = time.time() - start_time
                
                if not response:
                    logger.warning(f"Oturum #{session_id+1} - Yanıt alınamadı: {url}")
                    self.session_stats[session_id]["failed"] += 1
                    await page.close()
                    return False
                
                status = response.status
                
                if 200 <= status < 400:
                    # Sayfa başlığını al
                    title = await page.title()
                    
                    logger.info(f"Oturum #{session_id+1} - Başarılı ziyaret - {url} - Durum: {status} - Yükleme: {load_time:.2f}s - Başlık: {title}")
                    
                    # Sayfanın yüklenmesi için ek bekleme
                    try:
                        # Sayfa içeriğinin görünür olmasını bekle
                        await page.wait_for_selector('body', timeout=10000)
                        
                        # Sayfanın stabil olması için biraz bekle
                        await asyncio.sleep(3)
                    except Exception as e:
                        logger.warning(f"Oturum #{session_id+1} - Sayfa içeriği bekleme hatası: {e}")
                    
                    
                    await asyncio.sleep(3)
                    
                  
                    if self.page_interaction:
                        await self.interact_with_page(page)
                    
                    
                    await asyncio.sleep(self.visit_duration)
                    
                  
                    try:
                        has_analytics = await page.evaluate("""() => {
                            return !!(
                                window.ga ||
                                window.gtag ||
                                window.dataLayer ||
                                window.google_tag_manager ||
                                document.querySelector('script[src*="google-analytics.com"]') ||
                                document.querySelector('script[src*="googletagmanager.com"]')
                            );
                        }""", timeout=5000)
                        
                        if has_analytics:
                            logger.info(f"Oturum #{session_id+1} - Google Analytics tespit edildi: {url}")
                    except Exception as e:
                        logger.debug(f"Oturum #{session_id+1} - Analytics kontrolü hatası: {e}")
                    
                    self.session_stats[session_id]["success"] += 1
                    await page.close()
                    return True
                else:
                    logger.warning(f"Oturum #{session_id+1} - Başarısız ziyaret - {url} - Durum: {status}")
                    self.session_stats[session_id]["failed"] += 1
                    await page.close()
                    return False
            
            except Exception as e:
                logger.error(f"Oturum #{session_id+1} - Ziyaret hatası - {url}: {e}")
                self.session_stats[session_id]["failed"] += 1
                return False
        
        async def run_session(self, playwright, session_id):
            """
            Bir oturumu çalıştırır
            
            Args:
                playwright: Playwright nesnesi
                session_id (int): Oturum ID'si
            """
            # Proxy ve User-Agent seç
            proxy_info = self.proxy_manager.get_random_proxy()
            user_agent = self.ua_manager.get_random_user_agent()
            
            if not proxy_info:
                logger.error(f"Oturum #{session_id+1} - Proxy bulunamadı!")
                return
            
          
            masked_proxy = self.proxy_manager.mask_proxy_url(proxy_info)
            logger.info(f"Oturum #{session_id+1} - Proxy: {masked_proxy}")
            
          
            browser, context = await self.setup_browser(playwright, proxy_info, user_agent, session_id)
            
            if not browser or not context:
                return
            
            self.browsers.append((browser, context))
            
            try:
                
                for url in self.target_urls:
                    success = await self.visit_url(context, url, session_id)
                    self.total_visits += 1
                    
                  
                    if success and len(self.target_urls) > 1:
                        await asyncio.sleep(random.uniform(3, 8))
            
            except Exception as e:
                logger.error(f"Oturum #{session_id+1} - Çalışma hatası: {e}")
            
            finally:
                
                try:
                    await context.close()
                    await browser.close()
                    logger.info(f"Oturum #{session_id+1} - Tarayıcı kapatıldı")
                except:
                    pass
        
        async def run_all_sessions(self):
            """Tüm oturumları çalıştırır"""
            self.start_time = time.time()
            
            # Tarayıcıların kurulu olup olmadığını kontrol et
            await self.check_playwright_browsers()
            
            # Proxy test etme adımını atla - tüm proxy'lerin çalıştığını varsay
            logger.info("Proxy testi atlanıyor, tüm proxy'lerin çalıştığı varsayılıyor...")
            
            async with async_playwright() as playwright:
                # Tüm oturumları başlat
                self.tasks = []
                for i in range(self.num_sessions):
                    # Oturumlar arasında kısa bir gecikme ekle (aynı anda çok fazla tarayıcı başlatmamak için)
                    await asyncio.sleep(random.uniform(1, 3))
                    task = asyncio.create_task(self.run_session(playwright, i))
                    self.tasks.append(task)
                
                # Tüm görevlerin tamamlanmasını bekle
                await asyncio.gather(*self.tasks, return_exceptions=True)
            
            # İstatistikleri göster
            self.show_stats()
        
        def show_stats(self):
            """İstatistikleri gösterir"""
            end_time = time.time()
            elapsed_time = end_time - self.start_time
            
            logger.info("\n--- İstatistikler ---")
            logger.info(f"Toplam çalışma süresi: {elapsed_time:.2f} saniye")
            logger.info(f"Toplam ziyaret sayısı: {self.total_visits}")
            
            total_success = sum(stats["success"] for stats in self.session_stats.values())
            total_failed = sum(stats["failed"] for stats in self.session_stats.values())
            
            if self.total_visits > 0:
                success_rate = total_success / self.total_visits * 100
                logger.info(f"Başarılı ziyaretler: {total_success} ({success_rate:.2f}%)")
                logger.info(f"Başarısız ziyaretler: {total_failed} ({100 - success_rate:.2f}%)")
            
            # Oturum bazında istatistikleri göster
            logger.info("\nOturum bazında istatistikler:")
            for session_id, stats in self.session_stats.items():
                total = stats["success"] + stats["failed"]
                success_rate = stats["success"] / total * 100 if total > 0 else 0
                logger.info(f"Oturum #{session_id+1} - Başarılı: {stats['success']}, Başarısız: {stats['failed']}, Başarı oranı: {success_rate:.2f}%")
        
        async def save_results_to_csv(self, filename="analytics_results.csv"):
            """Sonuçları CSV dosyasına kaydeder"""
            import csv
            
            try:
                with open(filename, 'w', newline='', encoding='utf-8') as csvfile:
                    fieldnames = ['session_id', 'success', 'failed', 'success_rate']
                    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
                    
                    writer.writeheader()
                    for session_id, stats in self.session_stats.items():
                        total = stats["success"] + stats["failed"]
                        success_rate = stats["success"] / total * 100 if total > 0 else 0
                        
                        writer.writerow({
                            'session_id': session_id + 1,
                            'success': stats["success"],
                            'failed': stats["failed"],
                            'success_rate': f"{success_rate:.2f}%"
                        })
                    
                    logger.info(f"Sonuçlar {filename} dosyasına kaydedildi.")
            except Exception as e:
                logger.error(f"CSV kaydetme hatası: {e}")
    
    async def main():
        # Argüman ayrıştırıcı
        parser = argparse.ArgumentParser(description='Playwright ile web sitesi ziyareti ve Google Analytics\'e veri gönderme')
        parser.add_argument('--urls', type=str, help='Ziyaret edilecek URL\'ler (virgülle ayrılmış)')
        parser.add_argument('--proxy-file', type=str, default='proxy.txt', help='Proxy dosyası (varsayılan: proxy.txt)')
        parser.add_argument('--sessions', type=int, default=20000, help='Oturum sayısı (varsayılan: 5)')
        parser.add_argument('--duration', type=int, default=30, help='Her sayfada kalma süresi saniye (varsayılan: 30)')
        parser.add_argument('--no-interaction', action='store_true', help='Sayfa ile etkileşim kurma')
        parser.add_argument('--browser', type=str, default='chromium', choices=['all', 'chromium', 'firefox', 'webkit'],
                            help='Kullanılacak tarayıcı (varsayılan: chromium)')
        parser.add_argument('--csv', type=str, help='Sonuçları CSV dosyasına kaydet')
        
        args = parser.parse_args()
        
        # URL'leri al
        if args.urls:
            target_urls = [url.strip() for url in args.urls.split(',')]
        else:
            target_urls = input("Ziyaret edilecek URL'leri girin (virgülle ayırarak): ").split(',')
            target_urls = [url.strip() for url in target_urls]
        
        # URL formatını kontrol et
        for i, url in enumerate(target_urls):
            if not url.startswith(('http://', 'https://')):
                target_urls[i] = 'https://' + url
        
        # Proxy dosyasını kontrol et
        proxy_file = args.proxy_file
        if not os.path.exists(proxy_file):
            logger.error(f"{proxy_file} dosyası bulunamadı!")
            # Örnek proxy.txt oluştur
            logger.info("Örnek proxy.txt dosyası oluşturuluyor...")
            with open(proxy_file, 'w') as f:
                f.write("rotating2.we1.town:1000005:5112e6eee4b8e8d28ac3b8__cr.tr:e4f98ea6ff6763a0c\n")
            logger.info(f"{proxy_file} dosyası oluşturuldu.")
        
        # Ayarlar
        num_sessions = args.sessions
        visit_duration = args.duration
        page_interaction = not args.no_interaction
        browser_type = args.browser
        
        # Uyarı mesajı
        logger.warning("\n" + "!" * 80)
        logger.warning("UYARI: Bu script web sitelerine gerçek tarayıcı trafiği gönderecektir!")
        logger.warning(f"- Hedef URL'ler: {', '.join(target_urls)}")
        logger.warning(f"- {num_sessions} oturum aynı anda çalışacak")
        logger.warning(f"- Her sayfa ziyareti yaklaşık {visit_duration} saniye sürecek")
        logger.warning(f"- Sayfa etkileşimi: {'Açık' if page_interaction else 'Kapalı'}")
        logger.warning(f"- Tarayıcı tipi: {browser_type}")
        logger.warning("Bu, hedef sitelere yük bindirebilir ve IP adresinizin engellenmesine neden olabilir.")
        logger.warning("Sadece izin verilen sitelerde ve test amaçlı kullanın!")
        logger.warning("!" * 80 + "\n")
        
        # Kullanıcı onayı
        try:
            input("Devam etmek için Enter tuşuna basın (İptal etmek için Ctrl+C)...")
        except KeyboardInterrupt:
            logger.info("İşlem iptal edildi.")
            return
        
        # Playwright ile web sitesi ziyareti
        manager = PlaywrightManager(
            target_urls=target_urls,
            proxy_file=proxy_file,
            num_sessions=num_sessions,
            visit_duration=visit_duration,
            page_interaction=page_interaction,
            browser_type=browser_type
        )
        
        # Tüm oturumları çalıştır
        await manager.run_all_sessions()
        
        # Sonuçları CSV'ye kaydet
        if args.csv:
            await manager.save_results_to_csv(args.csv)
    
    if __name__ == "__main__":
        # Ana fonksiyonu çalıştır
        try:
            asyncio.run(main())
        except KeyboardInterrupt:
            logger.info("Program kullanıcı tarafından durduruldu.")
        except Exception as e:
            logger.error(f"Beklenmeyen hata: {e}")
  • 05-05-2025, 05:30:43
    #2
    Teşekkürler, bu arada 125. satırda yorum açık kalmış
  • 05-05-2025, 05:32:57
    #3
    Üyeliği durduruldu
    Swaid adlı üyeden alıntı: mesajı görüntüle
    Teşekkürler, bu arada 125. satırda yorum açık kalmış
    evet hocam gözden kaçmış
  • 05-05-2025, 05:36:25
    #4
    Bu kodu nasıl çalıştırabiliriz tam olarak amacı nedir bir trafik botu arayışım var hocam
  • 05-05-2025, 05:39:23
    #5
    Üyeliği durduruldu
    Powertools adlı üyeden alıntı: mesajı görüntüle
    Bu kodu nasıl çalıştırabiliriz tam olarak amacı nedir bir trafik botu arayışım var hocam
    Merhaba Hocam;
    Residential proxy ile çalışmakta , kodu .py dosyası olarak yükleyin gerekli kütüphaneleride yükleyin sonrasında proxylerinizi proxy.txt dosyasına kaydedip , py dosyasını çalıştırın
  • 05-05-2025, 05:41:04
    #6
    PythonCoder26 adlı üyeden alıntı: mesajı görüntüle
    Merhaba Hocam;
    Residential proxy ile çalışmakta , kodu .py dosyası olarak yükleyin gerekli kütüphaneleride yükleyin sonrasında proxylerinizi proxy.txt dosyasına kaydedip , py dosyasını çalıştırın
    Teşekkürler Cookie ile gönderim yapılmıyor sanırım
  • 05-05-2025, 05:43:07
    #7
    Üyeliği durduruldu
    Evet hocam cookie ve fingerprint yok ama ben çok yararını gördüm
  • 05-05-2025, 10:48:22
    #8
    @PythonCoder26;
    Hocam eline sağlık ama bende bir sıkıntı var.
    proxy.txt dosyasını otomatik oluşturdu ve içine bunu oluşturdu. daha sonra hata verdi.
    rotating2.we1.town:1000005:5112e6eee4b8e8d28ac3b8_ _cr.tr:e4f98ea6ff6763a0c
    Hata bu:
    2025-05-05 10:45:53,477 - WARNING - Gecersiz proxy formati: Residential proxy
    2025-05-05 10:45:53,500 - INFO - Toplam 1 proxy okundu.
    2025-05-05 10:45:53,612 - INFO - Fake UserAgent basariyla baslatildi.
    2025-05-05 10:45:53,660 - ERROR - Tarayıcı kontrolü sırasında hata: [Errno 2] No such file or directory: 'playwright'
    2025-05-05 10:45:53,681 - INFO - Lütfen manuel olarak 'playwright install' komutunu çalıştırın.
    Daha sonra ben de "pip install playwright"" dedim ve gerekli kütüphaneyi kurdum. Ama yine kurmama rağmen aynı hatayı almaktayım. Cihaz macbook ondan olabilir mi?
  • 05-05-2025, 10:50:36
    #9
    Üyeliği durduruldu
    bu şekilde deneyin install playwright
    ve oradaki gecersiz proxy gecerli bir proxy list ile denemelisin