EBA'da lise için hazırlanan soru bankaları testlerini indirecektim. Baktım sayısı çok fazla bot yazayım dedim ama ne yaptıysam bot işe yaramıyor. En a 10 farklı yaklaşım denedim ama EBA izin vermiyor botun kullanımına. Aşağıda kodu bıraktım. pitonla yazdım, tısladı fısladı ama EBA bana mısın demiyor.

import os
import time
import random
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pyautogui

# 1. TARAYICI AYARLARI
def setup_driver():
    chrome_options = Options()
    chrome_options.add_argument("--start-maximized")
    chrome_options.add_argument("--disable-blink-features=AutomationControlled")
    chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
    chrome_options.add_experimental_option("useAutomationExtension", False)
    
    # Kullanıcı ajanını değiştir (insan gibi görünmesi için)
    chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")
    
    # İndirme klasörü ayarları
    download_folder = os.path.join(os.getcwd(), "EBA_Indirilenler")
    os.makedirs(download_folder, exist_ok=True)
    
    prefs = {
        "download.default_directory": download_folder,
        "download.prompt_for_download": False,
        "download.directory_upgrade": True,
        "safebrowsing.enabled": False
    }
    chrome_options.add_experimental_option("prefs", prefs)
    
    # WebDriverManager ile otomatik chromedriver kurulumu
    try:
        from webdriver_manager.chrome import ChromeDriverManager
        service = Service(ChromeDriverManager().install())
    except:
        service = Service('chromedriver.exe')
    
    driver = webdriver.Chrome(service=service, options=chrome_options)
    
    # Bot tespitini önleme
    driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
        "source": """
        Object.defineProperty(navigator, 'webdriver', {
            get: () => undefined
        })
        """
    })
    
    return driver, download_folder

# 2. İNDİRME İŞLEMLERİ
def download_tests():
    try:
        driver, download_folder = setup_driver()
        base_url = "https://ogmmateryal.eba.gov.tr/soru-bankasi-soru-tipi-sec/biyoloji?s=7&d=6&k=on,3471,3472,3473,3474,3475,3476,3477,3478,3479,3480,3481,3482,3483,3484,3485,3486,3487"
        
        print("\nEBA Soru Bankası İndirici Başlatılıyor...")
        print(f"İndirilenler klasörü: {download_folder}")
        
        # Test tipleri
        test_types = {
            "css": "Çoktan Seçmeli",
            "bbs": "Beceri Temelli",
            "aus": "Açık Uçlu"
        }
        
        for test_type, test_name in test_types.items():
            print(f"\n>>> {test_name} Testleri İşleniyor...")
            
            try:
                # Sayfayı aç
                driver.get(f"{base_url}&t={test_type}")
                time.sleep(random.uniform(3, 5))  # Rastgele bekleme
                
                # Sayfayı biraz kaydır (insan taklidi)
                driver.execute_script("window.scrollBy(0, 300)")
                time.sleep(1)
                
                # Test linklerini bul
                test_links = WebDriverWait(driver, 20).until(
                    EC.presence_of_all_elements_located((By.XPATH, "//a[contains(@class, 'list-group-item')]")))
                print(f"Bulunan test sayısı: {len(test_links)}")
                
                for i, link in enumerate(test_links[:2], 1):  # Sadece ilk 2 test
                    try:
                        print(f"\n{i}. Test: {link.text.strip()}")
                        
                        # Linke tıkla (JavaScript ile)
                        driver.execute_script("arguments[0].click();", link)
                        time.sleep(random.uniform(2, 4))
                        
                        # İndirme butonunu bul
                        download_btn = WebDriverWait(driver, 20).until(
                            EC.element_to_be_clickable((By.XPATH, "//a[contains(@title, 'İndir') and contains(@class, 'btn-success')]")))
                        
                        # İndirme butonuna tıkla
                        driver.execute_script("arguments[0].click();", download_btn)
                        print("İndirme başlatıldı...")
                        
                        # İndirme için bekle
                        time.sleep(random.uniform(5, 8))
                        
                        # Geri dön
                        driver.back()
                        time.sleep(random.uniform(2, 3))
                        
                    except Exception as e:
                        print(f"Test indirme hatası: {str(e)}")
                        driver.back()
                        continue
                        
            except Exception as e:
                print(f"Test listesi alınamadı: {str(e)}")
                continue
                
    except Exception as e:
        print(f"Beklenmeyen hata: {str(e)}")
    finally:
        if 'driver' in locals():
            driver.quit()
        input("\nİşlem tamamlandı. Çıkmak için ENTER tuşuna basın...")

if __name__ == "__main__":
    pyautogui.PAUSE = 1
    download_tests()
burada 10-11-12.sınıfların tüm derslere ait testleri almam gerekiyor. 100den fazla ders ve her derse ait 50-60 test. elle yapınca canım çıkıyor. 61 testi elle indirmek 1 saatimi aldı. YZ desteği de aldım ama sadece bir tanesi bir dosya indirebildi başka indiremedi. gemini, chatgpt, qwen, deepseek... beceremedi hiçbiri. var mı yardımcı olacak
kodu geliştirmek için yardım istiyorum iş ilanı değildir