一, 客户端模拟请求工具
- nc:tcp/udp 协议发送
- curl:最常使用的 http 请求工具
- postman:综合性的 http 协议测试工具
- 代理工具、IDE 工具、浏览器插件工具
二,使用 Chrome 开发者工具分析网络请求
2.1,打开工具方式
- 使用Chrome 并打开需要分析的网页,直接按F12键
- 右键点击页面并选择“检查”来打开开发者工具
2.2,copy as curl功能
作用:
- 把浏览器发送的请求真实的还原出来
- 附带了认证信息,所以可以脱离浏览器执行
- 可以方便开发者重放请求、修改参数调试,编写脚本
2.3, curl 常见用法
url=http://www.baidu.com
- get请求
curl $url
- post请求
curl -d 'xxx' $url
- proxy使用
curl -x 'http://127.0.0.1:8080' $url
2.4, 重要参数
-
-H "Content-Type: application/json"
消息头设置 -
-u username:password
用户认证 -
-d
要发送的post数据 @file 表示来自于文件 -
--data-urlencode 'page_size=50'
对内容进行url编码 -
-G
把data数据当成get请求的参数发送,长与–data-urlencode结合使用 -
-o
写文件 -
-x
代理 http代理 socks5代理 -
-v
verbose 打印更详细日志-s
关闭一些提示输出 -
更多示例参考: curl命令参数
2.5, 其他常用参数
- curl -o filename url 保存响应内容
- curl -i url 显示头信息
- curl -I url 仅显示头信息
- curl -s url 静默访问不输出错误和进度
- curl -v url 输出通信过程
- curl -H headers url 添加头信息
- curl -x “ip:port” url 为请求添加代理
三,tcpdump与wireshark的使用
3.1 协议分析工具
- 网络监听:TcpDump + WireShark
- 代理 Proxy
- 推荐工具:手工测试charles [全平台]、安全测试burpsuite [全平台 java]
- 自动化测试:mitmproxy
- 其他代理: fiddler [仅windows]、AnyProxy [全平台]
- 协议客户端工具: curl、postman
3.2 tcpdump
- 参数:
- -x 十六进制展示
- -w file 保存文件
- 表达式:
- ip tcp 协议
- host 主机名
- port 80
- src 来源 dst 目的
- and or () 逻辑表达式
3.3 WireShark抓包
3.3.1 Wireshark可以自动识别出电脑上面的网卡(包括虚拟网卡),双击需要抓包的网卡。
3.3.2 双击进入此界面后,Wireshark已经自动开始了抓包过程,如果网卡在与其他网络设备通讯,我们就能看到各种网络协议报文
3.3.3 Wireshark抓取的是网卡物理层的数据,所有通过该网卡收发的数据都会被Wireshark抓取 ,为了找到需要的报文,可以在过滤器进行过滤
3.3.4 Wireshark常用过滤器
-
1、Wireshark中的逻辑运算符
-
1.1比较运算符如:== (等于)、!=(不等于) 、>(大于) 、<(小于) 、>=(大于等于) 、<=(小于等于)
- ip.src == 192.168.3.6 过滤源主机IP地址或者目标主机IP地址为192.168.3.6的报文
-
1.2逻辑运算符如:&&(与)、||(或)、!(非)
ip.src == 192.168.3.6 && && tcp.srcport == 8001,则只显示报文源主机地址为192.168.3.6且源端口为为8001的报文
-
-
2、协议过滤
- 根据网络协议过滤报文,即在抓包过滤框中输入协议相关字段即可,包括”TCP”,”UDP””HTTP””ICMP”等。
-
3、MAC地址过滤
- eth.addr == 38:3b:26:88:02:dd 过滤源主机MAC地址或者目标主机MAC地址为38:3b:26:88:02:dd的报文
- eth.src== 38:3b:26:88:02:dd 过滤源主机MAC地址为38:3b:26:88:02:dd的报文
-
4、ip地址过滤
- Ip.addr == 192.168.3.6 过滤源主机IP地址或者目标主机IP地址为192.168.3.6的报文
- Ip.src== 192.168.3.6 过滤源主机IP地址为192.168.3.6的报文
- ip.dst == 192.168.3.240 过滤目标主机IP地址为192.168.3.240的报文
-
5、端口过滤
- tcp.port==80 过滤基于TCP协议且目标端口号或源端口号为80的报文
- udp.srcport == 8001 过滤基于UDP协议且端口号为8001的报文
- tcp.dstport == 8001 过滤基于TCP协议且目标端口号为8001的报文
-
6、Http模式过滤
- http.request.method==“GET”, 过滤基于http协议且http请求方式为”GET”的报文
3.3.5 抓取访问网页的数据包
sudo tcpdump host www.baidu.com -w /tmp/tcpdump.log
curl http://www.baidu.com
- 停止tcpdump
- 使用wireshark打开/tmp/tcpdump.log