一.常见的接口协议解析
1.tcp与UDP的区别:
TCP:面向连接,错误重传,拥塞控制,适用于可靠性高的场景
UDP:不需要提前建立连接,实现简单,适用于实时性高的场景
2.Restful软件架构风格
Restful:Representational State Transfer;借助于http协议的基本请求方法代表资源的状态切换
post:新增或者更新
get:获取资源
put:更新资源
delete:删除资源
Github:Rest API
3.RPC协议
RPC协议:Remote Procedure Call,以本地代码调用的方式实现远程执行
常见的RPC协议有:Dubbo,gRPC,Thrift
4.接口协议分析
协议分析工具:
(1)网络监听:TcpDump+WireShark;适合偏底层的协议(tcp)
(2)代理Proxy:
推荐工具:手工测试charles[全平台],安全测试burpsuite[全平台 Java]
自动化测试:mitmproxy
其他代理;fiddler(windows),AnyProxy[全平台]
(3)协议客户端工具:curl命令,postman
(4)实战演练:
抓取访问百度的数据包?(tcpdump+wirsshark)
sudo tcpdump host www.baidu.com -w /tmp/tcpdump.log
curl http://www.baidu.com
停止tcpdump
使用wireshark 打开/tmp/tcpdump.log---查看三次握手,四次挥手的详细过程.
5.使用postman发送请求.
1.常用命令
2.用例集执行-数据驱动
3.导出为code代码(支持所有代码导出)
6.使用curl命令
curl命令可以在终端直接进行运行.
1.使用chrome浏览器调试工具,获取接口curl命令
copy as curl的作用:
(1)把浏览器发送的请求真实的还原出来
(2)附带了认证信息,所以可以脱离浏览器执行
(3)可以方便开发者重放请求,修改参数调试,编写脚本
2.客户端模拟请求工具
(1)nc tcp/udp协议发送
(2)curl 最常用的http请求工具;可以脚本化
(3)postman 综合性的http协议测试工具,脚本功能被限制
(4)代理工具,IDE工具,浏览器插件工具
3.curl常见用法
eg:url=http://www.baidu.com
(1)get请求 curl $url
(2)post请求 curl -d 'xxx' $url
(3)proxy使用 curl -x 'http://127.0.0.1:8080' $url
(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 --help查看更多curl命令
--compressed | jq命令,可以让返回结果以json的格式展示
4.常用代理工具
代理工具:charles burpsuite fiddler mitmproxy
高性能代理服务器:squid dante
反向代理:nginx
流量转发与复制:em-proxy,gor,iptable,nginx
socks5代理:ssh -d参数
实操:使用nc 简易演示代理实现
mkfifo /tmp/fifo
nc -lk 8080< /tmp/fifo\
| sed -l -e 's/^Host.*/Host:site.baidu.com/'\
|tee -a /tmp/req/log\
|nc site.baidu.com 80\
|tee -a /tmp/res>/tmp/fifo
开发/测试工程师必备:charles
测试开发工程师必备:mitmproxy
5.http/https抓包分析