CodeGym /Kurse /Python SELF DE /Umgehung von Bot-Schutz: Methoden zur Umgehung von Anti-B...

Umgehung von Bot-Schutz: Methoden zur Umgehung von Anti-Bots und CAPTCHA

Python SELF DE
Level 33 , Lektion 2
Verfügbar

1. Anti-Bot-Technologien: Wer spielt Katz und Maus mit uns?

Heute tauchen wir in eines der spannendsten und, könnte man sagen, kontroversesten Themen des Web-Scrapings ein – die Umgehung von Bot-Schutz und den Umgang mit CAPTCHA. Wie so oft im Leben eines Programmierers findet sich für jede clevere Schraube eine Mutter mit Linksgewinde. Schauen wir uns also an, wie wir mit diesen Hindernissen umgehen können.

Bevor wir jedoch anfangen, nach Schlupflöchern zu suchen, lasst uns erst einmal herausfinden, womit wir es zu tun haben. Anti-Bot-Technologien – das sind nichts anderes als Systeme, die Websites vor übermäßiger und oft unerwünschter Aufmerksamkeit automatisierter Programme schützen. Hier sind einige der gängigen Methoden:

  • CAPTCHA: CAPTCHA ist wie die Atomwaffe in der Welt der Anti-Bots. Ziel ist es, Bot-Anfragen auszusortieren, indem man den Benutzern Aufgaben stellt, die menschliches Eingreifen erfordern: z. B. alle Bilder mit Dackeln auszuwählen oder eine verzerrte Buchstabenkombination einzugeben.
  • Verhaltensanalyse: Manche Websites bewerten, wie schnell du Formulare ausfüllst oder mit Seitenelementen interagierst. Zu schnell? Und schon bist du gebannt.
  • Verzögerungen und Beschränkungen bei Anfragen: Wenn die Website den Verdacht hat, dass du kein Mensch bist, kann sie die Verzögerungen zwischen Anfragen erhöhen oder dich sogar komplett blockieren.

2. Methoden zur Umgehung von Anti-Bots

Jetzt, wo wir den Gegner kennen, schauen wir uns ein paar Methoden an, um mit ihm fertig zu werden.

Lösung von CAPTCHA

Die offensichtlichste und gleichzeitig komplizierteste Methode ist die Automatisierung der Lösung von CAPTCHA. Ja, das ist möglich, aber dafür braucht man bestimmte Tools und Drittanbieter-Dienste. CAPTCHAs gibt es in verschiedenen Typen, darunter Text-CAPTCHA, grafische und sogar Audio-CAPTCHA.

Zur Automatisierung der CAPTCHA-Lösung kann man API-Services wie 2Captcha oder Anti-Captcha verwenden. Diese bieten CAPTCHA-Lösungen gegen eine geringe Gebühr an. Schauen wir uns an, wie das in der Praxis umgesetzt werden kann:


import requests

def solve_captcha(api_key, site_url, captcha_image_url):
    # Das CAPTCHA-Bild herunterladen
    captcha_image = requests.get(captcha_image_url).content
    
    # Bild an den Service senden und Task-ID erhalten
    response = requests.post("http://2captcha.com/in.php", files={'file': captcha_image}, data={'key': api_key, 'method': 'post'})
    captcha_id = response.text.split('|')[1]
    
    # CAPTCHA-Antwort abrufen
    solution_url = f"http://2captcha.com/res.php?key={api_key}&action=get&id={captcha_id}"
    solution_response = requests.get(solution_url)
    
    while 'CAPCHA_NOT_READY' in solution_response.text:
        solution_response = requests.get(solution_url)
    
    return solution_response.text.split('|')[1]

# Beispiel für die Nutzung der Funktion
api_key = 'DEIN_2CAPTCHA_KEY'
site_url = 'https://example.com'
captcha_image_url = 'https://example.com/captcha_image'

captcha_solution = solve_captcha(api_key, site_url, captcha_image_url)
print("CAPTCHA-Lösung:", captcha_solution)
    

Dieser Code zeigt, wie man eine Anfrage zur Lösung eines CAPTCHA stellen kann. Solche Methoden sind jedoch möglicherweise nicht effektiv bei komplexen grafischen Aufgaben oder wenn die Website ihre Algorithmen häufig ändert.

Simulation menschlichen Verhaltens

Eine weitere Täuschungsmethode ist die Simulation menschlichen Verhaltens. Du kannst willkürliche Verzögerungen in deinen Skripten einbauen, den User-Agent ändern, bidirektionale Interaktionen emulieren und sogar Mausbewegungen mit Selenium simulieren:


from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time

driver = webdriver.Chrome()
driver.get('https://example.com')

# Mausbewegung simulieren
actions = ActionChains(driver)
element = driver.find_element_by_id('button')
actions.move_to_element(element)
actions.perform()

# Verzögerung zur Simulation natürlicher Interaktion
time.sleep(2)

# Aktion ausführen
element.click()
    

Mehr über Selenium erfährst du in den nächsten Lektionen.

Verwendung dynamischer IPs und Proxies

Du kannst auch Proxy-Server verwenden, um die IP-Adresse zu ändern, von der aus Anfragen gesendet werden. Das kann helfen, Einschränkungen bei der Anzahl der Anfragen von einer einzelnen IP zu umgehen. Es gibt dafür Dienste wie Bright Data und Smartproxy.


import requests

proxy = {
  "http": "http://123.456.789.012:8080",
  "https": "http://123.456.789.012:8080",
}

response = requests.get('https://example.com', proxies=proxy)
print(response.content)
    

3. Wichtige Hinweise

Die Umsetzung von Anti-Bot-Umgehungsmethoden erfordert Wissen und Experimentieren. Es ist wichtig, sich daran zu erinnern, dass nicht alle Methoden legal oder von der Website toleriert werden. Überprüfe immer, was in der "robots.txt" erlaubt ist, und halte dich an die Nettiquette beim Web-Scraping, um eine Überlastung der Server zu vermeiden. Das bewahrt dich nicht nur vor rechtlichen Problemen, sondern zeigt auch Respekt vor der Arbeit anderer.

Starte niemals ernsthafte Parser mit deiner eigenen Heim-IP. Beim Übungs-Scraping passiert dir nichts, aber wenn dein Skript versehentlich einen Server durch das Senden mehrerer Tausend Anfragen gleichzeitig lahmlegt, könnten dir Fragen gestellt werden. Und auf diese Fragen werden Leute bestehen.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION