Web-Scraping in großem Maßstab
(incolumitas.com)<p>- Wenn man einen Dienst baut, der Google-Suchen in Millionenhöhe ausführt, braucht man eine Alternative, die nicht blockiert wird<br />
- Am einfachsten ist die Nutzung kostenpflichtiger Proxys, aber das ist ziemlich teuer <br />
→ Deshalb ein unterhaltsamer Artikel, in dem der Autor detailliert erklärt, was er selbst ausprobiert hat<br />
<br />
- Zunächst wurde AWS Lambda + Puppeteer verwendet <br />
→ AWS bietet weltweit 16 Regionen, und wenn man Lambda dreimal ausführt, wird eine neue IP zugewiesen <br />
→ Wenn man gleichzeitig 1000 Lambdas ausführt, nutzt man etwa 250 öffentliche IPs<br />
→ 16 Regionen * 250 ergibt 4000 IP-Adressen, und das reicht aus, um wöchentlich Google-Suchen im Millionenbereich auszuführen <br />
→ Auch auf GCP ausprobiert, und kurioserweise blockiert Google die IPs seiner eigenen Cloud aggressiver als die von AWS<br />
→ Das bezieht sich auf 2019–2020 und kann sich inzwischen geändert haben <br />
<br />
- Diese Methode kann zum Scraping von Google/Bing/Amazon usw. verwendet werden, hat aber Grenzen<br />
→ Wenn Anti-Bot-Firmen wie DataDome, Akamai oder Imperva eingesetzt werden, ist sie nicht anwendbar <br />
→ Über sehr unterschiedliche Methoden des Browser-Fingerprintings wird erkannt, ob es sich um einen Bot handelt<br />
→ Google Picasso, Font/TLS/WebGL Fingerprinting..<br />
→ Tatsächlich nutzen die meisten großen Scraping-Dienste Cloud + Docker-Container und sind daher leicht zu identifizieren<br />
<br />
- Schwer erkennbar und skalierbar: eine Scraping-Infrastruktur <br />
→ Zwei Regeln für erfolgreiches Scraping <br />
1. Browser-Einstellungen nicht vortäuschen <br />
2. Am wichtigsten ist, Browser-Einstellungen nur dann vorzutäuschen, „wenn es wirklich niemand bemerkt“<br />
→ Daraus folgt: Am besten verwendet man einfach „echte Geräte“<br />
⇨ 500 günstige Android-Geräte von verschiedenen Herstellern kaufen und günstige Datentarife buchen<br />
⇨ Auf mehrere Städte verteilen (in der Nähe von Antennen)<br />
⇨ Open Source wie DeviceFarmer/stf nutzen, um die Geräte gleichzeitig zu steuern <br />
⇨ Ein leichtgewichtiges OS wie Android Go installieren und alle 5 Minuten in den Flugmodus wechseln, um ständig neue IP-Adressen zu erhalten<br />
⇨ „4G carrier grade NAT“: 4G-Carrier-Grade-NAT wurde entwickelt, um die Erschöpfung von IPv4-Adressen zu verhindern; da Hunderttausende sich eine IP teilen, ist Blockieren praktisch unmöglich<br />
→ Man muss allerdings 500 Android-Geräte kaufen, einen Installationsort haben und die Hardware warten, also ist das ziemlich mühsam <br />
<br />
- Verbesserung: Android emulieren <br />
→ Statt Android-Geräte zu kaufen, könnte man Android-X8, Bluestacks oder den Android Studio Emulator verwenden?<br />
→ Proxidize ermöglicht den Aufbau von 4G-Mobil-Proxys<br />
→ 50 4G-Dongles in einem Server installieren<br />
→ Auf jedem Server 50–100 Android-Geräte emulieren <br />
→ Diese Stationen in 5 Städten aufstellen <br />
→ Diese Stationen mit soliden Kommandos verwalten </p>
12 Kommentare