• 25-08-2024, 11:49:54
    #1
    Herkese merhabalar.
    Ben bilgisayar mühendisliği 4. sınıf öğrencisiyim. Bir proje için web crawler yapmaya uğraşıyorum. BU crawler sitelere login yapabilcek ve scrapping yapabilecek. Belli bir kısma kadar ilerleme kaydettim ancak simdi bazı sorunlar yaşamaktayım. Bu sorunlarla ilgili olarak sizlere danışmak istedim. Bana yardımcı olabilirseniz çok mutlu olurum. Bu sorunlar:

    1. Bot Korumasını Aşma (CAPTCHA, Engellemeler, Kısıtlamalar):
    Bot korumasını aşmak için BrightData'nın web unlocker hizmetlerini kullanıyorum. Ancak, bu hizmet her zaman etkili olmuyor, özellikle BlazingFast DDoS koruma veya Cloudflare gibi servisler tarafından korunan sitelerde. Bu tür korumaları aşmak için daha iyi bir web unlocker hizmeti var mı? Ya da başka bir çözüm öneriniz var mı?

    2. CAPTCHA'ları Geçerek Giriş Yapma:
    CAPTCHA'larla karşılaştığım sitelere giriş yapmak istiyorum. DeathByCaptcha gibi CAPTCHA çözüm hizmetlerini kullanmayı düşünüyorum, ancak bunu nasıl yapabileceğim konusunda bir örnek veya rehber bulamadım. Bu hizmetler CAPTCHA'ları geçerek başarılı bir giriş yapmamı sağlar mı? Eğer sağlarsa, bunu nasıl yapabileceğimi açıklayabilir misiniz?

    3. Girişte Gerekli Olan Alanları (Çerezler vb.) Kullanma:
    Bazı sitelere giriş yapabilmek için belirli alanları doldurmam gerekiyor, örneğin kimlik doğrulama çerezleri. Gerekli alanları belirlemek için Burp Proxy kullanarak ağ trafiğini inceliyorum. Ayrıca JMeter ile de bu işlemi yapabileceğimi biliyorum. Bu iş için Burp Proxy mi yoksa JMeter mı daha uygun? Ya da önerebileceğiniz başka bir yöntem var mı?

    4. Bot Korumalarını Proxy ve User-Agent Döndürme ile Aşma:
    Planim, web unlocker hizmetlerini kullanmak, proxy ve user-agent sürekli degistirmek. Ayrıca istek göndermeden önce kısa bir süre bekliyorum. Sizce bu yöntemler bot korumasını aşmam ve engellenmemi önlemem için yeterli mi?

    Kisaca Crawler projemde çeşitli zorluklarla karşılaşıyorum. Bazı sorunları kısmen çözdüm, ancak diğerleri hâlâ çözülmedi. Bu konularda yardımlarınızı bekliyorum. Yardımcı olabilirseniz çok sevinirim.

    Ayrıca projeyi java jsoup ile geliştiriyorum ancak selenium kullanmayı istiyorum. Bunun dışında da bu sorunları çözmek için her şeyi kullanabilirim. Yardımlarınız için şimdiden teşekkür ederim.
  • Kabul Edilen Cevap
    • Crawler projenle ilgili yaşadığın sorunları anlıyorum ve yardımcı olabileceğim için memnuniyet duyarım. Detaylara geçelim:

      1. Bot Korumasını Aşma (CAPTCHA, Engellemeler, Kısıtlamalar)


      Bot korumalarını aşmak, özellikle Cloudflare ve BlazingFast gibi güçlü DDoS korumaları ile karşı karşıya kaldığında zor olabilir. BrightData gibi hizmetler iyi bir başlangıç olabilir, ancak daha gelişmiş yöntemler ve araçlar da mevcut:
      • Puppeteer veya Playwright: Bu araçlar, tarayıcıyı otomatikleştirmenize ve insan davranışlarını taklit etmenize olanak tanır. Özellikle CAPTCHA ve anti-bot korumalarını aşmak için kullanışlıdır. Playwright'ın Stealth modülü, tarayıcıyı bot olarak algılanmasını engellemek için tasarlanmıştır.
      • Human-Emulated Behavior: Web unlocker hizmetlerine ek olarak, tarayıcıyı insan gibi davranacak şekilde yapılandırabilirsiniz. Örneğin, mouse hareketlerini, kaydırmayı ve düzensiz beklemeleri simüle etmek.
      • Rotating Proxies: Proxy rotasyonu yaparken, IP adreslerinin yanı sıra farklı bölgelerden IP'ler kullanarak (özellikle residential IP'ler) güvenlik duvarlarını aşabilirsiniz. Bunun için Oxylabs, Luminati gibi hizmetleri deneyebilirsiniz.
      • CAPTCHA Avoidance: Bazı CAPTCHA türleri, sadece bir süre bekleyerek veya insan davranışı taklit edilerek tetiklenmeyebilir. Ancak genellikle CAPTCHA'larla uğraşmanız gerektiğinde, CAPTCHA çözüm servislerini kullanmanız gerekecektir.

      2. CAPTCHA'ları Geçerek Giriş Yapma


      CAPTCHA'ları geçmek için DeathByCaptcha, 2Captcha, Anti-Captcha gibi hizmetler oldukça yaygındır. Bu hizmetler genellikle bir API sunar ve tarayıcı otomasyonu ile entegre edilebilirler.

      Örnek Python Kodu:
      import requests
      from selenium import webdriver
      from time import sleep
      
      # DeathByCaptcha API Key'iniz
      DEATHBYCAPTCHA_API_KEY = 'YOUR_API_KEY'
      
      def solve_captcha(image_path):
          # CAPTCHA çözüm hizmetine resmi gönderme
          with open(image_path, 'rb') as captcha_file:
              response = requests.post('http://api.dbcapi.me/api/captcha',
                                       data={'username': 'YOUR_USERNAME', 'password': 'YOUR_PASSWORD'},
                                       files={'captchafile': captcha_file})
          return response.json()['text']
      
      # Selenium ile CAPTCHA'yı yakalama
      browser = webdriver.Chrome()
      browser.get('https://example.com')
      captcha_image = browser.find_element_by_id('captcha_img_id')
      captcha_image.screenshot('captcha.png')
      
      # CAPTCHA'yı çözme
      captcha_text = solve_captcha('captcha.png')
      
      # CAPTCHA cevabını form alanına girme
      captcha_input = browser.find_element_by_id('captcha_input_id')
      captcha_input.send_keys(captcha_text)
      
      # Formu gönderme
      submit_button = browser.find_element_by_id('submit_button_id')
      submit_button.click()
      Bu örneği Java ile Selenium kullanarak da yapabilirsiniz. Mantık aynı kalır; sadece API çağrılarını ve Selenium kodunu Java ile yazmanız gerekecek.

      3. Girişte Gerekli Olan Alanları (Çerezler vb.) Kullanma


      Burp Proxy veya JMeter gibi araçlar, çerezleri ve diğer gerekli parametreleri incelemek için oldukça güçlüdür. Ancak bu konuda Burp Proxy genellikle daha kullanıcı dostu ve ayrıntılı bilgi sağlar.

      Tavsiyeler:
      • Burp Suite: Trafiği gerçek zamanlı olarak izlemenize ve manipüle etmenize olanak tanır. Özellikle çerezler, başlıklar ve POST verilerini analiz etmek için idealdir.
      • Fiddler: Alternatif olarak Fiddler da aynı işlevleri yerine getirebilir ve genellikle daha hızlıdır.
      • JMeter: Daha çok yük testi için kullanılsa da, kimlik doğrulama akışlarını incelemek ve otomatikleştirmek için de kullanılabilir.
      Adımlar:
      1. İlgili siteye manuel olarak giriş yapın ve Burp Proxy'i kullanarak trafiği yakalayın.
      2. Giriş sürecinde gönderilen tüm POST verilerini, çerezleri ve başlıkları inceleyin.
      3. Bu bilgileri crawler'ınıza entegre edin ve aynı verileri kullanarak giriş yapmayı deneyin.

      4. Bot Korumalarını Proxy ve User-Agent Döndürme ile Aşma


      Proxy ve user-agent döndürme, bot korumalarını aşmada etkili bir strateji olabilir. Ancak, bu yöntemlerin yanı sıra başka ek önlemler de almanız gerekebilir:
      • Request Throttling: Belirli zaman aralıklarında istek göndermek, bot tespiti riskini azaltabilir.
      • Session Management: Her yeni oturum için yeni bir proxy ve user-agent kullanın.
      • IP Geolocation Matching: Proxy IP'sinin bölgesi ile user-agent'taki dil veya saat dilimi ayarlarının tutarlı olduğundan emin olun.

      Java ile Selenium Kullanımı


      Selenium, web sayfaları üzerinde insan davranışını taklit eden testler için çok uygundur ve bot korumalarını aşmak için de kullanılabilir. Java ile Selenium kullanarak CAPTCHA çözme ve diğer otomasyon işlemlerini gerçekleştirebilirsiniz.

      Örnek Kullanım:
      WebDriver driver = new ChromeDriver();
      driver.get("https://example.com");
      
      // CAPTCHA'nın ekran görüntüsünü al
      WebElement captchaImage = driver.findElement(By.id("captcha_img_id"));
      File src = captchaImage.getScreenshotAs(OutputType.FILE);
      FileUtils.copyFile(src, new File("captcha.png"));
      
      // CAPTCHA çözüm servisi ile CAPTCHA'yı çöz
      String captchaText = solveCaptcha("captcha.png"); // Yukarıdaki Python örneğine benzer bir API entegrasyonu yapabilirsiniz.
      
      // CAPTCHA cevabını form alanına gir
      driver.findElement(By.id("captcha_input_id")).sendKeys(captchaText);
  • 25-08-2024, 11:56:53
    #2
    Bu cevap, konu sahibi tarafından kabul edilebilir bir cevap olarak işaretlendi.
    Crawler projenle ilgili yaşadığın sorunları anlıyorum ve yardımcı olabileceğim için memnuniyet duyarım. Detaylara geçelim:

    1. Bot Korumasını Aşma (CAPTCHA, Engellemeler, Kısıtlamalar)


    Bot korumalarını aşmak, özellikle Cloudflare ve BlazingFast gibi güçlü DDoS korumaları ile karşı karşıya kaldığında zor olabilir. BrightData gibi hizmetler iyi bir başlangıç olabilir, ancak daha gelişmiş yöntemler ve araçlar da mevcut:
    • Puppeteer veya Playwright: Bu araçlar, tarayıcıyı otomatikleştirmenize ve insan davranışlarını taklit etmenize olanak tanır. Özellikle CAPTCHA ve anti-bot korumalarını aşmak için kullanışlıdır. Playwright'ın Stealth modülü, tarayıcıyı bot olarak algılanmasını engellemek için tasarlanmıştır.
    • Human-Emulated Behavior: Web unlocker hizmetlerine ek olarak, tarayıcıyı insan gibi davranacak şekilde yapılandırabilirsiniz. Örneğin, mouse hareketlerini, kaydırmayı ve düzensiz beklemeleri simüle etmek.
    • Rotating Proxies: Proxy rotasyonu yaparken, IP adreslerinin yanı sıra farklı bölgelerden IP'ler kullanarak (özellikle residential IP'ler) güvenlik duvarlarını aşabilirsiniz. Bunun için Oxylabs, Luminati gibi hizmetleri deneyebilirsiniz.
    • CAPTCHA Avoidance: Bazı CAPTCHA türleri, sadece bir süre bekleyerek veya insan davranışı taklit edilerek tetiklenmeyebilir. Ancak genellikle CAPTCHA'larla uğraşmanız gerektiğinde, CAPTCHA çözüm servislerini kullanmanız gerekecektir.

    2. CAPTCHA'ları Geçerek Giriş Yapma


    CAPTCHA'ları geçmek için DeathByCaptcha, 2Captcha, Anti-Captcha gibi hizmetler oldukça yaygındır. Bu hizmetler genellikle bir API sunar ve tarayıcı otomasyonu ile entegre edilebilirler.

    Örnek Python Kodu:
    import requests
    from selenium import webdriver
    from time import sleep
    
    # DeathByCaptcha API Key'iniz
    DEATHBYCAPTCHA_API_KEY = 'YOUR_API_KEY'
    
    def solve_captcha(image_path):
        # CAPTCHA çözüm hizmetine resmi gönderme
        with open(image_path, 'rb') as captcha_file:
            response = requests.post('http://api.dbcapi.me/api/captcha',
                                     data={'username': 'YOUR_USERNAME', 'password': 'YOUR_PASSWORD'},
                                     files={'captchafile': captcha_file})
        return response.json()['text']
    
    # Selenium ile CAPTCHA'yı yakalama
    browser = webdriver.Chrome()
    browser.get('https://example.com')
    captcha_image = browser.find_element_by_id('captcha_img_id')
    captcha_image.screenshot('captcha.png')
    
    # CAPTCHA'yı çözme
    captcha_text = solve_captcha('captcha.png')
    
    # CAPTCHA cevabını form alanına girme
    captcha_input = browser.find_element_by_id('captcha_input_id')
    captcha_input.send_keys(captcha_text)
    
    # Formu gönderme
    submit_button = browser.find_element_by_id('submit_button_id')
    submit_button.click()
    Bu örneği Java ile Selenium kullanarak da yapabilirsiniz. Mantık aynı kalır; sadece API çağrılarını ve Selenium kodunu Java ile yazmanız gerekecek.

    3. Girişte Gerekli Olan Alanları (Çerezler vb.) Kullanma


    Burp Proxy veya JMeter gibi araçlar, çerezleri ve diğer gerekli parametreleri incelemek için oldukça güçlüdür. Ancak bu konuda Burp Proxy genellikle daha kullanıcı dostu ve ayrıntılı bilgi sağlar.

    Tavsiyeler:
    • Burp Suite: Trafiği gerçek zamanlı olarak izlemenize ve manipüle etmenize olanak tanır. Özellikle çerezler, başlıklar ve POST verilerini analiz etmek için idealdir.
    • Fiddler: Alternatif olarak Fiddler da aynı işlevleri yerine getirebilir ve genellikle daha hızlıdır.
    • JMeter: Daha çok yük testi için kullanılsa da, kimlik doğrulama akışlarını incelemek ve otomatikleştirmek için de kullanılabilir.
    Adımlar:
    1. İlgili siteye manuel olarak giriş yapın ve Burp Proxy'i kullanarak trafiği yakalayın.
    2. Giriş sürecinde gönderilen tüm POST verilerini, çerezleri ve başlıkları inceleyin.
    3. Bu bilgileri crawler'ınıza entegre edin ve aynı verileri kullanarak giriş yapmayı deneyin.

    4. Bot Korumalarını Proxy ve User-Agent Döndürme ile Aşma


    Proxy ve user-agent döndürme, bot korumalarını aşmada etkili bir strateji olabilir. Ancak, bu yöntemlerin yanı sıra başka ek önlemler de almanız gerekebilir:
    • Request Throttling: Belirli zaman aralıklarında istek göndermek, bot tespiti riskini azaltabilir.
    • Session Management: Her yeni oturum için yeni bir proxy ve user-agent kullanın.
    • IP Geolocation Matching: Proxy IP'sinin bölgesi ile user-agent'taki dil veya saat dilimi ayarlarının tutarlı olduğundan emin olun.

    Java ile Selenium Kullanımı


    Selenium, web sayfaları üzerinde insan davranışını taklit eden testler için çok uygundur ve bot korumalarını aşmak için de kullanılabilir. Java ile Selenium kullanarak CAPTCHA çözme ve diğer otomasyon işlemlerini gerçekleştirebilirsiniz.

    Örnek Kullanım:
    WebDriver driver = new ChromeDriver();
    driver.get("https://example.com");
    
    // CAPTCHA'nın ekran görüntüsünü al
    WebElement captchaImage = driver.findElement(By.id("captcha_img_id"));
    File src = captchaImage.getScreenshotAs(OutputType.FILE);
    FileUtils.copyFile(src, new File("captcha.png"));
    
    // CAPTCHA çözüm servisi ile CAPTCHA'yı çöz
    String captchaText = solveCaptcha("captcha.png"); // Yukarıdaki Python örneğine benzer bir API entegrasyonu yapabilirsiniz.
    
    // CAPTCHA cevabını form alanına gir
    driver.findElement(By.id("captcha_input_id")).sendKeys(captchaText);
  • 25-08-2024, 15:16:44
    #3
    Hostragons Global adlı üyeden alıntı: mesajı görüntüle
    Crawler projenle ilgili yaşadığın sorunları anlıyorum ve yardımcı olabileceğim için memnuniyet duyarım. Detaylara geçelim:

    1. Bot Korumasını Aşma (CAPTCHA, Engellemeler, Kısıtlamalar)


    Bot korumalarını aşmak, özellikle Cloudflare ve BlazingFast gibi güçlü DDoS korumaları ile karşı karşıya kaldığında zor olabilir. BrightData gibi hizmetler iyi bir başlangıç olabilir, ancak daha gelişmiş yöntemler ve araçlar da mevcut:
    • Puppeteer veya Playwright: Bu araçlar, tarayıcıyı otomatikleştirmenize ve insan davranışlarını taklit etmenize olanak tanır. Özellikle CAPTCHA ve anti-bot korumalarını aşmak için kullanışlıdır. Playwright'ın Stealth modülü, tarayıcıyı bot olarak algılanmasını engellemek için tasarlanmıştır.
    • Human-Emulated Behavior: Web unlocker hizmetlerine ek olarak, tarayıcıyı insan gibi davranacak şekilde yapılandırabilirsiniz. Örneğin, mouse hareketlerini, kaydırmayı ve düzensiz beklemeleri simüle etmek.
    • Rotating Proxies: Proxy rotasyonu yaparken, IP adreslerinin yanı sıra farklı bölgelerden IP'ler kullanarak (özellikle residential IP'ler) güvenlik duvarlarını aşabilirsiniz. Bunun için Oxylabs, Luminati gibi hizmetleri deneyebilirsiniz.
    • CAPTCHA Avoidance: Bazı CAPTCHA türleri, sadece bir süre bekleyerek veya insan davranışı taklit edilerek tetiklenmeyebilir. Ancak genellikle CAPTCHA'larla uğraşmanız gerektiğinde, CAPTCHA çözüm servislerini kullanmanız gerekecektir.

    2. CAPTCHA'ları Geçerek Giriş Yapma


    CAPTCHA'ları geçmek için DeathByCaptcha, 2Captcha, Anti-Captcha gibi hizmetler oldukça yaygındır. Bu hizmetler genellikle bir API sunar ve tarayıcı otomasyonu ile entegre edilebilirler.

    Örnek Python Kodu:
    import requests
    from selenium import webdriver
    from time import sleep
    
    # DeathByCaptcha API Key'iniz
    DEATHBYCAPTCHA_API_KEY = 'YOUR_API_KEY'
    
    def solve_captcha(image_path):
        # CAPTCHA çözüm hizmetine resmi gönderme
        with open(image_path, 'rb') as captcha_file:
            response = requests.post('http://api.dbcapi.me/api/captcha',
                                     data={'username': 'YOUR_USERNAME', 'password': 'YOUR_PASSWORD'},
                                     files={'captchafile': captcha_file})
        return response.json()['text']
    
    # Selenium ile CAPTCHA'yı yakalama
    browser = webdriver.Chrome()
    browser.get('https://example.com')
    captcha_image = browser.find_element_by_id('captcha_img_id')
    captcha_image.screenshot('captcha.png')
    
    # CAPTCHA'yı çözme
    captcha_text = solve_captcha('captcha.png')
    
    # CAPTCHA cevabını form alanına girme
    captcha_input = browser.find_element_by_id('captcha_input_id')
    captcha_input.send_keys(captcha_text)
    
    # Formu gönderme
    submit_button = browser.find_element_by_id('submit_button_id')
    submit_button.click()
    Bu örneği Java ile Selenium kullanarak da yapabilirsiniz. Mantık aynı kalır; sadece API çağrılarını ve Selenium kodunu Java ile yazmanız gerekecek.

    3. Girişte Gerekli Olan Alanları (Çerezler vb.) Kullanma


    Burp Proxy veya JMeter gibi araçlar, çerezleri ve diğer gerekli parametreleri incelemek için oldukça güçlüdür. Ancak bu konuda Burp Proxy genellikle daha kullanıcı dostu ve ayrıntılı bilgi sağlar.

    Tavsiyeler:
    • Burp Suite: Trafiği gerçek zamanlı olarak izlemenize ve manipüle etmenize olanak tanır. Özellikle çerezler, başlıklar ve POST verilerini analiz etmek için idealdir.
    • Fiddler: Alternatif olarak Fiddler da aynı işlevleri yerine getirebilir ve genellikle daha hızlıdır.
    • JMeter: Daha çok yük testi için kullanılsa da, kimlik doğrulama akışlarını incelemek ve otomatikleştirmek için de kullanılabilir.
    Adımlar:
    1. İlgili siteye manuel olarak giriş yapın ve Burp Proxy'i kullanarak trafiği yakalayın.
    2. Giriş sürecinde gönderilen tüm POST verilerini, çerezleri ve başlıkları inceleyin.
    3. Bu bilgileri crawler'ınıza entegre edin ve aynı verileri kullanarak giriş yapmayı deneyin.

    4. Bot Korumalarını Proxy ve User-Agent Döndürme ile Aşma


    Proxy ve user-agent döndürme, bot korumalarını aşmada etkili bir strateji olabilir. Ancak, bu yöntemlerin yanı sıra başka ek önlemler de almanız gerekebilir:
    • Request Throttling: Belirli zaman aralıklarında istek göndermek, bot tespiti riskini azaltabilir.
    • Session Management: Her yeni oturum için yeni bir proxy ve user-agent kullanın.
    • IP Geolocation Matching: Proxy IP'sinin bölgesi ile user-agent'taki dil veya saat dilimi ayarlarının tutarlı olduğundan emin olun.

    Java ile Selenium Kullanımı


    Selenium, web sayfaları üzerinde insan davranışını taklit eden testler için çok uygundur ve bot korumalarını aşmak için de kullanılabilir. Java ile Selenium kullanarak CAPTCHA çözme ve diğer otomasyon işlemlerini gerçekleştirebilirsiniz.

    Örnek Kullanım:
    WebDriver driver = new ChromeDriver();
    driver.get("https://example.com");
    
    // CAPTCHA'nın ekran görüntüsünü al
    WebElement captchaImage = driver.findElement(By.id("captcha_img_id"));
    File src = captchaImage.getScreenshotAs(OutputType.FILE);
    FileUtils.copyFile(src, new File("captcha.png"));
    
    // CAPTCHA çözüm servisi ile CAPTCHA'yı çöz
    String captchaText = solveCaptcha("captcha.png"); // Yukarıdaki Python örneğine benzer bir API entegrasyonu yapabilirsiniz.
    
    // CAPTCHA cevabını form alanına gir
    driver.findElement(By.id("captcha_input_id")).sendKeys(captchaText);

    Size ne kadar teşekkür edeceğimi bilemiyorum. Gerçekten beni çok mutlu ettiniz. Yazdığınız yöntemler üzerine araştırma yapıp projeme entegre etmek için sabırsızlanıyorum. Size çok minnettarım. Sizden rica etsem bu konuda bundan sonra yardıma ihtiyacım olduğu zaman sizinle iletişime geçebilir miyim?