当前位置: 首页>>技术教程>>正文


如何检查单个应用程序的传出HTTP请求?

,

问题描述

我的应用程序是将HTTP请求发送到某个服务器,我想查看它发送的实际数据。我希望看到的一些细节:

  • 请求方法(GET /POST /PUT等)

  • Content-type

  • 身体

实现这一目标的最佳和简单方法是什么?

最佳解决办法

那么,对于所有那些tcpdump粉丝=)

以所有这些命令为基础!

在终端中获取root权限

sudo -i

捕获RAW数据包……

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

这将捕获所有接口上所有端口上的所有原始数据包,并将其写入文件/tmp/http.log

运行您的应用程序如果您不运行任何其他使用HTTP(Web浏览器)的应用程序,这显然会有所帮助。

杀死tcpdump

killall tcpdump

要读取日志,请使用-A标志并将输出通过管道传输到less

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

-A标志在数据包中打印出”payload”或ASCII文本。这会将输出发送到less,您可以上下翻页。要退出less,请键入Q

当我去谷歌时,我看到(在原始数据包中):

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有很多选项可以优化数据收集,从指定网络接口到端口到源和目标IP地址。它无法解密(因此无法使用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,也可以学习如何分析收集的数据。为了进一步阅读,我强烈建议Daniel Miessler的tcpdump Primer with examples。

次佳解决办法

首先从Ubuntu官方存储库安装tcpflow

sudo apt-get install tcpflow

然后运行此命令以检查标准端口上的所有HTTP请求:

sudo tcpflow -p -c port 80

第三种解决办法

我建议你试试Wireshark

networking,ubuntu

请注意,Wireshark非常先进,因此可能需要一些时间来适应。我已经有几年没用过了它,但它仍然应该是你所追求的完美 – 如果不是有点太多的功能。

有关Wireshark的信息以及如何使用它可以在the Wireshark homepage找到。

第四种办法

也可以使用命令,即使对于SSL,它也能提供整洁的输出:

sudo tcpdump dst port 80

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1290.html,未经允许,请勿转载。