Image for Crawlery – wstęp do skanowania dużej liczby danych

Crawlery – wstęp do skanowania dużej liczby danych

Czas czytania:

Skanery sieciowe – „grzeczni”  użytkownicy stron internetowych, jest ich coraz więcej, przeglądają coraz więcej – nigdy nie narzekają pomimo, że odpowiadają za sporą część ruchu i wywołują wiele błędów.  W poszukiwaniu informacji powstaje coraz więcej skanerów sieciowych – głównie w celu otrzymania informacji jeszcze szybciej – a najlepiej szybciej niż konkurencja albo po prostu dla zbierania wszelkiej maści danych.

Przykłady zastosowań:

  • skaner zoptymalizowany pod kątem zamówień publicznych: skaner stron BIP gmin w Polsce w poszukiwaniu informacji o przetargach, remontach etc.
  • monitoring sieci społecznościowych,
  • system do wyszukiwania błędnych linków
  • skaner informacji handlowych/kontaktowych
  • monitoring sieci pod kątem badania sentymentu użytkowników do produktu/marki

W artykule skupimy się głównie na procesie pobierania danych. Czyli jak to zrobić optymalnie? Na początek musimy stworzyć założenia aplikacji:

  • pobieranie natychmiastowe
  • krótkie oczekiwanie na realizacje żądań
  • odporność na blokady IP
  • odporność na zabezpieczenia anty-botowe serwisów (tak, coraz więcej serwisów zaczyna się przed tym zabezpieczać chcąc uniknąć zeskanowania treści)
  • uniknięcie blokady DDOS
  • skanowanie z wielu lokalizacji
  • optymalizacja kosztowa

Z powyższej listy – wszystkie czynniki są tak samo ważne, ponieważ spełnienie ich jest niezbędne do poprawnego działania całego systemu.

Serwery

Jak każde środowisko – również tutaj musi być odporne na zagrożenia. W tym przypadku blokady nakładane przez odwiedzane serwisy. Na co zwrócić uwagę?

Typ serweraSpecyfikacjaZadanie
Parser
  • duże zasoby CPU (parsowanie)
  • przetwarzanie pobranych danych
  • przekazywanie linków do „Queue Manager” np, poprzez API / bazę danych
Queue Manager
  • dobre i stabilne połączenie internetowe wysokiej przepustowości
  • pobranie aktualnej kolejki
  • podział kolejki na paczki
  • przesyłanie żądań pobrania do serwerów „Downloader”
  • odpytywanie serwerów „Downloader” o pobrane dane
Downloader
  • wiele interfejsów ( obsługa wielu adresów IP w różnych geolokalizacjach)
  • dobre połączenie internetowe
  • niskie zasoby
  • duża liczba takich środowisk serwerowych
  • przyjmowanie żądań pobrania i kolejkowanie ich
  • pobieranie danych
  • zapisywanie pobranych danych
  • odpowiadanie na żądanie „Queue Manager” pobranymi danymi

Dodatkowe założenia

  1. Komunikaty są zaszyfrowane za pomocą istniejących systemów, a najlepiej za pomocą kluczy prywatnych/publicznych jak i klucza szyfrującego
  2. Dane w komunikacji są kompresowane za pomocą 7z (wymaga znacznie więcej zasobów CPU niż gzip ale wykazuje najlepszy poziom kompresji plików tekstowych)
  3. Pobieranie następuje za pomocą wielowątkowego zapytania za pomocą curl (przy rozwiązaniu z wykorzystaniem PHP)
  4. Queue Manager dba aby paczki do pobierania były zoptymalizowane, czyli:
    1. ograniczenie odwołań jednej domeny z jednego IP (czyli rotowanie domeny w ramach serwerów Downlaoder)
    2. ustalanie górnego limitu oczekiwania na URL
    3. przesyłanie dokładnych informacji konfiguracyjnych curl do Downlaoder’ów
  5. Downloader
    1. są to male serwery VPS z dostępnymi wieloma adresami IP w różnych lokalizacjach na świecie
    2. instalowane u wielu dostawców  – rozproszenie systemu

Technologie

Obecnie systemy skanujące można wykonać za pomocą wszystkich popularnych technologii internetowych. Każde rozwiązanie ma wady i zalety. Bez względu czy napiszesz system w PHP, Python czy na przykład Node.JS (polecamy!) praktycznie zawsze architektura serwerowa będzie taka sama.

Podsumowanie

Skanowanie jest to bardzo szeroki temat – a powyższe informacje są jedynie wstępem do tego zagadnienia. Najbardziej skomplikowany jest algorytm poprawnego kolejkowania – bo dzięki temu możemy zapobiec blokadom DDOS oraz poprawne wykorzystanie serwerów „Downloader”. Również bardzo ważna jest optymalna liczba adresów IP – nie może ich być za mało (im większa i bardziej rozproszona sieć tym lepiej).

Jeżeli zastosujemy się do powyższych wskazówek – mamy podstawy do budowy dobrego skanera sieciowego, który przekaże te dane do systemu przetwarzania i analizy danych – a to już temat na inny artykuł.

Zainteresował Cię ten artykuł?

Oferujemy profesjonalne wsparcie programistów w technologii Web.
Może Cię również zainteresować:
5 rzeczy, na które warto zwrócić uwagę, wybierając dedykowany system klasy ERP, WMS lub LMS

Tworzenie dedykowanych aplikacji web’owych (dostępnych przez przeglądarkę WWW z poziomu komputera, tabletu czy telefonu) jest… Read More

Clutch Recognizes GOGOmedia as a 2022 Development Leader in Poland

GOGOmedia is a multidisciplinary team with vast experience in the digital technology space. We deliver… Read More