• 04-04-2025, 18:28:53
    #1
    Üyeliği durduruldu
    Arkadaşlar merhaba 0.5sn de apiye istek atsın diyorum ama ekranda başarılı istek sayısı 2 sn de bir artıyor , istek gönderme sayısını nasıl artırabilirim , ve birde aynı anda 2 rezervasyon geliyor 2. sini bazen alamıyor napmam gerekli
    import time
    import json
    import certifi
    import cloudscraper
    import random
    import sys
    import requests
    import threading
    from fake_useragent import UserAgent
    
    
    
    # API URL'leri
    BOOKING_URL = "Api1"
    ACCEPT_URL = "Api2"
    
    # API'ye gönderilecek login bilgileri
    LOGIN_HASH = "Hash1"
    ACCEPT_LOGIN_HASH = "Hash2"
    
    # Araç ID
    VEHICLE_ID = "36979"
    
    # Telegram Bot API Bilgileri
    TELEGRAM_BOT_TOKEN = "Token"
    TELEGRAM_CHAT_ID = "id
    
    # Proxy listesi
    proxy_list = [
        {"Proxy"},
        {"Proxy "},
        {"Proxy "},
        {"Proxy "},
      
        
    ]
    
    # CloudScraper başlat
    scraper = cloudscraper.create_scraper(
        browser={"browser": "chrome", "platform": "windows", "mobile": False}
    )
    
    previous_hashes = set()
    
    # Yeniden deneme ayarları
    MAX_RETRIES = 5
    RETRY_DELAY = 3
    
    # Başarılı istek sayacı
    success_count = 0
    lock = threading.Lock()  # Thread güvenliği için kilitleme mekanizması
    
    def get_random_headers():
        """Her istek için rastgele User-Agent döndürür"""
        ua = UserAgent()
        return {
            "Content-Type": "application/json",
            "User-Agent": ua.random
        }
    
    def send_telegram_message(message):
        """Telegram'a mesaj gönderen fonksiyon"""
        url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
        payload = {"chat_id": TELEGRAM_CHAT_ID, "text": message}
        try:
            response = requests.post(url, json=payload)
            if response.status_code == 200:
                print("\n📩 Telegram bildirimi gönderildi!")
            else:
                print(f"\n❌ Telegram hata kodu: {response.status_code} - {response.text}")
        except Exception as e:
            print(f"\n⚠️ Telegram bağlantı hatası: {e}")
    
    def accept_booking(booking_hash):
        """Rezervasyonu kabul eden fonksiyon (Thread ile çalışır)"""
        global previous_hashes
    
        if booking_hash in previous_hashes:
            return  # Aynı rezervasyonu iki kez işlememek için
    
        print(f"\n🚀 Yeni Rezervasyon İşleniyor! Booking Hash: {booking_hash}")
        accept_payload = {
            "login_hash": ACCEPT_LOGIN_HASH,
            "booking_hash": booking_hash,
            "vehicle_id": VEHICLE_ID,
            "refuse": "accept"
        }
    
        proxies = random.choice(proxy_list)  # Her istek için farklı proxy
        headers = get_random_headers()  # Her istek için farklı User-Agent
    
        for attempt in range(MAX_RETRIES):
            try:
                accept_response = scraper.post(ACCEPT_URL, headers=headers, json=accept_payload, verify=certifi.where(), proxies=proxies)
                if accept_response.status_code == 200:
                    with lock:
                        previous_hashes.add(booking_hash)  # Önceki rezervasyonlara ekle
                    print(f"\n✅ Rezervasyon kabul edildi! {booking_hash}")
    
                    # Telegram bildirimi gönder
                    send_telegram_message(f"✅ Rezervasyon Kabul Edildi! ✅\n\n{booking_hash})")
                    break
                else:
                    print(f"\n❌ Rezervasyon kabul hatası: {accept_response.status_code} - {accept_response.text}")
                    time.sleep(RETRY_DELAY * (2 ** attempt))  # Exponential backoff
            except Exception as e:
                print(f"\n⚠️ Bağlantı hatası (Rezervasyon kabulü): {e}, tekrar deneniyor...")
                time.sleep(RETRY_DELAY * (2 ** attempt))  # Exponential backoff
    
    def check_new_bookings(response):
        """Yeni rezervasyonları kontrol edip, işleme alan fonksiyon"""
        try:
            current_data = response.json().get("data", {}).get("bookings", [])
        except json.JSONDecodeError as e:
            print(f"\n❌ JSON dönüşüm hatası: {e}. Yanıt içeriği: {response.text}")
            return
    
        for booking in current_data:
            booking_hash = booking["booking_hash_link"]
    
            if booking_hash not in previous_hashes:
                thread = threading.Thread(target=accept_booking, args=(booking_hash,))
                thread.start()  # Yeni rezervasyonlar için ayrı bir thread başlat
    
    def send_booking_request():
        """Rezervasyonları takip eden ana fonksiyon"""
        global success_count  # Global sayaç
    
        while True:
            time.sleep(0.5)
            proxies = random.choice(proxy_list)  # Her istek için farklı proxy
            headers = get_random_headers()  # Her istek için farklı User-Agent
    
            for attempt in range(MAX_RETRIES):
                try:
                    payload = {"login_hash": LOGIN_HASH}
                    response = scraper.post(BOOKING_URL, headers=headers, json=payload, verify=certifi.where(), proxies=proxies)
    
                    if response.status_code == 200:
                        with lock:
                            success_count += 1  # Sayacı artır
                        sys.stdout.write(f"\r✅ Başarılı istek sayısı: {success_count}")  # Aynı satıra yaz
                        sys.stdout.flush()  # Terminali güncelle
                        check_new_bookings(response)
                        break  # Başarılıysa döngüden çık
                    else:
                        print(f"\n❌ Hata: {response.status_code} - {response.text}")
                        time.sleep(RETRY_DELAY * (2 ** attempt))  # Exponential backoff
                except Exception as e:
                    print(f"\n⚠️ Bağlantı hatası: {e}, tekrar deneniyor...")
                    time.sleep(RETRY_DELAY * (2 ** attempt))  # Exponential backoff
    
    # Sürekli çalıştır
    send_booking_request()
  • 04-04-2025, 18:40:08
    #2
    import time
    import json
    import certifi
    import cloudscraper
    import random
    import sys
    import requests
    import threading
    from fake_useragent import UserAgent
    
    
    # API URL'leri
    BOOKING_URL = "Api1"
    ACCEPT_URL = "Api2"
    # API'ye gönderilecek login bilgileri
    LOGIN_HASH = "Hash1"
    ACCEPT_LOGIN_HASH = "Hash2"
    # Araç ID
    VEHICLE_ID = "36979"
    # Telegram Bot API Bilgileri
    TELEGRAM_BOT_TOKEN = "Token"
    TELEGRAM_CHAT_ID = "id
    # Proxy listesi
    proxy_list = [
        {"Proxy"},
        {"Proxy "},
        {"Proxy "},
        {"Proxy "},
      
        
    ]
    # CloudScraper başlat
    scraper = cloudscraper.create_scraper(
        browser={"browser": "chrome", "platform": "windows", "mobile": False}
    )
    previous_hashes = set()
    # Yeniden deneme ayarları
    MAX_RETRIES = 5
    RETRY_DELAY = 3
    # Başarılı istek sayacı
    success_count = 0
    lock = threading.Lock()  # Thread güvenliği için kilitleme mekanizması
    def get_random_headers():
        """Her istek için rastgele User-Agent döndürür"""
        ua = UserAgent()
        return {
            "Content-Type": "application/json",
            "User-Agent": ua.random
        }
    def send_telegram_message(message):
        """Telegram'a mesaj gönderen fonksiyon"""
        url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
        payload = {"chat_id": TELEGRAM_CHAT_ID, "text": message}
        try:
            response = requests.post(url, json=payload)
            if response.status_code == 200:
                print("\n📩 Telegram bildirimi gönderildi!")
            else:
                print(f"\n❌ Telegram hata kodu: {response.status_code} - {response.text}")
        except Exception as e:
            print(f"\n⚠️ Telegram bağlantı hatası: {e}")
    def accept_booking(booking_hash):
        """Rezervasyonu kabul eden fonksiyon (Thread ile çalışır)"""
        global previous_hashes
        if booking_hash in previous_hashes:
            return  # Aynı rezervasyonu iki kez işlememek için
        print(f"\n🚀 Yeni Rezervasyon İşleniyor! Booking Hash: {booking_hash}")
        accept_payload = {
            "login_hash": ACCEPT_LOGIN_HASH,
            "booking_hash": booking_hash,
            "vehicle_id": VEHICLE_ID,
            "refuse": "accept"
        }
        proxies = random.choice(proxy_list)  # Her istek için farklı proxy
        headers = get_random_headers()  # Her istek için farklı User-Agent
        for attempt in range(MAX_RETRIES):
            try:
                accept_response = scraper.post(ACCEPT_URL, headers=headers, json=accept_payload, verify=certifi.where(), proxies=proxies)
                if accept_response.status_code == 200:
                    with lock:
                        previous_hashes.add(booking_hash)  # Önceki rezervasyonlara ekle
                    print(f"\n✅ Rezervasyon kabul edildi! {booking_hash}")
                    # Telegram bildirimi gönder
                    send_telegram_message(f"✅ Rezervasyon Kabul Edildi! ✅\n\n{booking_hash})")
                    break
                else:
                    print(f"\n❌ Rezervasyon kabul hatası: {accept_response.status_code} - {accept_response.text}")
                    time.sleep(RETRY_DELAY * (2 ** attempt))  # Exponential backoff
            except Exception as e:
                print(f"\n⚠️ Bağlantı hatası (Rezervasyon kabulü): {e}, tekrar deneniyor...")
                time.sleep(RETRY_DELAY * (2 ** attempt))  # Exponential backoff
    def check_new_bookings(response):
        """Yeni rezervasyonları kontrol edip, işleme alan fonksiyon"""
        try:
            current_data = response.json().get("data", {}).get("bookings", [])
        except json.JSONDecodeError as e:
            print(f"\n❌ JSON dönüşüm hatası: {e}. Yanıt içeriği: {response.text}")
            return
        # Thread havuzu oluştur - aynı anda birden fazla rezervasyon için
        accept_threads = []
        
        for booking in current_data:
            booking_hash = booking["booking_hash_link"]
            if booking_hash not in previous_hashes:
                # Yeni rezervasyonlar için hemen işlem başlat
                thread = threading.Thread(target=accept_booking, args=(booking_hash,))
                thread.daemon = True
                thread.start()
                accept_threads.append(thread)
                
                # Diğer rezervasyonlara geçerken kısa bekle
                time.sleep(0.05)
        
        # Tüm rezervasyon işlemleri tamamlanana kadar bekle (opsiyonel)
        # for thread in accept_threads:
        #     thread.join(timeout=5)  # 5 saniye bekle
    def send_booking_request():
        """Rezervasyonları takip eden ana fonksiyon"""
        global success_count  # Global sayaç
        
        # Thread havuzu oluştur - çoklu istekler için
        max_threads = 5  # Aynı anda gönderilecek maksimum istek sayısı
        request_threads = []
        while True:
            # Eğer aktif thread sayısı maksimumdan azsa yeni threadler ekle
            active_threads = sum(1 for t in request_threads if t.is_alive())
            new_threads_needed = max_threads - active_threads
            
            for _ in range(new_threads_needed):
                thread = threading.Thread(target=send_single_request)
                thread.daemon = True  # Ana program sonlandığında thread de sonlanır
                thread.start()
                request_threads.append(thread)
            
            # Bitmiş threadleri listeden temizle
            request_threads = [t for t in request_threads if t.is_alive()]
            
            # Kısa bir bekleme ile CPU kullanımını dengele
            time.sleep(0.1)
    def send_single_request():
        """Tek bir rezervasyon isteği gönderir"""
        global success_count, lock
        
        proxies = random.choice(proxy_list)  # Her istek için farklı proxy
        headers = get_random_headers()  # Her istek için farklı User-Agent
        for attempt in range(MAX_RETRIES):
            try:
                payload = {"login_hash": LOGIN_HASH}
                response = scraper.post(BOOKING_URL, headers=headers, json=payload, verify=certifi.where(), proxies=proxies)
                if response.status_code == 200:
                    with lock:
                        success_count += 1  # Sayacı artır
                    sys.stdout.write(f"\r✅ Başarılı istek sayısı: {success_count}")  # Aynı satıra yaz
                    sys.stdout.flush()  # Terminali güncelle
                    check_new_bookings(response)
                    break  # Başarılıysa döngüden çık
                else:
                    print(f"\n❌ Hata: {response.status_code} - {response.text}")
                    time.sleep(RETRY_DELAY * (2 ** attempt))  # Exponential backoff
            except Exception as e:
                print(f"\n⚠️ Bağlantı hatası: {e}, tekrar deneniyor...")
                time.sleep(RETRY_DELAY * (2 ** attempt))  # Exponential backoff
    # Sürekli çalıştır
    send_booking_request()
  • 04-04-2025, 18:50:21
    #3
    Üyeliği durduruldu
    hocam burda eklemeler neler acaba