ciemne logo proxyscrape

Używanie przeglądarek bezgłowych i serwerów proxy do skrobania dowolnej strony internetowej

Proxy, Scraping, Październik-01-20215 minut czytania

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

Kiedy słyszysz "przeglądarka bezgłowa", jestem pewien, że nie jest to znajomy gadżet technologiczny, z którym mogłeś się zetknąć w swoim codziennym życiu, chyba że wiesz głęboko, jak technicznie działają przeglądarki.

Większość z was zna osobliwe przeglądarki, takie jak Google Chrome, Firefox, Safari itp. Jedyną różnicą jest to, że przeglądarki bezgłowe to te osobliwe przeglądarki bez głów. W następnej sekcji dowiemy się, co to oznacza, a także jakie są ich zalety.

Czym jest przeglądarka bezgłowa?

Czy możesz sobie wyobrazić, jak wyglądałoby Twoje życie, gdyby Google Chrome lub Firefox nie miały GUI? Jeśli nie jesteś inżynierem oprogramowania lub kimś o wysokim kalibrze technologicznym, nie będziesz zawracać sobie głowy ich używaniem.

Dlatego przeglądarka bezgłowa działa bez fantazyjnych przycisków, ikon, pasków przewijania i łączy, które umożliwiają nawigację z jednej lokalizacji do drugiej. Jedynym sposobem na nawiązanie komunikacji z przeglądarką bezgłową jest użycie interfejsu wiersza poleceń przez sieć. 

Technicznie rzecz biorąc, przeglądarka bezgłowa miałaby interpreter JavaScript, komponent sieciowy, układ i silniki renderujące bez GUI.

Można więc zadać pytanie, po co komu przeglądarka bezgłowa, skoro ten sam efekt można osiągnąć za pomocą przeglądarki z graficznym interfejsem użytkownika?

Poniżej znajdziesz odpowiedź na to pytanie.

Dlaczego warto korzystać z przeglądarki headless?

Cóż, po pierwsze, przeglądarki headless są stosunkowo szybsze niż zwykłe przeglądarki. Wynika to przede wszystkim z braku ładowania CSS, Javascript i HTML, tak jak robią to zwykłe przeglądarki. Wykorzystują one również mniej pamięci w porównaniu do standardowych przeglądarek przy znacznie mniejszej ilości zasobów hostingowych.

Ponadto, przeglądarki bezgłowe oszczędzają produktywność i czas, automatyzując testowanie, jakość i ogólny rozwój aplikacji internetowej lub mobilnej. Co więcej, przeglądarki bezgłowe mogą monitorować wydajność aplikacji sieciowych i automatyzować proces renderowania i przechwytywania obrazu w celu automatycznego sprawdzania układu.

Następnie przechodząc do skrobania stron internetowych, przeglądarki bezgłowe umożliwiają skrobanie stron internetowych bez ręcznego uruchamiania strony internetowej przed skrobaniem. Możesz od razu zeskrobać kod HTML witryny.

Dodatkowo, przeglądarki headless odgrywają istotną rolę w wynikach wyszukiwania Google. Ponieważ wyszukiwarki wymagają jedynie źródła HTML strony do indeksowania stron internetowych, przeglądarki bezgłowe umożliwiają to poprzez wykonywanie Javascript i wypełnianie treści w miejscu. Doprowadziło to również do szybkiego rozwoju przeglądarek headless.

Do czego służą przeglądarki headless?

Oto krótka lista zadań, które wykonuje przeglądarka headless:

Testowanie stron internetowych

Głównym celem korzystania z przeglądarki bezgłowej jest testowanie funkcjonalności aplikacji internetowych i funkcji interfejsu użytkownika. Może testować aplikacje internetowe poprzez automatyzację codziennych zadań testowych, takich jak wpisywanie danych w pola, wypełnianie formularzy, symulowanie obciążeń i przechodzenie przez całe przepływy pracy. Z drugiej strony, można zautomatyzować testy systemów pozbawionych graficznego interfejsu użytkownika.

Przeglądarki bezgłowe mogą również testować sposób interakcji użytkownika z komponentami UI/UX strony internetowej. Odbywa się to poprzez automatyzację kliknięć przycisków, przewijania, wyboru kolorów, typów czcionek i interakcji z układami stron internetowych. 

Testowanie układu strony obejmuje również identyfikację domyślnego rozmiaru strony internetowej i współrzędnych. 

Przeglądarki bezgłowe mogą wykonywać zrzuty ekranu stron internetowych i zapisywać je jako pliki PDF. Co więcej, oferują również testy wykonania JavaScript i Ajax.

Niektóre z innych podstawowych testów, które przeglądarka Headless może przetwarzać, obejmują przechwytywanie śladu osi czasu witryny w celu diagnostyki wydajności.

Skrobanie stron internetowych

Popularność przeglądarek bezgłowych wynika nie tylko z testowania aplikacji internetowych, ale także ze sporej ilości web scrapingu. Pozwalają one web scraperom na zbieranie danych z nawet najbardziej wymagających witryn docelowych poprzez ładowanie i naśladowanie prawdziwej przeglądarki.

Taka ekstrakcja eliminuje potrzebę stosowania narzędzi do ekstrakcji HTML w celu skrobania danych, co stało się wyzwaniem ze względu na popularność JavaScript. Niektóre z obaw związanych z używaniem takich narzędzi do ekstrakcji to asynchroniczne ładowanie, odciski palców przeglądarki i nieskończone przewijanie.

Automatyzacja zadań

W pierwszym punkcie powyżej omówiliśmy automatyzację zadań przy użyciu przeglądarek bezgłowych związanych z testowaniem aplikacji internetowych. Tak więc jedynym dodatkiem do automatyzacji jest możliwość wykorzystania przeglądarek bezgłowych do automatyzacji interakcji z witryną w celu naśladowania wielu przeglądarek na jednym komputerze bez powodowania zapychania zasobów.

Jakie są rodzaje przeglądarek headless?

Istnieje kilka przeglądarek bezgłowych. Jako twórca stron internetowych musisz wypróbować różne smaki przeglądarek bezgłowych, aby uzyskać najlepszą kombinację do automatyzacji przypadków testowych i skrobania stron internetowych.

Dowiedzmy się, czym one są:

Przeglądarka Google Chrome Headless (wersja 59 lub nowsza)

Oparta na projekcie open-source Google Chromium, jest lekką przeglądarką bezgłową. Obsługuje JavaScript i posiada licencję BSD.

Posiada interfejs wiersza poleceń do natychmiastowego skanowania i pobierania danych ze stron internetowych. Ponadto zużywa mniej pamięci i zawiera innowacyjne funkcje, przyjazne dla użytkownika narzędzia do tworzenia stron internetowych oraz specyficzne narzędzia przyjazne dla programistów. Headless Chrome działa na wszystkich platformach, w tym Windows, Mac OS X i Linux.

Programiści internetowi często używają go do pobierania danych ze stron internetowych, robienia zrzutów ekranu ze stron internetowych i tworzenia plików PDF ze stron internetowych. Co bardziej fascynujące w headless chrome, to fakt, że można również skrobać dane i obrazy bez ładowania GUI przeglądarki.

Deweloperzy wykorzystują również przeglądarki headless do testowania różnych poziomów nawigacji, aby upewnić się, że użytkownicy urządzeń mobilnych i stacjonarnych mogą z łatwością nawigować.

Puppeteer i Selenium to dwa najpopularniejsze narzędzia kontrolujące bezgłowego Chrome'a. Jak wiadomo, Selenium zyskało już sławę na arenie testowej. Z drugiej strony, Puppeteer wykorzystuje serwery proxy do indeksowania stron, klikania komponentów i pobierania danych.

HtmlUnit

HtmlUnit to bezgłowa przeglądarka opracowana w Javie w celu zautomatyzowania interakcji strony internetowej z użytkownikami. Ta przeglądarka jest idealna do testowania stron internetowych lub pobierania z nich informacji. Jest najszybsza w instalacji w porównaniu do innych.

HTMLUnit może być również używany do tworzenia i testowania funkcji witryny e-commerce, takich jak bezpieczeństwo witryny, przesyłanie formularzy, nawigacja itp. Jako programista możesz go używać do uwierzytelniania HTTP, wydajności strony HTTPS, wydajności nagłówków HTTP, przekierowywania linków do innych stron internetowych oraz wypełniania formularzy i procesów przesyłania. 

Przeglądarka Mozilla Firefox Headless Browser (wersja 56 lub nowsza)

Bezgłowa wersja Firefoksa jest dostępna w wersji 56 lub nowszej. Umożliwia ona programistom wykonywanie kilku interfejsów API jednocześnie. W ten sposób nie trzeba używać wielu narzędzi symulacyjnych do testowania związanego z tworzeniem stron internetowych.

W związku z tym można połączyć dowolne sterowniki sieciowe, takie jak Selenium, Slimmer JS i W3C WebDriver, z bezgłową wersją Firefoksa do testów automatyzacji przeglądarki internetowej. Selenium jest zalecanym sterownikiem do prowadzenia testów i procesów automatyzacji w bezgłowej wersji Firefoksa, spośród trzech sterowników internetowych, o których wspomniałem.

PhantomJS Webkit

Phantom JS to bezgłowa przeglądarka WebKit o otwartym kodzie źródłowym, w której można uruchamiać skrypty. Działa na interfejsach API JavaScript, PHP, Objective-C, C#, Python, Java, Haskell, Ruby i R przy użyciu 3-Clause i BSD, chociaż PhantomJS nie jest utrzymywany. 

Phantom JS zapewnia natywną obsługę operacji tworzenia stron internetowych, takich jak manipulowanie DOM, SVG, selektory CSS, Canvas i JSON w szybkiej fazie. Z drugiej strony zarządza wieloma złożonościami w testach automatyzacji przeglądarki internetowej i procesach poprzez komunikację za pośrednictwem interfejsu wiersza poleceń.

Programiści często używają phantom JS do przechwytywania zrzutów ekranu stron internetowych, przewidywania zachowań, wielopoziomowej nawigacji testowej i interakcji z wieloma typami asercji.

Korzystanie z przeglądarki headless w celu uniknięcia umieszczenia na czarnej liście lub zbanowania

Jak już wcześniej zauważyłeś, jednym z praktycznych zastosowań przeglądarek bezgłowych jest skrobanie stron internetowych. W tej sekcji dowiesz się, w jaki sposób możesz zapobiec umieszczeniu na czarnej liście lub zablokowaniu podczas skrobania przy użyciu przeglądarki bezgłowej.

Gdy narzędzia takie jak Selenium używają przeglądarki bezgłowej, takiej jak Google Chrome headless lub Firefox headless do pobierania danych, dla docelowej strony internetowej będzie to wyglądać jak robot indeksujący witrynę, a nie człowiek.

Na przykład, ponieważ większość stron internetowych jest zaprogramowana w językach wysokiego poziomu, takich jak PHP, mogą one wykrywać współczynnik klikalności. Oznacza to, że może stwierdzić, czy użytkownik kliknął przycisk, aby przejść do innej strony w witrynie, czy po prostu wszedł na adres URL bez klikania przycisku, ale z linkiem, który się z nim łączy.

Jako programista możesz kodować narzędzia takie jak Selenium, aby wpisywać, klikać lub przewijać dowolną stronę internetową podczas korzystania z przeglądarki bezgłowej. W ten sposób dla docelowej strony internetowej staje się jasne, że dostęp do niej uzyskuje człowiek, a nie robot.

Korzystanie z Selenium z przeglądarką headless może mieć jednak pewne wady. Największym zmartwieniem może być niska prędkość podczas skrobania stron internetowych. Niemniej jednak, ta powolność może być nieistotna w porównaniu do innych zalet przeglądarek bezgłowych omówionych w powyższej sekcji "Dlaczego warto używać przeglądarki bezgłowej?".

Z drugiej strony, nie ma to wpływu na szybkość skrobania strony internetowej; jest to po prostu kwestia przełączania się między stronami. Ogólnie rzecz biorąc, skrobanie strony internetowej za pomocą przeglądarki bezgłowej jest warte wypróbowania, gdy można odrzucić nieistotne wady.

Jak używać obrotowych serwerów proxy w przeglądarkach headless?

W tej sekcji dowiesz się, dlaczego rotacyjne serwery proxy są potrzebne do scrape'owania za pomocą przeglądarek headless.

Podczas pobierania danych ze strony internetowej przy użyciu serwera proxy i przeglądarki bezgłowej można pobierać dane anonimowo, bez ograniczania adresu IP użytkownika przez serwer strony internetowej.

Możesz uzyskać dostęp i skrobać dane ze stron internetowych z treściami z ograniczeniami geograficznymi za pomocą rotacyjnego serwera proxy. W tym celu można skorzystać z rezydencjalnej rotacyjnej puli pro xy dostarczanej przez ProxyScrape, dzięki czemu można skrobać dane z adresów IP z wielu lokalizacji bez blokowania przez docelową witrynę. Co więcej, można skrobać dane produktów z platform handlu elektronicznego, takich jak na przykład Amazon, przy znacznej liczbie żądań.

ProxyScrape Obrotowe adresy IP pozwalają na uruchomienie kilku sesji na stronie internetowej. To z kolei pomogłoby obejść ogólne ograniczenia IP, które blokują mnóstwo żądań danych.

Rotacja serwerów proxy pomogłaby również ominąć bany, które pojawiają się, gdy próbujesz zautomatyzować zadania za pomocą przeglądarek bezgłowych.

Wnioski

Teraz wiesz już, czym są przeglądarki bezgłowe, kiedy i dlaczego są używane oraz jakie są ich rodzaje. Dotknęliśmy również tego, w jaki sposób unikają blokad podczas skrobania. Korzystanie z obrotowych serwerów proxy jeszcze bardziej przyspieszy proces skrobania, ponieważ zapewnia anonimowość i wiele innych korzyści.

Podsumowując, mamy nadzieję, że wdrożysz mechanizmy wspomniane w tym artykule. Musisz to zrobić, gdy masz do czynienia z web scrapingiem przy użyciu przeglądarki headless.