Tek bir uygulamanın giden HTTP istekleri nasıl denetlenir?


70

Uygulamam bazı sunuculara HTTP istekleri gönderiyor ve gönderdiği gerçek verileri görmek istiyorum. Görmek istediğim bazı özellikler:

  • İstek yöntemi (GET / POST / PUT, vb.)
  • İçerik türü
  • Vücut

Bunu başarmanın en iyi ve basit yolu nedir?


"istek, içerik türü, beden vb. yöntem" HTTP'ye özgü incelemeden mi bahsediyorsunuz? HTTPS (güvenli) herhangi bir şansa sahip mi?
gertvdijk

Evet, haklısınız ancak tarayıcı tarafından gönderilmiyor
megas

Maalesef, sadece HTTP istekleri var
Megas

3
Tamam, o zaman sorun değil. Konuştuğu konu yalnızca bir veya küçük sunucu kümesi mi? Ve başka hiçbir uygulama bu sunucularla konuşmuyor mu? Her ikisi de evet ise, o zaman Wireshark hakkında cevap ne giderim. Nasıl çalıştığını öğrenin. O kadar zor değil.
gertvdijk

Yanıtlar:


71

Tüm bu tcpdump hayranları için =)

TÜM BU KOMUT OLARAK KÖTÜ !!!

Bir uçbirimde kök elde et

sudo -i

RAW paketlerini yakalamak için ...

sudo tcpdump -i any -w /tmp/http.log &

Bu, tüm ham paketleri, tüm bağlantı noktalarında, tüm arabirimlerde ve bunları bir dosyaya yazacaktır /tmp/http.log.

Uygulamanı çalıştır. HTTP (web tarayıcıları) kullanan başka bir uygulama çalıştırmazsanız, açıkça yardımcı olur.

Öldürmek tcpdump

killall tcpdump

Günlüğü okumak için -Abayrağı kullanın ve çıktıyı aşağıdaki noktaya yönlendirin less:

tcpdump -A -r /tmp/http.log | less

-APaketler halinde "yük" veya ASCII metin dışarı bayrak baskılar. Bu çıktı gönderir, lesssayfa yukarı ve aşağı yapabilirsiniz. Çıkmak için lessyazın Q.

Google’a gittiğimde görüyorum (işlenmemiş paketlerde):

20:42:38.179759 IP ufbt.local.56852 > sea09s02-in-f3.1e100.net.www: Flags [P.], seq 1:587, ack 1, win 913, options [nop,nop,TS val 25523484 ecr 492333202], length 586
E..~.v@.@..q......!#...P.(.gS.c..............u..Xh.GET /generate_204 HTTP/1.1
Host: clients1.google.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) rekonq Safari/534.34
Referer: http://www.google.com/
Accept: */*
Accept-Encoding: gzip, deflate, x-gzip, x-deflate
Accept-Charset: utf-8,*;q=0.5
Accept-Language: en-US, en-US; q=0.8, en; q=0.6
Cookie: PREF=ID=dd958d4544461998:FF=0:TM=1323842648:LM=1360205486:S=Fg_QCDsLMr4ZepIo; NID=67=OQJWjIDHG-B8r4EuM19F3g-nkaMcbvYwoY_CsOjzvYTOAxwqAos5kfzsk6Q14E70gIfJjHat8d8PuQIloB12BE-JuSHgsKHR2QSpgN12qSWoxeqhdcSQgzw5CHKtbR_a

tcpdumpveri toplama işlemlerini ağ arayüzleri belirtmekten bağlantı noktalarına, kaynak ve hedef IP adreslerine kadar hassaslaştırmak için çok çeşitli seçenekler vardır. Şifresini çözemez (HTTPS ile çalışmaz).

Neyle ilgilendiğinizi öğrendikten sonra, tcpdumpyalnızca ilgilendiğiniz verileri kaydetmek için birkaç seçenek kullanabilirsiniz . Genel strateji, önce tüm paketleri kaydetmek, ham verileri incelemek ve ardından yalnızca ilgilenilen paketleri yakalamaktır.

Bazı faydalı bayraklar (seçenekler):

-i Specify an interface
-i eth0

tcp port xx
tcp port 80

dst 1.2.3.4
specify a destination ip address

tcpdumpTopladığınız verileri nasıl analiz edeceğinizi öğrenmek ve öğrenmek için bir öğrenme eğrisi vardır . Daha fazla okumak için Daniel Miessler'ın Astarını tcpdumpÖrneklerle tavsiye ederim .


1
bu Ubuntu 14.04'ümde hiçbir şey yakalamaz. Dizüstü bilgisayarım internete bir wifi yönlendirici üzerinden bağlanır. Bu, tcpdump kullanımında bir fark yaratır mı? Öldürdüğümde, sadece şunu söylüyor: 0 packets captured 0 packets received by filter 0 packets dropped by kernel Ama tcpdump izleme yaparken Chrome tarayıcısında bir sürü site açtım.
faizal

1
ahh bağlantılı makale yardımcı oldu. tcpdump -i any -w /tmp/http.log &çalıştı.
faizal

22

İlk tcpflowönce Ubuntu resmi depolarından yükleyin :

sudo apt-get install tcpflow

Sonra standart porttaki tüm HTTP isteklerini incelemek için bu komutu çalıştırın:

sudo tcpflow -p -c port 80

1
ve sonuçları görmek için nerede? Teşekkür ederim!
Gediminas,

2
@ Gediminas terminalinde çıkışı görebilirsiniz. Lütfen HTTPS trafiğinin gösterilmediğini unutmayın. Httpvshttps.com
Vanni Totaro 28:18

1
İstekleri görmekle ilgileniyorsanız ve tüm TCP ayrıntılarıyla uğraşmak zorunda değilseniz (syn, ack ...) tcpdump'tan çok daha uygun
herm

13

Wireshark'ı denemenizi öneririmWireshark yükleyin

Lütfen Wireshark'ın oldukça gelişmiş olduğunu ve bu nedenle alışmak biraz zaman alabilir. Birkaç yıl boyunca kullanmadım, ama yine de özelliklerin dolu olmasa da, peşinde olduğun şey için mükemmel olmalı.

Wireshark ve kullanımı hakkında bilgiler Wireshark ana sayfasında bulunabilir .


1
Bu tek bir işlem için işe yaramaz. Arayüzdeki tüm trafiği alacaksınız ve IP / protokol vb.
İle

evet, ancak kolayca wireshark arayüzü ile gerçekleştirilir.
Panter

2
Wireshark'ı daha önce denedim ve bu benim için çok gelişmiş, başka bir seçenek arıyorum
megas

4
Diğer seçenek ise tcpdump. tcpdump bir komut satırı aracıdır, işi kolayca yapar, ancak daha dik bir öğrenme eğrisi vardır. danielmiessler.com/study/tcpdump
Panter

1
@gertvdijk - istediğiniz gibi;) Temel konulara eklemekten çekinmeyin
Panther

5

Ayrıca SSL için bile düzenli çıktı veren bir komutla mümkündür:

sudo tcpdump dst port 80
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.