donker proxyscrape logo

Gebruik Headless Browsers en Proxies om elke website te scrapen

Proxies, Schrapen, Okt-01-20215 min gelezen

When you hear  “Headless browser,” I’m sure it is not a familiar tech gadget that you may have encountered in your everyday lives unless you know deep down how browsers function technically. Most of you are familiar with peculiar browsers such as Google Chrome, Firefox, Safari, etc. So the only difference is that headless browsers

Als je "Headless browser" hoort, weet ik zeker dat het geen bekend technisch snufje is dat je in je dagelijks leven bent tegengekomen, tenzij je diep van binnen weet hoe browsers technisch functioneren.

De meesten van jullie zijn bekend met eigenaardige browsers zoals Google Chrome, Firefox, Safari, enz. Het enige verschil is dat headless browsers die eigenaardige browsers zijn zonder hun hoofd. We zullen in de volgende sectie onderzoeken wat dit betekent en wat hun voordelen zijn.

Wat is een headless browser?

Kun je je voorstellen hoe je leven zou zijn als Google Chrome of Firefox geen GUI had? Tenzij je een Software Engineer bent of iemand met een hoog technisch kaliber, zul je niet de moeite nemen om het te gebruiken.

Daarom werkt een headless browser zonder fancy knoppen, iconen, schuifbalken en links die navigatie van de ene naar de andere locatie mogelijk maken. De enige manier om communicatie tot stand te brengen met een headless browser is dus door gebruik te maken van een opdrachtregelinterface via een netwerk. 

Technisch gezien zou een headless browser een JavaScript interpreter, netwerkcomponent, layout en rendering engines hebben zonder GUI.

Dan kun je je afvragen wat iemand zou winnen met een headless browser als je hetzelfde resultaat kunt bereiken met een browser met GUI.

Laten we het antwoord hieronder zoeken.

Waarom een headless browser gebruiken?

Ten eerste zijn headless browsers relatief sneller dan gewone browsers. Dit is voornamelijk het gevolg van het feit dat ze geen CSS, Javascript en HTML laden zoals gewone browsers doen. Ze gebruiken ook minder geheugen in vergelijking met de standaard browsers met aanzienlijk minder hostingbronnen.

Bovendien besparen headless browsers uw productiviteit en tijd door het testen, de kwaliteit en de algemene ontwikkeling van een web- of mobiele app te automatiseren. Bovendien kunnen headless browsers de prestaties van netwerktoepassingen controleren en het renderen en vastleggen van afbeeldingen automatiseren voor geautomatiseerde lay-outcontroles.

Dan komen we bij web scraping. Met de headless browsers kun je websites scrapen zonder de website handmatig te starten voor het scrapen. Je kunt meteen de HTML van de website scrapen.

Bovendien spelen headless browsers een belangrijke rol in de zoekresultaten van Google. Omdat zoekmachines alleen de HTML-bron van een pagina nodig hebben om webpagina's te indexeren, maken de headless browsers dit mogelijk door Javascript uit te voeren en de inhoud op zijn plaats te vullen. Dit heeft ook geleid tot een snelle ontwikkeling in headless browsers.

Waar worden headless browsers voor gebruikt?

Hier is een korte lijst van taken die headless browsers uitvoeren:

Website testen

Het primaire doel van het gebruik van een headless browser is het testen van de functionaliteit van webapplicaties en UI-functies. Je kunt webapps testen door alledaagse testtaken te automatiseren, zoals het typen van gegevens in velden, het invullen van formulieren, het simuleren van belastingen en het doorlopen van hele workflows. Aan de andere kant kun je de tests automatiseren voor systemen die geen GUI hebben.

Headless browsers kunnen ook testen hoe de gebruiker omgaat met UI/UX componenten van een website. Dit wordt gedaan door het automatiseren van knopklikken, scrollen, kleurselecties, lettertypen en interacties met lay-outs van webpagina's. 

Het testen van een paginalay-out omvat ook het identificeren van de standaardgrootte van een webpagina en coördinaten. 

Headless browsers kunnen schermafbeeldingen maken van webpagina's en deze opslaan als PDF. Bovendien bieden ze ook JavaScript- en Ajax-tests.

Enkele van de andere primaire testen die een Headless browser kan uitvoeren, zijn het vastleggen van de tijdlijntrace van een website voor prestatiediagnostiek.

Schrapen van het web

De populariteit van Headless browsers komt niet alleen voort uit het testen van webapps, maar ook uit een behoorlijke hoeveelheid web scraping. Ze stellen webscrapers in staat om gegevens te verzamelen van zelfs de meest uitdagende websites door een echte browser te laden en na te bootsen.

Dergelijke extractie elimineert de noodzaak voor HTML-extractieprogramma's om gegevens te scrapen, wat een uitdaging is geworden door de populariteit van JavaScript. Enkele van de problemen met het gebruik van dergelijke extractieprogramma's zijn asynchroon laden, browser fingerprinting en oneindig scrollen.

Taak automatisering

In het eerste punt hierboven behandelden we taakautomatisering met behulp van headless browsers met betrekking tot het testen van webapps. De enige toevoeging aan de automatisering is dus de mogelijkheid om headless browsers te gebruiken voor het automatiseren van website-interactie om meerdere browsers op één machine na te bootsen zonder dat dit leidt tot resource hogging.

Wat zijn verschillende soorten headless browsers?

Er bestaan verschillende headless browsers. Als webontwikkelaar moet je verschillende smaken headless browsers uitproberen om de beste combinatie te krijgen voor het automatiseren van testgevallen en web scraping.

Laten we eens kijken wat ze zijn:

Google Chrome Headless Browser (versie 59 of hoger)

Het is gebaseerd op het open-source Google Chromium project en is een lichtgewicht headless browser. Het ondersteunt JavaScript en heeft een BSD-licentie.

Het heeft een opdrachtregelinterface voor het direct scannen en schrapen van websitegegevens. Daarnaast verbruikt het minder geheugen en bevat het innovatieve functies, gebruiksvriendelijke tools voor webontwikkeling en specifieke tools voor ontwikkelaars. Headless Chrome draait op alle platforms, waaronder Windows, Mac OS X en Linux.

Webontwikkelaars gebruiken het vaak om gegevens van websites te scrapen, screenshots van websites te maken en PDF-bestanden van webpagina's te maken. Wat nog fascinerender is aan headless chrome is dat je ook gegevens en afbeeldingen kunt scrapen zonder de GUI van de browser te laden.

Ontwikkelaars gebruiken ook headless browsers om verschillende navigatieniveaus te testen om ervoor te zorgen dat gebruikers op mobiele en desktopapparaten probleemloos kunnen navigeren.

Dan zijn Puppeteer en Selenium twee van de meest gebruikte tools die headless Chrome aansturen. Zoals je weet, heeft Selenium al naam gemaakt in de testarena. Puppeteer daarentegen gebruikt proxies om pagina's te crawlen, op onderdelen te klikken en gegevens te downloaden.

HtmlUnit

HtmlUnit is een headless browser ontwikkeld in Java om website-interactie met gebruikers te automatiseren. Deze browser is ideaal voor het testen van websites of het ophalen van informatie van websites. Hij is het snelst te installeren in vergelijking met de anderen.

HTMLUnit kan ook worden gebruikt voor het maken en testen van e-commerce website functies zoals site beveiliging, formulierverzending, navigatie, etc. Als ontwikkelaar kun je het gebruiken voor HTTP authenticaties, HTTPS pagina prestaties, HTTP header prestaties, link omleiding naar andere websites en het invullen van formulieren en indieningsprocessen. 

Mozilla Firefox Browser zonder hoofd (versie 56 of hoger)

De headless versie van Firefox is beschikbaar in versie 56 of hoger. Het stelt ontwikkelaars in staat om verschillende API's tegelijkertijd uit te voeren. Daarbij hoef je niet meerdere simulatietools te gebruiken voor het testen die bij de webontwikkeling horen.

Daarom kun je alle webstuurprogramma's, zoals Selenium, Slimmer JS en W3C WebDriver, combineren met headless Firefox voor webbrowser automatiseringstests. Van de drie webstuurprogramma's die ik heb genoemd, is Selenium het aanbevolen stuurprogramma voor het aansturen van test- en automatiseringsprocessen in de headless versie van Firefox.

PhantomJS Webkit

Phantom JS is een open-source WebKit headless browser waarop je scripts kunt uitvoeren. Het draait op JavaScript, PHP, Objective-C, C#, Python, Java, Haskell, Ruby en R API's met gebruik van de 3-Clause en BSD, hoewel PhantomJS niet wordt onderhouden. 

Phantom JS biedt native ondersteuning voor webontwikkelingsactiviteiten zoals DOM-manipulatie, SVG, CSS-selectors, Canvas en JSON in een snelle fase. Aan de andere kant beheert het veel complexiteiten in webbrowser automatiseringstests en -processen door communicatie via een opdrachtregelinterface.

Ontwikkelaars gebruiken fantoom JS vaak om schermafbeeldingen van webpagina's te maken, gedragsvoorspellingen te doen, op meerdere niveaus te navigeren en te interageren met meerdere soorten beweringen.

Een browser zonder kop gebruiken om niet op de zwarte lijst te komen of verbannen te worden

Zoals je al eerder hebt ontdekt, is web scraping een van de praktische toepassingen van headless browsers. In dit onderdeel wordt uitgelegd hoe u kunt voorkomen dat u op de zwarte lijst terechtkomt of geblokkeerd wordt tijdens het scrapen met een headless browser.

Wanneer tools zoals Selenium een headless browser zoals Google Chrome headless of Firefox headless gebruiken om de gegevens te scrapen, lijkt het voor de doelwebsite eerder een robot die een website crawlt dan een mens.

Omdat de meeste websites bijvoorbeeld zijn geprogrammeerd met high-level talen zoals PHP, kunnen ze de doorklikratio detecteren. Dit betekent dat het kan zien of een gebruiker op een knop heeft geklikt om naar een andere pagina binnen een site te navigeren of dat hij alleen maar naar de URL is gegaan zonder op de knop te klikken, maar met een link die ernaar verwijst.

Als ontwikkelaar kun je tools zoals Selenium coderen om te typen, klikken of scrollen door een website wanneer je een headless browser gebruikt. Zo wordt het voor de bestemmingswebsite duidelijk dat een mens de website bezoekt en geen robot.

Er kunnen echter nadelen kleven aan het gebruik van Selenium met een headless browser. De grootste zorg zou een trage snelheid zijn tijdens het scrapen van de webpagina's. Deze traagheid zou echter verwaarloosbaar kunnen zijn in vergelijking met andere voordelen van headless browsers. Deze traagheid zou echter verwaarloosbaar kunnen zijn in vergelijking met andere voordelen van headless browsers die besproken zijn in de bovenstaande sectie, "Waarom een headless browser gebruiken?".

Aan de andere kant heeft het geen invloed op de snelheid waarmee je de website scrapt; het is gewoon een kwestie van schakelen tussen pagina's. In het algemeen is het scrapen van een website met een headless browser het uitproberen waard als je de verwaarloosbare nadelen buiten beschouwing kunt laten.

Hoe roterende proxies gebruiken met headless browsers

In deze sectie zul je begrijpen waarom je roterende proxies nodig hebt om te scrapen met headless browsers.

Wanneer u gegevens van een website scrapeert met behulp van een proxy server en een headless browser, kunt u gegevens anoniem scrapen zonder dat de server van de website uw IP-adres beperkt.

Je kunt gegevens van websites met geo-beperkte inhoud openen en scrapen met behulp van een roterende proxy. Hiervoor kun je de residentiële roterende proxy pool gebruiken die wordt aangeboden door ProxyScrape, zodat je kunt scrapen met IP's van meerdere locaties zonder dat de doelwebsite je blokkeert. Verder kun je productgegevens scrapen van e-commerce platforms zoals Amazon, bijvoorbeeld, met een aanzienlijk aantal verzoeken.

ProxyScrape Met roterende IP-adressen kun je meerdere sessies draaien op een website. Dit zou op zijn beurt helpen om algemene IP-beperkingen te omzeilen die massa's gegevensverzoeken blokkeren.

Het draaien van proxies zou je ook helpen om bans te omzeilen die optreden wanneer je taken probeert te automatiseren met headless browsers.

Conclusie

Nu je weet wat headless browsers zijn, wanneer en waarom ze worden gebruikt en wat de verschillende types zijn. We hebben ook besproken hoe ze blokkades vermijden tijdens het scrapen. Als je Rotating proxies gebruikt, zou dat je scrapingproces nog meer stimuleren omdat het anonimiteit en tal van andere voordelen met zich meebrengt.

Tot slot hopen we dat je de mechanismen uit dit artikel zult implementeren. Je moet dit doen wanneer je geconfronteerd wordt met web scraping met behulp van een headless browser.