Linux服务器下的HTTP抓包分析

简介: 说到抓包分析,最简单的办法莫过于在客户端直接安装一个Wireshark或者Fiddler了,但是有时候由于客户端开发人员(可能是第三方)知识欠缺或者其它一些原因,无法顺利的在客户端进行抓包分析,这种情况下怎么办呢?

说到抓包分析,最简单的办法莫过于在客户端直接安装一个Wireshark或者Fiddler了,但是有时候由于客户端开发人员(可能是第三方)知识欠缺或者其它一些原因,无法顺利的在客户端进行抓包分析,这种情况下怎么办呢?

本文中,我们将给大家介绍在服务端进行抓包分析的方法,使用tcpdump抓包,配合Wireshark对HTTP请求进行分析,非常简单有效。

本文将会持续修正和更新,最新内容请参考我的 GITHUB 上的 程序猿成长计划 项目,欢迎 Star,更多精彩内容请 follow me

使用tcpdump在服务器抓包

在服务端进行抓包分析,使用tcpdump

tcpdump -tttt -s0 -X -vv tcp port 8080 -w captcha.cap

这里的参数是这样的

  • -tttt 输出最大程度可读的时间戳
  • -s0 指定每一个包捕获的长度,单位是byte,使用-s0可以捕获整个包的内容
  • -X 以hex和ASCII两种形式显示包的内容
  • -vv 显示更加多的包信息
  • tcp 指我们只捕获tcp流量
  • port 8080 指我们只捕获端口8080的流量
  • -w captcha.cap 指定捕获的流量结果输出到captcha.cap文件,便于分析使用

关于tcpdump更加高级的用法,可以参考 tcpdump简明教程

上述命令会保持运行,并将结果输出到 captcha.cap 文件中,在这个过程中,所有访问 8080 端口的 TCP 流量都会被捕获。当请求结束之后,我们可以使用 Ctrl+C 中断该命令的执行,这时候在当前目录下就可以看到生成了一个名为 captcha.cap 的文件。

使用Wireshark分析

接下来我们从服务器上下载这个captcha.cap文件到自己电脑上,使用 Wireshark 打开

最简单的下载方法当然是使用scp了

scp account@ip:/path/to/captcha.cap .

因为我们需要分析http包,直接打开看显然无法区分我们需要的内容,因此,可以在filter栏中添加过滤规则 http,这样就可以只展示http流量了

当请求比较多的时候,我们还是无法快速区分出哪个是指定客户端的访问请求,好在强大的filter可以组合使用

http and ip.src == 192.168.0.65    

上面这个filter将会过滤出所有来自客户端 192.168.0.65 的http流量。

找到我们需要分析的http请求了,那么怎么查看请求响应的内容呢?也很简单,只需要选中这个请求,右键 Follow - HTTP Stream

在新开的窗口中,我们就可以看到这个请求的所有内容了

总结

tcpdump和wireshark都是非常强大的网络分析工具,其使用用途不仅仅局限于http请求抓包,借助这两个工具,我们可以对所有的网络流量,网络协议进行分析。本文只是针对最常见的http请求抓包方法做了一个简单的讲解,实际上配合wireshark强大的filter规则,我们可以更加精准的对流量进行过滤,分析。

本文将会持续修正和更新,最新内容请参考我的 GITHUB 上的 程序猿成长计划 项目,欢迎 Star,更多精彩内容请 follow me

目录
相关文章
|
5天前
|
PHP Android开发
android通过http上传文件,服务器端用php写(原创)
android通过http上传文件,服务器端用php写(原创)
18 4
|
4天前
|
监控 Unix 应用服务中间件
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
|
3天前
|
自然语言处理 负载均衡 监控
处理HTTP请求的服务器
处理HTTP请求的服务器
11 1
|
5天前
|
JSON JavaScript API
使用 Node.js 开发一个简单的 web 服务器响应 HTTP post 请求
使用 Node.js 开发一个简单的 web 服务器响应 HTTP post 请求
13 1
|
5天前
|
JSON JavaScript 中间件
使用 Node.js 开发一个简单的 web 服务器响应 HTTP get 请求
使用 Node.js 开发一个简单的 web 服务器响应 HTTP get 请求
10 2
|
5天前
|
存储 JSON JavaScript
Node.js 上开发一个 HTTP 服务器,监听某个端口,接收 HTTP POST 请求并处理传入的数据
Node.js 上开发一个 HTTP 服务器,监听某个端口,接收 HTTP POST 请求并处理传入的数据
13 0
|
5天前
|
JavaScript
http-server实现本地服务器
使用Node.js的http-server模块创建本地服务器:先确保安装Node.js和npm,然后在命令行中安装http-server模块,运行`npm install http-server -g`。接着,切换到目标文件夹并启动服务器,输入`http-server`或带端口号的`http-server -p 3000`。最后,通过`http://localhost:8080`(或指定端口)访问服务器。
|
5天前
|
缓存 Linux
linux性能分析之内存分析(free,vmstat,top,ps,pmap等工具使用介绍)
这些工具可以帮助你监视系统的内存使用情况、识别内存泄漏、找到高内存消耗的进程等。根据具体的问题和需求,你可以选择使用其中一个或多个工具来进行内存性能分析。注意,内存分析通常需要综合考虑多个指标和工具的输出,以便更好地理解系统的行为并采取相应的优化措施。
34 6
|
5天前
|
中间件 Go
【Go语言专栏】使用Go语言编写HTTP服务器
【4月更文挑战第30天】本文介绍了如何使用Go语言创建基本的HTTP服务器,包括设置路由、处理请求和响应。首先确保安装了Go环境,然后引入`net/http`包,定义路由和处理器函数。处理器函数接收`http.ResponseWriter`和`*http.Request`参数,用于发送响应和处理请求。使用`http.ListenAndServe`启动服务器,并可通过中间件增强功能。文章还提及了处理复杂请求、查询参数和POST数据的方法,以及使用第三方库如Gin和Echo扩展功能。通过本文,读者可掌握Go语言编写HTTP服务器的基础知识。
|
5天前
|
弹性计算 监控 Shell
监控HTTP 服务器的状态
【4月更文挑战第29天】
12 0