Wenn man Web Scraping wie die großen Unternehmen betreiben will (2021)
(incolumitas.com)- Mit AWS Lambda und Headless Chrome allein ließen sich zwar pro Woche Millionen von Google-SERPs sammeln, doch bei stark geschützten Websites stößt eine cloudbasierte Bot-Architektur schnell an ihre Grenzen
- Durch erneute Lambda-Aufrufe und die Nutzung mehrerer Regionen konnte man bei 16 Regionen etwa
16 * 250 = 4000öffentliche IPs gleichzeitig verwenden; für weniger streng geschützte Ziele reichte das aus - Anti-Bot-Anbieter wie DataDome, Akamai und Imperva verfolgen Unstimmigkeiten in Browser-Konfigurationen, Automatisierungsspuren und Fingerprint-Informationen; die eigentliche Schwierigkeit liegt weniger in der Erkennung selbst als darin, die False-Positive-Rate niedrig zu halten
- Als weniger leicht erkennbare Architektur wird statt Docker oder Cloud-Servern der Einsatz echter Android-Geräte und mobiler IPs vorgeschlagen; 4G-/5G-/LTE-IPs werden in Großstädten von vielen legitimen Nutzern geteilt und sind daher schwer zu sperren
- Eine echte Gerätefarm bedeutet jedoch Gerätekauf, angemietete Flächen in verschiedenen Städten, Wartung vor Ort und Hardwareausfälle; auch Android-Emulatoren bergen weiterhin das Risiko der Emulationserkennung
Massen-Scraping-Architektur mit AWS Lambda
- Beim Betrieb eines früheren Scraping-Dienstes wurden pro Woche bis zu mehrere Millionen Google-SERPs gesammelt, ohne Proxy-Anbieter wie Brightdata, Packetstream oder Oxylabs zu nutzen
- Man hielt es für schwierig, anderen Kunden zu vertrauen, die dieselbe Proxy-Bandbreite teilen
- Nicht-DoS-Scraping öffentlicher Informationen sei in Ordnung, aber man zog eine klare Grenze zu Webangriffen wie Ad Fraud, Social-Media-Spam, automatischer SQL Injection und XSS
- Auch die Kosten von Proxy-Diensten waren ein Faktor
- Die tatsächliche Umsetzung war eine Funktion, die Headless Chrome in AWS Lambda packte und mit puppeteer-extra sowie chrome-aws-lambda den Browser 300 Sekunden lang ausführte
- Da Google für die eigene Suchmaschine keine besonders starke Bot-Abwehr betreibt und hauptsächlich IP-basierte Rate Limits einsetzt, wäre es für Google-SERPs allein möglicherweise sogar mit
curlgegangen - Bei Lambda erhielt man nach drei Funktionsaufrufen eine neue öffentliche IP; bei 1000 gleichzeitigen Funktionsaufrufen kam man laut Aussage auf etwa 250 öffentliche IPs
- Mit 16 Regionen ergab sich die Rechnung, dass gleichzeitig etwa
4000öffentliche IPs nutzbar waren - Es waren zwar geteilte Rechenzentrums-IPs, aber sie reichten aus, um pro Woche mehrere Millionen Google-SERPs zu sammeln
- Mit 16 Regionen ergab sich die Rechnung, dass gleichzeitig etwa
- Auch Google Cloud Platform wurde ausprobiert, doch Google blockierte Traffic aus der eigenen Cloud-Infrastruktur stärker als AWS-Traffic
- Diese Erfahrung bezieht sich auf 2019 und 2020; die Lage kann sich seitdem geändert haben
Warum Cloud-Bots blockiert werden
- Eine Lambda-basierte Architektur kann bei Zielen funktionieren, die Scraping bis zu einem gewissen Grad erlauben, etwa Google, Bing oder Amazon; für stark geschützte Websites ist sie jedoch ungeeignet
- Anti-Bot-Anbieter wie DataDome, Akamai und Imperva suchen nach Browser-Fingerprints, Konfigurationsabweichungen und Spuren, die sich von einem von Menschen bedienten Browser unterscheiden
- Beispiele für Erkennungstechniken sind weit verbreitet
- Browser Red Pills
- Browser Based Port Scanning
- Google Picasso
- Font Fingerprinting
- TLS Fingerprinting
- WebGL Fingerprinting
- Erkennung der tatsächlichen IP über WebRTC
- Behavioral Classification
- Abfrage der Gyroscope API
- Fingerprinting über HTTP-Header, CSS Feature Queries und Fonts ohne JavaScript
- Es gibt sehr viele Methoden zur Bot-Erkennung, und nahezu jede Bot-Architektur ist in gewissem Maß anfällig für Erkennung
- Einen Bot zu bauen ist schwieriger als ihn zu erkennen; die größere Herausforderung für Anti-Bot-Anbieter besteht weniger darin, die meisten Bots zu erwischen, sondern eher darin, die False-Positive-Rate niedrig zu halten
Ökonomische Strukturen, die leicht erkannt werden
- Bot-Entwickler, die Scraping in großem Maßstab betreiben wollen, packen Browser häufig in Docker-Container und orchestrieren sie mit Docker Swarm oder Kubernetes
- Solche Bots werden oft bei Cloud-Anbietern wie Hetzner, AWS oder DigitalOcean gehostet
- Diese Architektur unterscheidet sich stark von der Umgebung menschlicher Nutzer
- Es ist nicht natürlich, dass ein normaler Nutzer Instagram in einem Docker-Container auf einem Hetzner-VPS durchsucht
- Als Regeln für erfolgreiches Scraping werden zwei Punkte genannt
- Die zweitwichtigste Regel: Nicht über die Browser-Konfiguration lügen
- Die wichtigste Regel: Nur dann über die Browser-Konfiguration lügen, wenn man dabei nicht erwischt wird
Echte Android-Gerätefarm
- Da es schwierig ist, obfuskierte Anti-Bot-Fingerprinting-Bibliotheken per Reverse Engineering zu analysieren, wird der Ansatz vorgeschlagen, echte Geräte für Scraping zu verwenden
- Die angenommene Architektur besteht darin, 500 günstige Android-Geräte zu kaufen und sie zur Fingerprint-Diversität aus etwa fünf Herstellern zu mischen
- Günstige Android-Geräte beginnen bei 58 US-Dollar pro Stück
- Beim Kauf von 100 Geräten auf einmal seien große Rabatte möglich
- Jedes Gerät bekommt einen günstigen Datentarif und wird mit DeviceFarmer/stf gesteuert
- Die Idee ist, jeweils 100 Geräte in fünf großen Städten wie London, Paris, Boston, Frankfurt und Los Angeles zu platzieren und dafür günstige Lagerflächen in der Nähe von Mobilfunkantennen zu mieten
- Auf den Geräten wird ein schlankes Android Go installiert, unnötige Komponenten werden entfernt, danach werden sie an die Stromversorgung angeschlossen
- Wenn man alle fünf Minuten den Flugmodus ein- und wieder ausschaltet, erhält man über 4G Carrier Grade NAT eine neue IP
- Mobile IP-Adressen werden in Großstädten von bis zu Hunderttausenden legitimen Nutzern geteilt und sind daher praktisch schwer zu sperren
- Als Beispiel wird angenommen, dass Instagram nicht 200.000 Menschen in LA blockieren würde, nur wegen einiger Spam-Nutzer
- Zitiert wird ein Ofcom-Dokument, dem zufolge das Blockieren einer IPv4-Adresse in einem CGN die gesamte Teilnehmerbasis beeinträchtigen kann
- Bei IPv6 sei der Adressraum so groß, dass die meisten Anti-Bot-Anbieter IPv6-Adressen kaum oder gar keine IP-Reputation zuweisen
Erkennungspunkte und Betriebsaufwand einer echten Gerätearchitektur
- Wenn echte Geräte den ganzen Tag auf dem Boden liegen, bleibt der Zustand ohne Rotation oder Bewegung bestehen; daher müssten die JavaScript-Events
deviceorientationunddevicemotionauf Kernel-Ebene gespooft werden- Websites können ohne Berechtigungsanfrage auf Rotations- und Beschleunigungsdaten von Android zugreifen
- Abgesehen von diesem Problem sei nicht klar, wie ein Bot-Erkennungssystem eine solche Architektur blockieren könnte
- Der Betriebsaufwand ist nicht gering
- Es müssen 500 Android-Geräte gekauft werden
- In großen Städten muss Lagerfläche gemietet werden, was Kosten verursacht
- In fünf Städten werden Personen benötigt, die Probleme in der Gerätefarm beheben
- Man muss mit Hardware umgehen, und es können laufend Probleme auftreten
- Eine solche Architektur wird zu einem großen Projekt; die Wartung kann mehrere Tausend Dollar kosten
Android-Emulatoren als Alternative
- Statt echter Android-Geräte seien Android-Emulatoren vermutlich die bessere Wahl
- Die Kosten lassen sich senken, aber Anti-Bot-Anbieter können eine Emulationsumgebung erkennen
- Es gibt mehrere mögliche Erkennungsmethoden
- Browserbasierte Red Pills können offenlegen, dass der Browser in einer Emulationsumgebung läuft
- Mit browserbasiertem Port-Scanning lassen sich Ports oder Dienste wie
adbfinden, die nur auf emulierten Android-Geräten laufen - Google kann für das gesamte Mobilgerät eine Werbe-ID setzen; fehlt diese ID oder ist sie immer gleich, kann das ein Verdachtssignal sein
- Mit Social Media Login Detection lässt sich prüfen, ob ein Gmail- oder YouTube-Konto angemeldet ist; auf Android kann das Fehlen eines Google-Logins verdächtig sein
- Darüber hinaus kann es viele weitere Techniken zur Erkennung emulierter Android-Geräte geben
- Android-Emulatoren sind wahrscheinlich unvollständig, und diese Unvollständigkeit kann über die umfangreichen JavaScript-APIs mobiler Browser sichtbar werden
- Dennoch wird der Emulationsansatz bevorzugt; vorgeschlagen wird eine Konfiguration mit einigen leistungsstarken Servern, an die 4G-Dongles angeschlossen sind
- proxidize.com bietet 4G-Mobile-Proxys an, doch Proxys sind als solche erkennbar; daher würde man 4G-Dongles lieber direkt mit Android-Emulatoren verwenden
- Die finale Architektur besteht aus regionalen Scraping-Stationen
- An einem geografischen Standort wird ein leistungsstarker Scraping-Server mit 50 angeschlossenen 4G-Dongles eingerichtet
- Auf jedem Server laufen 50 bis 100 emulierte Android-Geräte
- Solche Stationen werden in fünf großen Städten platziert
- Ein einfacher Command-and-Control-Server orchestriert die fünf Scraping-Stationen
1 Kommentare
Hacker-News-Meinungen
In den meisten Fällen sind diese Daten in einem rechtlich anerkennbaren Sinn nicht einmal wirklich „ihre“ Daten. Deshalb sind weder die Ethik des Web Scrapings noch die damit verbundenen Rechtsfragen so einfach. Ein Beitrag, den ich letzten Herbst dazu geschrieben habe, stieß auch hier auf Interesse: https://news.ycombinator.com/item?id=37264676
Am Ende hindern sie andere also daran, genau die Methoden zu nutzen, die sie selbst für ihr Wachstum verwendet haben.
Seit es menschliche Kommunikation gibt, funktionieren Gespräche doch immer so, oder? Die rechtlichen Fragen wirken dagegen wie ein Gewebe, das man gestrickt hat, um etablierte Unternehmen mit der Drohung staatlicher Gewalt zu schützen; nicht besonders neu, armselig, aber vorhersehbar. Im weiteren Sinn ist auch der Versuch, das als Frage des geistigen Eigentums zu verpacken und mit dem Schutz von Künstlern und Urhebern zu verknüpfen, logisch sehr holprig und lässt einen die Stirn runzeln.
Es gibt viele Web-Scraping-SaaS-Angebote und zugehörige Services, dazu Dutzende Anbieter von Residential Proxies. Die meisten Anti-Bot-Mechanismen entwickeln sich so schnell weiter, dass man selbst innerhalb klassischer Software-Engineering-Rollen ein ziemlich ordentliches Einkommen erzielen kann, wenn man sich ausschließlich auf die Umgehung von Anti-Bot-Technik spezialisiert. Wegen dieses Tempos ist es stabiler, bei einem Web-Scraping-Unternehmen zu arbeiten, als Web Scraping zum eigenen Beruf zu machen. Scraper werden projektweise bezahlt und sind langfristig unsicher; fortgeschrittenes Scraping erfordert operative Investitionen wie Residential Proxies und Servermiete, und niedrigpreisige Aufträge sind sehr schlecht bezahlt. Dass Brightdata eine Web-Scraping-Konferenz veranstaltet, zeigt schon, wie profitabel der Verkauf von Scraping-Services im großen Stil ist.
Ich frage mich, ob dafür häufig schlecht abgesicherte IoT-Geräte oder mit Malware infizierte Consumer-Hardware verwendet werden. Eine Zusammenarbeit mit ISPs, um an Residential IPs zu kommen, erscheint mir weder profitabel noch praktikabel; bei Residential-Proxy-Diensten scheint es daher nur ziemlich verdeckte Methoden zu geben.
Ich hatte keinen Hintergrund in diesem Bereich, aber wenn man zusammenfügte, womit die Unternehmen prahlten, war es nicht schwer, und es gab auch den praktischen Zweck, Sportwetten zu automatisieren. Auch mein eigentlicher Job lag ziemlich nah daran, und es half mir, Ende 20 schnell Programmieren zu lernen. Fast sofort bekam ich jedoch eine Flut von Anfragen von chinesischen Sneaker-Bot-Betreibern und von Leuten mit eigenartigem Englisch, das offenbar nicht ihre Muttersprache war. Ich nahm den Code nicht wegen rechtlicher Drohungen offline, sondern weil ich keine Kundenbetreuung machen oder für andere arbeiten wollte; die meisten Anfragen liefen auf „Wenn du die Arbeit machst, teilen wir den Gewinn“ hinaus, und es war schwer zu glauben, dass irgendjemand solche Angebote annimmt. Das Internet vergisst nicht, also könnten noch Teile des Codes im Umlauf sein, der Cyberfed-Akamai 0.8 bis 2.3 nachahmte. Wenn Code, den ich innerhalb von drei Jahren nach dem Programmierenlernen Mitte 20 hochgeladen hatte, funktionierte, sollten sich Cybersecurity-Firmen schämen, die für solche Produkte viel Geld verlangen. Ich hatte seit der 10. Klasse keine Mathematik mehr, und wegen ADHS konnte ich weder Videos noch Texte lange ansehen; ich habe nur von GitHub und ähnlichen Diensten abgeschrieben, bis es funktionierte. In dieser Branche werden vermutlich viele Schlangenöl-Lösungen verkauft.
Threat Actors nutzen Dienste wie Cloudflare, um den Zugriff auf bösartige Payloads zu blockieren. Für Kunden, die Brand Impersonation oder Credential Phishing finden und erkennen wollen, ist das ein großes Problem, aber Cloudflare hilft überhaupt nicht und kümmert sich schlicht nicht darum.
Interessanterweise sieht man hinter Akamai kaum Phishing. Da wir ebenfalls in diesem Bereich arbeiten, haben wir ein Interesse daran, solche Bedrohungen auch künftig erkennen zu können.
Es macht Spaß, weil man reale Probleme lösen und neue Wege finden muss, etwas zu tun. Bei Exploit-Entwicklung ist es genauso. Solche Leute sind keine Außenseiter, sondern normale Menschen, die tun, wofür sie Leidenschaft haben. Die Denkweise „Menschen, die etwas tun, das ich nicht mag, sind Außenseiter“ ist wirklich völlig seltsam.
Der Ablauf ist klar, es gibt keine Privacy-Risiken oder seltsamen Tricks, und wenn er fehlschlägt, dann wenigstens so, dass ein Mensch es sehen und melden kann. Das ist besser, als wenn es wie ein unbekannter Fehler aussieht.
Ich habe darüber nachgedacht, wie ich Ablehnungen handhaben soll; ein günstiges einzelnes Android-Gerät könnte diese Lücke vielleicht schließen.