Python web Traffic Yazılımı Ücretsiz
18
●2.248
- 05-05-2025, 14:47:54nasıl kurulumunu yaparım destek olur musunuz anydesk üzrinden veya vds kurup içeriğinde kurulumunu yapma şansınız var mı +49 15218693015 wpden ulaşırsanız sevinirimPythonCoder26 adlı üyeden alıntı: mesajı görüntüleMerhabalar 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, 19:18:34hastasıyım şöyle her koda yorum satırı ekleyip anlaşılır bir hale getirilmesine. emeğinize sağlık, teşekkür ederiz.
- 06-05-2025, 11:17:28Üyeliği durdurulduİsteyen olursa elbette bir üst süümünü kurabilirim görsel arayüzü de var direk traffic de sağlayabilirsiniz isterseniz google üzerinden anahtar kelimeyle de arama yapabilirsiniz çok çüz i miktarlara açık kaynak olarak kurabilirim
- 06-05-2025, 22:31:58bana özelden ulaşır mısın yada wp den +49 15218693015PythonCoder26 adlı üyeden alıntı: mesajı görüntüleİsteyen olursa elbette bir üst süümünü kurabilirim görsel arayüzü de var direk traffic de sağlayabilirsiniz isterseniz google üzerinden anahtar kelimeyle de arama yapabilirsiniz çok çüz i miktarlara açık kaynak olarak kurabilirim
Beğeniler
Değerlendirmeler
