In diesem Video lernen Sie, wie Sie:
- Ihren Crawler als ‚echten Benutzer‘ erscheinen lassen und nicht blockiert werden
- Die richtigen Tools für die Browserautomatisierung auswählen
- Selenium vs. Puppeteer, Vor- und Nachteile
- Selenium und Puppeteer einrichten, um mit Proxys zu arbeiten
- Proxy-Manipulation für einen automatisierten Crawler
- Ihren Proxy-Manager mit Selenium und Puppeteer einrichten
Wie wissen Websites, wenn Sie einen "Bot" oder "Crawler" verwenden?
In der Regel liegt es an Cookies, dem Browser-User-Agent und Ihrer IP.
Beim Abrufen oder Posten von Informationen auf einer Website speichert die besuchte Website Cookies in Ihrem Browser.
Die Website erkennt einen echten Browser, indem sie die IP-Adresse überprüft und die Anfrage-Header liest, die Informationen über den User-Agent enthalten.
Ein Mangel an Cookies oder der korrekte User-Agent kann dazu führen, dass die Website Sie daran hindert, Informationen abzurufen.
Beides kann programmiert werden, um sicherzustellen, dass dies nicht passiert.
Ihre IP ist jedoch das einzige, was nicht codiert werden kann, da sie Teil der Netzwerk-Infrastruktur ist.
Wir gehen zu ‚whoer.net‘ und überprüfen, welche Informationen mein Computer über das Web sendet.
Unser Browser unterstützt JavaScript und von diesem kann die Zielwebsite den Browser, das Betriebssystem, die Bildschirmfarben, die Bildschirmauflösung, die Flash-Version und die Java-Unterstützung sammeln.
WebRTC wird für die Echtzeitkommunikation von Browser zu Browser verwendet und ruft meine IP, den Port und das Protokoll ab, um sie mit den Netzwerkdaten zu vergleichen.
Außerdem kann die Uhrzeit Ihres Computers erfasst und mit der IP-Zeitzone verglichen werden.
Wir können auch den *Anfrage-Header* finden, der an die Zielwebsite im Browser-Console gesendet wird, indem wir F12 drücken und zum Netzwerk-Tab in Chrome gehen oder ctrl+R auswählen.
Wenn wir auf das Dokument klicken, finden wir die Header-Informationen und die Anfrage, die wir an whoer.net gesendet haben.
Der Anfrage-Header enthält die Cookies und den User-Agent, der den Browser-Typ und die Version angibt.
Zielwebsites, die meine PC-Informationen vergleichen und Sitzungen mit Cookies überprüfen, verlangen, dass wir bei der Übermittlung von Anfragen über eine API alle paar Anfragen ein neues Cookie bereitstellen.
Dies sowie den exakt gleichen User-Agent und manchmal sogar die accept-language.
Das liegt daran, dass ein fehlerhafter User-Agent oder das Fehlen eines User-Agent selbst eine Fehlermeldung von der Zielwebsite auslösen kann.
Wir können komplexe Scraping-Operationen verwalten, indem wir Automatisierungstools wie Selenium oder Puppeteer verwenden, die tatsächlich einen echten Browser öffnen, oder sogar einen Open-Source-Headless-Browser wie Chromium nutzen.
Browser sind ein Werkzeug, das wir verwenden können, wenn wir JS ausführen müssen oder keine komplexen Anfrageketten selbst schreiben möchten.
Der Nachteil ist, dass das Ausführen eines Browsers langsamer ist und mehr RAM benötigt als die Verwendung eines benutzerdefinierten Skripts.
Automatisierung auf einem echten Browser macht das Scraping einfacher, da wir uns nicht um das Sammeln einer Datenbank von Cookies kümmern müssen, um sie zu rotieren oder User-Agents zu korrigieren.
Dies wird meine Erfolgsquote bei Zielwebsites erhöhen, die danach suchen.
Jetzt denken Sie vielleicht, warum einen Headless-Browser?
Hauptsächlich, um das Scraping automatisch auszuführen.
Ein Headless-Browser hat keinen Flash Player und kein digitales Rechtemanagement, das mehr Informationen über meinen PC senden kann, und wir können meine Erfolgsquote leicht erhöhen, indem wir sie ganz weglassen.
Mit welchem Automatisierungstool sollten wir arbeiten?
Nun, das hängt von Ihren technischen Fähigkeiten und der Website ab, die Sie anvisieren.
Zum Beispiel werden wir Puppeteer, ein einfach zu bedienendes Automatisierungstool, mit Selenium vergleichen, das mehr technische Expertise erfordert.
Puppeteer, entwickelt von Google, ist einfach mit einem einzigen Befehl zu installieren: npm install puppeteer. Es unterstützt nur den Headless-Browser Chromium und basiert auf Node.
Sehr schnell können wir mit Puppeteer arbeiten und eine kurze Demo testen.
Andererseits unterstützt Puppeteer keine plattformübergreifende Automatisierung, während Selenium das flexibelste Tool in Bezug auf Automatisierung und Funktionalität ist.
Selenium unterstützt viele Browser, Betriebssysteme und Programmiersprachen wie Java, C#, Ruby, Python und JavaScript.
Selenium funktioniert auf den meisten Zielwebsites und kann für jedes vernünftige Szenario automatisiert werden.
Andererseits erfordert die Installation und Verwendung von Selenium einige technische Fähigkeiten im Hinblick auf das Verständnis von Webtechnologien und APIs.
Mit Selenium WebDriver können Sie Dateien hoch- oder herunterladen, mit Pop-ups arbeiten und Dialogbarrieren überwinden.
Zusammenfassend lässt sich sagen, dass sowohl Puppeteer als auch Selenium Desktop-Webanwendungen, responsive Seiten und JavaScript unterstützen.
Allerdings arbeitet Puppeteer nur mit Chrome und Chromium, während Selenium alle gängigen Browser wie Chrome, Firefox, Explorer und andere Headless-Browser unterstützt.
Wir möchten erwähnen, dass Puppeteer und Selenium OUT OF THE BOX keine nativen mobilen Anwendungen unterstützen.
Allerdings ermöglichen Appium, entwickelt von der JS Foundation, oder Selendroid, entwickelt von der eBay Software Foundation, die Automatisierung nativer mobiler Anwendungen.
Sowohl Selendroid als auch Appium erfordern Selenium und das Wissen, wie man mit der Selenium API und WebDriver arbeitet.