किसी एकल एप्लिकेशन के निवर्तमान HTTP अनुरोधों का निरीक्षण कैसे करें?


70

मेरा एप्लिकेशन कुछ सर्वरों पर HTTP अनुरोध भेज रहा है और मैं वास्तविक डेटा देखना चाहता हूं जिसे वह भेज रहा है। कुछ विशेष बातें जिन्हें मैं देखना चाहूंगा:

  • अनुरोध विधि (GET / POST / PUT, आदि)
  • सामग्री प्रकार
  • तन

इसे पूरा करने का सबसे अच्छा और सरल तरीका क्या है?


"अनुरोध की विधि, सामग्री प्रकार, शरीर और आदि" क्या आप HTTP- विशिष्ट निरीक्षण के बारे में बात कर रहे हैं? क्या यह किसी भी संयोग से HTTPS (सुरक्षित) है?
gertvdijk

हां, आप सही हैं लेकिन यह ब्राउज़र द्वारा नहीं भेज रहा है
megas

क्षमा करें, यह सिर्फ HTTP अनुरोध है
Megas

3
ठीक है, फिर ठीक है। क्या यह सिर्फ एक या सर्वर का एक छोटा सा सेट है, जिस पर बात कर रहे हैं? और कोई अन्य एप्लिकेशन उन सर्वर से बात नहीं कर रहे हैं? यदि दोनों हाँ, तो विंडसरक के बारे में जवाब है कि मैं क्या करूँगा। जानें कि यह कैसे काम करता है। यह इतना मुश्किल नही है।
gertvdijk

जवाबों:


71

खैर, उन सभी tcpdump प्रशंसकों के लिए =)

रूट के रूप में इन सभी कमानों !!!

के साथ एक टर्मिनल में रूट प्राप्त करें

sudo -i

रॉ के पैकेट पर कब्जा करने के लिए ...

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

यह, सभी कच्चे पैकेट पर कब्जा करेगा, सभी बंदरगाहों पर सभी इंटरफेस पर और उन्हें एक फ़ाइल पर लिखने, /tmp/http.log

अपना एप्लिकेशन चलाएं। यह स्पष्ट रूप से मदद करता है अगर आप HTTP (वेब ​​ब्राउज़र) का उपयोग करने वाले किसी अन्य एप्लिकेशन को नहीं चलाते हैं।

हत्या tcpdump

killall tcpdump

लॉग को पढ़ने के लिए, -Aध्वज का उपयोग करें और आउटपुट को इसके लिए पाइप करें less:

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

-Aबाहर "पेलोड" या पैकेट में ASCII पाठ झंडा प्रिंट। यह आउटपुट को भेजेगा less, आप ऊपर और नीचे पेज कर सकते हैं। बाहर निकलने के लिए lessटाइप करें Q

जब मैं Google पर जाता हूं, तो मैं देखता हूं (कच्चे पैकेट में):

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

tcpdumpनेटवर्क इंटरफेस को पोर्ट से स्रोत और गंतव्य आईपी पते को निर्दिष्ट करने के लिए डेटा संग्रह को परिष्कृत करने के लिए विकल्पों का एक लंबा सेट है। यह डिक्रिप्ट नहीं कर सकता (इसलिए यह HTTPS के साथ काम नहीं करेगा)।

एक बार जब आप जानते हैं कि आप किस चीज में रुचि रखते हैं, तो आप tcpdumpकेवल ब्याज के डेटा को रिकॉर्ड करने के लिए कई विकल्पों का उपयोग कर सकते हैं । सामान्य रणनीति पहले सभी पैकेटों को रिकॉर्ड करना, कच्चे डेटा की समीक्षा करना और उसके बाद केवल ब्याज के पैकेट पर कब्जा करना है।

कुछ उपयोगी झंडे (विकल्प):

-i Specify an interface
-i eth0

tcp port xx
tcp port 80

dst 1.2.3.4
specify a destination ip address

एक सीखने की अवस्था है, दोनों का उपयोग करना tcpdumpऔर सीखना कि आपके द्वारा एकत्र किए गए डेटा का विश्लेषण कैसे किया जाए। आगे पढ़ने के लिए, मैं अत्यधिक डैनियल मिसेलर के tcpdumpप्राइमर को उदाहरणों के साथ सुझाता हूं


1
यह मेरे Ubuntu 14.04 पर कुछ भी कैप्चर नहीं करता है। मेरा लैपटॉप वाईफाई राउटर पर इंटरनेट से कनेक्ट होता है। क्या इससे tcpdump के उपयोग पर फर्क पड़ेगा? जब मैं इसे मारता हूं, यह सिर्फ कहता है, 0 packets captured 0 packets received by filter 0 packets dropped by kernel लेकिन मैंने क्रोम ब्राउज़र में साइटों का एक गुच्छा खोला जब tcpdump निगरानी कर रहा था।
फ़ैज़ल

1
जुड़े लेख में मदद की। tcpdump -i any -w /tmp/http.log &काम किया।
फ़ैज़ल

22

पहली बार tcpflowUbuntu आधिकारिक रिपॉजिटरी से इंस्टॉल करें :

sudo apt-get install tcpflow

फिर मानक पोर्ट पर सभी HTTP अनुरोधों का निरीक्षण करने के लिए इस कमांड को चलाएं:

sudo tcpflow -p -c port 80

1
और परिणाम कहां देखें? धन्यवाद!
गिडमिनस

2
@Gediminas आप टर्मिनल में आउटपुट देख सकते हैं। कृपया ध्यान दें कि HTTPS ट्रैफ़िक नहीं दिखाया गया है। HTTPvshttps.com
Vanni Totaro

1
Tcpdump की तुलना में अधिक सुविधाजनक यदि आप केवल अनुरोधों को देखने में रुचि रखते हैं और सभी TCP विवरणों के साथ सौदा नहीं करना है (syn, ack ...)
herm

13

मैं आपको सुझाव दूंगा कि आप विर्सार्क की कोशिश करेंतारों को स्थापित करें

कृपया ध्यान दें कि Wireshark काफी उन्नत है, और इसलिए इसका उपयोग करने में थोड़ा समय लग सकता है। मैंने कुछ वर्षों तक इसका उपयोग नहीं किया है, लेकिन यह अभी भी सही होना चाहिए कि आप क्या कर रहे हैं - अगर थोड़ा बहुत सुविधाओं से भरा नहीं है।

Wireshark के बारे में जानकारी और इसका उपयोग कैसे करें, यह Wireshark होमपेज पर पाया जा सकता है ।


1
यह एक प्रक्रिया के लिए काम नहीं करता है। आपको इंटरफ़ेस पर सभी ट्रैफ़िक मिलेंगे और आपको इसे IP / प्रोटोकॉल आदि के द्वारा फिल्टर करना होगा। वायरशर्क - फ़िल्टर प्रक्रिया / pid
gertvdijk

हाँ, लेकिन इसे आसानी से वायरशार्क इंटरफ़ेस के साथ पूरा किया जाता है।
पैंथर

2
मैंने पहले wireshark की कोशिश की है और यह मेरे लिए बहुत अधिक बढ़ है, मैं एक और विकल्प की तलाश में हूँ
Megas

4
दूसरा विकल्प tcpdump है। tcpdump एक कमांड लाइन उपकरण है, आसानी से काम करेगा, लेकिन इसमें एक स्टेटर लर्निंग कर्व है। danielmiessler.com/study/tcpdump
पैंथर

1
@gertvdijk - जैसा कि आप चाहते हैं;) मूल बातें जोड़ने के लिए स्वतंत्र महसूस करें
पैंथर

5

SSL के साथ भी, जो सुव्यवस्थित उत्पादन देता है, इसके लिए पॉसिबल:

sudo tcpdump dst port 80
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.