Zasysacz internetu

Programu „Zasysacz Internetu v0.2” został zrealizowanego w ramach projektu z przedmiotu „Języki programowania wysokiego poziomu” na kierunku „Inżynieria Akustyczna”. Zasysacz jest programem typu web crawler.
Autorzy: Krzysztof Ciereniewicz i Bartosz Nowacki

1. Zadaniem programu jest rekurencyjne pobieranie stron z zadanego przez użytkownika hosta (tylko HTTP) i poprzez poszukiwanie odnośników automatyczne pobranie całego serwisu w zakresie zadanej domeny. Powtarzające się adresy są odrzucane. Istnieje możliwość ograniczenia zakresu pracy programu do wybranej domeny oraz automatyczne zakończenie pracy programu po odebraniu określonej liczby stron. Jeżeli zachodzi potrzeba, program można zamknąć, a potem wznowić pobieranie od miejsca, w którym zostało zatrzymane. Program posiada również możliwość wznowienia pracy po utracie zasilania lub zawieszeniu komputera.

2. Program zaczyna swoje działanie w momencie wpisania w pole „Adres” pierwszego adresu i naciśnięcia przycisku „Start”. Aby program prawidłowo pobrał całą witrynę adres powinien być jak najbardziej ogólny, najlepiej głównym adresem całej witryny (w zależności od konstrukcji witryny). Po zwróceniu zawartości strony przez bibliotekę WinHTTP, która została użyta jako synchronicznie działający silnik wysyłający i odbierający żądania HTTP, następuje skanowanie zawartości pod kątem występowania tagów. Każdy odnaleziony adres jest sprawdzany czy nie jest etykietą, nie odnosi się do połączenia innego niż http, czy ma prawidłową składnię bądź nie jest skryptem. Jeżeli znaleziony adres jest scieżką względną na serwerze, jest uzupełniany zgodnie ze składnią do bezwględnej ścieżki na serwerze. Tak sprawdzony i uzupełniony adres jest dodawany do bazy adresów programu. Składa się ona z tablicy list zawierających adresy, które program będzie odrzucał i listy adresów oczekujących na pobranie. Każdemu adresowi program przyporządkowuje klucz, według którego adres jest przydzielany do określonej listy. Jeśli pod danym hashem odnośnik nie zostanie odnaleziony, jest zapisywany do tablicy. Po przeskanowaniu całości strony, program pobiera z listy oczekujących następny odnośnik.

3. Program został napisany przy użyciu środowiska Borland C++ Builder 6, wykorzystujący demo biblioteki WinHTTP. Dynamiczne struktury danych do przechowywania odnośników zostały oparte na listach oraz tablicach hashujących. Lista oczekujących odnośników jest zwykłą jednokierunkową listą stringów. Lista adresów, które już zostały zapisane lub dodane do oczekujących, ze względu na konieczność wyszukiwania i jej dużą objętość jest zrealizowana jako tablica list stringów. Hashowanie odbywa się przy użyciu funkcji matematycznej, która zwraca resztę z dzielenia wartości sumy kodów ASCII znaków w odnośniku przez 128. Wartość ta została dobrana doświadczalnie, aby uzyskać możliwie wysoką wydajność przy niewielkiej ilości elementów tablicy. Funkcje filtrujące adres zostały napisane w oparciu o dokumentację W3C dotyczącą standardu HTML 1.0, uwzlędniając rozpoznawianie większości znanych standardów komunikacji w sieci, w tym protokoły komunikatorów, SSL, SSH, rozróżnianie, pocztę elektroniczną, ścieżki względne na serwerze, pliki CSS. Program umie odnajdywać wyjątki i eliminować takie adresy, uzupełniać ścieżki względne do bezwzględnych, pobierając jedynie strony HTML. Co jedno pobranie strony wykonywany jest backup listy odnośników pobranych i zakolejkowanych. Po wykonaniu zadania program zapisuje dziennik i zgłasza komunikat o zakończeniu działania.

4. Jedynym znanym problemem jest zawieszanie się programu. Zawieszenie się nie powoduje jednak utraty danych, ponieważ po każdym zapisaniu strony zapisywany jest stan programu. Po zauważeniu nieprawidłowej pracy programu należy go zrestartować i klinkąć przycisk „Odtwórz po padzie”. Zasysacz będzie kontynuował swoją pracę.

Zasysacz i wymagane biblioteki

Copyright © Zespół Przetwarzania Sygnałów AGH 2011-2014