Czy można złapać adresy URL w systemie Linux?

7

Istnieje świetny program dla systemu Windows (URL Snooper: http://www.donationcoder.com/Software/Mouser/urlsnooper/index.html ), który pozwala wyświetlić wszystkie adresy URL żądane na komputerze.

Czy jakiś taki program istnieje w systemie Linux (najlepiej wiersz poleceń)

simonwjackson
źródło
nie jestem pewien, co próbujesz tutaj zrobić.
Rzeczywiście, wydaje się, że adres URL Snooper nie tylko mają zastosowanie do adresów URL jest wymagane na komputerze , ale także do adresów URL ukryte w kodzie HTML jakiejś stronie, które niekoniecznie są jeszcze wymagane. Aby zapoznać się z tym ostatnim, zobacz także „Jak pobrać listę plików z serwera plików?” na superuser.com/questions/47089/…
Arjan

Odpowiedzi:

12

Wygląda na to, że URL Snooper dotyczy nie tylko adresów URL żądanych na komputerze , ale także adresów URL ukrytych w źródle HTML niektórych stron, które niekoniecznie są jeszcze wymagane. Aby zapoznać się z tym ostatnim, zobacz „ Jak pobrać listę plików z serwera plików? ” Tutaj w Super User. Lub w przeglądarce Firefox zobacz menu Narzędzia »Informacje o stronie» Media lub użyj dodatków, takich jak Video DownloadHelper lub UnPlug . Poniższe informacje dotyczą wyświetlania wszystkich żądanych adresów URL.

Wiersz poleceń ngrepmoże to zrobić, ale podaje znacznie więcej szczegółów, niż prawdopodobnie byś chciał.

Na przykład: nie pokaże tylko adresu URL wpisanego w pasku adresu przeglądarki, ale całe żądanie HTTP. (Tak więc: adres IP rozpoznany przez przeglądarkę przed faktycznym wysłaniem żądania, a następnie żądanie HTTP, które przeglądarka wysyła na ten adres IP). Oraz: wyświetli to również dla każdego obrazu itp. Użytego na wynikowej stronie.

Może być konieczne zainstalowanie ngrep, tak jak w przypadku domyślnej instalacji Ubuntu:

sudo apt-get install ngrep

Aby przechwycić wszystkie żądania HTTP GET do portu 80:

sudo ngrep -W byline -qilw 'get' tcp dst port 80

Mimo to pokazałoby to całą prośbę. (Spróbuj dla siebie, jeśli jesteś Super User!) Aby ograniczyć to wyjście trochę więcej, aby wyświetlić tylko linie z ->, getlub host:

sudo ngrep -W byline -qilw 'get' tcp dst port 80 \
  | grep -i "-> \ | get \ | host"

Lub, aby przechwycić wszystkie żądania do portu 80, ale zignoruj ​​te z Refererzestawem nagłówków (ustawionym przy żądaniu osadzonych obrazów itp., Ale także ustawionym po kliknięciu łącza na stronie internetowej, pokazując tylko żądania wpisane na pasku lokalizacji przeglądarki) bezpośrednio lub są otwierane w nowym oknie lub są otwierane z zakładki lub e-maila):

sudo ngrep -W byline -qilwv 'referer' tcp dst port 80 \
  | grep -i "-> \ | get \ | host"

Również narzędzia sniffera, takie jak Wireshark, mają opcje wiersza poleceń. I tak na marginesie i znacznie bardziej podstawowy, tcpdumpjest instalowany w większości dystrybucji Linuksa:

sudo tcpdump -Alfq -s 1024 \
  'tcp dst port 80 i ip [2: 2]> 40 i tcp [tcpflags] & tcp-push! = 0' \
  | grep -i "> \ | get \ | host"
Arjan
źródło
4

Mogę również polecić sniff url autorstwa Pawła Pawilcza. Jest to lekki skrypt Perla, który ładnie się otacza ngrep. Obsługuje również kolorowe wydruki. Tutaj znajdziesz zrzut ekranu. Daje ci prosty interfejs do wąchania wszystkich żądanych adresów URL.

timn
źródło
Witryna url-sniff jest offline, ale w archiwum znajduje się jej kopia .
Stefan Schmidt
1

Możesz użyć serwera proxy HTTP, takiego jak Privoxy , ale musisz skonfigurować swoją przeglądarkę, aby z niego korzystał - nie szpieguje ruchu sieciowego. Tworzy dziennik dostępnych adresów URL, które można wyświetlić za pomocą edytora tekstu.

Hugh Allen
źródło
0
  1. Uruchom serwer proxy, który rejestruje żądania zgodnie z sugestią navilon. Nie musisz niczego konfigurować po stronie klienta, jeśli wybierasz przezroczysty serwer proxy.
  2. Uruchom sniffer na bramie.
maniak
źródło