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 serwera | Specyfikacja | Zadanie |
---|---|---|
Parser |
|
|
Queue Manager |
|
|
Downloader |
|
|
Dodatkowe założenia
- Komunikaty są zaszyfrowane za pomocą istniejących systemów, a najlepiej za pomocą kluczy prywatnych/publicznych jak i klucza szyfrującego
- 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)
- Pobieranie następuje za pomocą wielowątkowego zapytania za pomocą curl (przy rozwiązaniu z wykorzystaniem PHP)
- Queue Manager dba aby paczki do pobierania były zoptymalizowane, czyli:
- ograniczenie odwołań jednej domeny z jednego IP (czyli rotowanie domeny w ramach serwerów Downlaoder)
- ustalanie górnego limitu oczekiwania na URL
- przesyłanie dokładnych informacji konfiguracyjnych curl do Downlaoder’ów
- Downloader
- są to male serwery VPS z dostępnymi wieloma adresami IP w różnych lokalizacjach na świecie
- 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ł?
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
Warsztaty Discovery – 5 powodów dla których warto je przeprowadzić
Post pochodzi bezpośrednio z naszych oficjalnych kanałów na Social Media. W dynamicznym… Read More
Optymalizacja eCommerce vs. Zewnętrzny Dyrektor Technologiczny
🛠️ Studium przypadku 🛠️Post pochodzi bezpośrednio z naszych oficjalnych kanałów na Social… Read More