Python and selenium

CAPTCHA-Systeme sind darauf ausgelegt, Muster zu erkennen, die Bots von Menschen unterscheiden, lassen sich aber täuschen. Unvorhersehbare und menschenähnliche Aktionen in deinem Scraper verwirren das System und helfen so, eine Sperrung zu vermeiden. Selenium ist eine Python-Bibliothek mit einer benutzerfreundlichen API zur Steuerung von Browsern. Standardmäßig läuft Selenium mit einem sichtbaren Browserfenster, kann aber auch im Headless-Modus ausgeführt werden. Einige Plugins können die Automatisierung verschleiern, sodass der Browser wie ein echter Nutzer wirkt und das Risiko einer Erkennung sinkt.

In diesem Tutorial stellen wir verschiedene Methoden zum Umgehen von CAPTCHAs vor und analysieren sie, darunter Undetected ChromeDriver, Proxy Rotation, die Simulation menschlichen Verhaltens und externe Dienste (CapSolver). Wir sehen uns jede davon an, damit du entscheiden kannst, welche Methode für dich am besten geeignet ist. 

Undetected ChromeDriver verwenden

Undetected ChromeDriver: Was ist das?

Entwickler versuchen, mit Headless-Browsern wie Selenium die Anti-Bot-Mechanismen von Websites zu umgehen. Der Selenium Undetected ChromeDriver ist ein optimierter ChromeDriver, der so entwickelt wurde, dass er nicht erkannt wird. Anders als der Standard-ChromeDriver, der Informationen preisgibt, mit denen Anti-Bot-Systeme Bots identifizieren, schließt der Undetected ChromeDriver diese Lücken. Dadurch sinkt die Wahrscheinlichkeit, dass Systeme wie DataDome, Imperva und BotProtect.io deinen Bot blockieren.

Vorbereitung:

  • Stelle sicher, dass du Python 3.6 oder eine neuere Version verwendest, und installiere Selenium.
  • Lade Chrome herunter und installiere es.

Wichtige Schritte:

1. Installiere Selenium, falls du es noch nicht getan hast.


pip3 install selenium
      
        

      

2. Installiere anschließend das undetected-chromedriver  Modul, indem du den folgenden Befehl im Terminal ausführst:


pip3 install undetected-chromedriver
      
        

      

Bei erfolgreicher Installation wird diese Meldung angezeigt: 

3. In diesem Tutorial verwenden wir den VS Code. Im nächsten Schritt importierst du die Bibliotheken für Undetected ChromeDriver. Wähle anschließend eine Webseite aus, von der du Daten extrahieren möchtest. Erstelle einen Screenshot deiner Zielwebseite, um zu prüfen, ob sie ohne CAPTCHA korrekt geladen wurde.  Führe die folgenden Befehle aus:


import undetected_chromedriver as uc
import time

# Initialize Chrome with undetected ChromeDriver
browser = uc.Chrome(headless=True, use_subprocess=True)

# Navigate to the target page
browser.get("https://example.com")

# Wait a few seconds to ensure the page loads fully
time.sleep(3)

# Save a screenshot to verify page loading
browser.save_screenshot("screenshot.png")
print("Screenshot taken and saved as 'screenshot.png'")

# Close the browser after the task
browser.quit()
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
      

Geschafft! Mit Undetected ChromeDriver ist CAPTCHA kein Problem mehr und du kannst nun mit dem Scraping der Website beginnen. Diese Methode eignet sich am besten für kleine Projekte. Für umfangreiche Scraping-Projekte ist sie vor allem deshalb weniger effektiv, weil sie deine IP-Adresse nicht schützt. Die nächste Strategie ist eine sicherere Alternative. 

Proxy Rotation verwenden

Websites können ein verstecktes CAPTCHA einsetzen, um Bot-Aktivitäten zu erkennen. Wenn viele Anfragen von einer IP-Adresse kommen, werten Websites dies als Bot-Verhalten und sperren den Zugriff. Rotierende IP-Adressen können helfen, dieses Problem zu lösen. In diesem Tutorial verwenden wir Residential Proxies von DataImpulse. Wenn du sie ausprobieren möchtest, registriere dich einfach und wähle deinen bevorzugten Tarif. Alle wichtigen Informationen findest du in deinem Dashboard. Deine DataImpulse-Zugangsdaten stehen in deinem Tarif im Bereich Proxy AccessBereich.

Außerdem findest du in unserem ausführlichen Leitfaden, erfährst du, wie du unserer Community beitreten kannst, und erhältst einen Überblick über unser benutzerfreundliches Dashboard und seine Bereiche. 

Du kannst einen Proxy-Pool erstellen oder einen einzelnen Proxy verwenden. Nutze dafür einfach “your_single_proxy:port” anstelle einer Proxy-Liste.

Gib bei “your_single_proxy:port” deinen Host und Port an. 

Trage bei driver.get(“https://example.com“) die gewünschte Website ein. Nachdem du alle erforderlichen Bibliotheken installiert hast, kannst du diesen Code ausprobieren:


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

# List of DataImpulse proxies 
proxy_list = [ 
    "proxy1:port", 
    "proxy2:port", 
    "proxy3:port", 
    # Add more proxies from your DataImpulse pool 
]

def start_selenium_with_proxy(proxy):
    # Set up Chrome options
    chrome_options = Options()
    chrome_options.add_argument("--headless=new")

    # Add proxy to Chrome options
    chrome_options.add_argument(f'--proxy-server=http://{proxy}')

    # Initialize the Selenium browser with the proxy settings
    driver = webdriver.Chrome(options=chrome_options)
    return driver

# Example scraping function with using rotating proxies
def scrape_website():
    for proxy in proxy_list:
        driver = start_selenium_with_proxy(proxy)
        try:
            # Navigate to the target website
            driver.get("https://httpbin.io/ip")

            print(driver.find_element(By.TAG_NAME, "body").text)
            
        finally:
            driver.quit()

# Run the scraping function
scrape_website() 
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
      

Kostenlose Proxies bieten in der Regel nur schwachen Schutz und können sogar ein Risiko darstellen. Langsame Verbindungen, Phishing und gesperrte IP-Adressen sind nur einige der möglichen Gefahren bei ihrer Nutzung. Damit kommen wir zum Hauptnachteil von Proxy Rotation: den Kosten für Proxy-Anbieter. Informiere dich daher gründlich und wähle eine Lösung, die dir zuverlässig, preiswert und mit allen benötigten Funktionen erscheint. 

Surfen, ohne Spuren zu hinterlassen

Mit Proxies werden Websites dich nicht verdächtigen, dich nicht zur Eingabe eines CAPTCHA auffordern und dich auch nicht sperren. Bei DataImpulse erhältst du aktuelle Daten, keine IPs auf Sperrlisten, CAPTCHA-Verarbeitung, intuitive APIs und professionellen menschlichen Support rund um die Uhr. Wir bieten einen der niedrigsten Preise auf dem Markt: nur $1 pro GB! Jetzt ausprobieren!

Simulation menschlichen Verhaltens verwenden

Durch den Einsatz von Simulatoren für menschliches Verhalten kann dein Headless-Browser Nutzerinteraktionen authentischer nachbilden. Hier sind einige der wichtigsten Methoden, um echte Nutzeraktionen zu simulieren:

  • Mausbewegungen – Sie erzeugen natürliche Kurven, unterschiedliche Geschwindigkeiten und Beschleunigungen und ahmen nach, wie echte Nutzer eine Maus bewegen.
  • Zufällige Klicks – Zeitpunkt und leichte Positionsverschiebungen der Klicks werden variiert, um echtes Nutzerverhalten nachzuahmen. 
  • Tastatureingaben – Das Tippen wird an natürliche Schreibgeschwindigkeiten, Pausen und gelegentliche Tippfehler angepasst, um einen menschlichen Rhythmus zu erzeugen.

Füge kleine Verzögerungen zwischen den Aktionen ein, um menschliches Verhalten zu simulieren, variiere den Mauspfad und passe die Klickpositionen an. Als Ziele verwenden wir 3 Seiten von https://www.scrapingcourse.com/ecommerce Hier ist ein Codebeispiel:


import time
import random
import requests

# make a GET request to the given URL and print the status code
def make_request(url):
    response = requests.get(url)
    print(f"Request to {url} returned status code: {response.status_code}")

# list of URLs to request
urls = [
    "https://www.scrapingcourse.com/ecommerce/page/1/",
    "https://www.scrapingcourse.com/ecommerce/page/2/",
    "https://www.scrapingcourse.com/ecommerce/page/3/",
]

# range for random wait time (in seconds)
min_wait = 1
max_wait = 5

# iterate through each URL in the list
for url in urls:
    make_request(url)
    wait_time = random.uniform(min_wait, max_wait)
    print(f"Waiting for {wait_time:.2f} seconds before the next request...")
    time.sleep(wait_time)

print("All requests completed.") 
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
      

Bei korrekter Ausführung solltest du eine ähnliche Antwort sehen:

Die Simulation menschlichen Verhaltens lässt automatisierte Skripte tatsächlich realistischer wirken. Aufgrund dieser zufälligen Aktionen können solche Simulationen jedoch die Komplexität erhöhen und die gesamte Scraping-Geschwindigkeit verringern.

Externe Dienste (CapSolver) verwenden

Es gibt viele weitere Dienste, die dich bei der Verarbeitung verschiedener CAPTCHA-Typen unterstützen können. In diesem Tutorial stellen wir den Dienst CapSolver vor. CapSolver lässt sich mit unterschiedlichen Proxy-Typen integrieren, sodass Nutzer die CAPTCHA-Lösung über mehrere IP-Adressen hinweg verwalten können. Durch Proxies wirken Anfragen, als kämen sie von mehreren Geräten und Standorten, was die Anonymität erhöht und das Risiko einer Erkennung senkt. Mehr über die wichtigsten Schritte bei der Integration von DataImpulse mit CapSolver erfährst du in einem kurzen Leitfaden

Du benötigst einen API-Schlüssel, den du in deinem CapSolver-Dashboard findest. 

Nachfolgend findest du ein Python-Beispiel, das zeigt, wie du die API von CapSolver zur Verarbeitung von CAPTCHAs nutzt. Ersetze vor dem Ausführen des Codes YOUR_API_KEY, XXX und site_url durch die tatsächlichen Werte.


# pip3 install requests
import requests
import time

# TODO: Set your configuration
api_key = "YOUR_API_KEY"  # Your CapSolver API key
site_key = "XXX"  # The site key for the target CAPTCHA
site_url = ""  # URL of the page with the CAPTCHA

def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'ReCaptchaV2TaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url
        }
    }

    response = requests.post("https://api.capsolver.com/createTask", json=payload)
    result = response.json()
    task_id = result.get("taskId")

    if not task_id:
        print("Failed to create task:", response.text)
        return

    print(f"Task ID received: {task_id} / Fetching result...")

    while True:
        time.sleep(3)  # Delay between checks

        payload = {"clientKey": api_key, "taskId": task_id}
        response = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
        result = response.json()
        status = result.get("status")

        if status == "ready":
            return result.get("solution", {}).get('gRecaptchaResponse')

        if status == "failed" or result.get("errorId"):
            print("Solution retrieval failed! Response:", response.text)
            return

token = capsolver()
print(token)
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
      

Externe Dienste stehen für Effizienz, Skalierbarkeit und eine höhere Erfolgsquote bei der Bewältigung komplexer Aufgaben. Mit solchen Diensten können Entwickler sich leichter auf andere Projektanforderungen konzentrieren. Mögliche Nachteile sind die Kosten, die Abhängigkeit von der Zuverlässigkeit Dritter und Datenschutzbedenken aufgrund der eingeschränkten Kontrolle über Daten.

Zusammenfassung

Python ist für seine Einfachheit und die umfangreiche Unterstützung durch Bibliotheken bekannt, wodurch Webautomatisierung und das Extrahieren von Daten unkompliziert werden. Mit Bibliotheken wie Selenium und Playwright kannst du Browseraufgaben automatisieren und CAPTCHA mit den richtigen Werkzeugen umgehen. Am besten integrierst du deinen Web Scraper mit Proxies, denn das hilft, diese Einschränkungen zu umgehen, die Anonymität zu wahren und Sperren vorzubeugen.

Kontaktiere uns noch heute, um mehr über die vielfältigen Scraping-Tools und unsere maßgeschneiderten Lösungen zu erfahren.

Share article: