接口测试准备二、get、post区别 Session Cookie Token区别 Charles功能介绍 scoks、http、websocket、socket区别 mitmproxy

get、post区别

1、http的method字段不同
2、post可以附加body,可以支持form、json、xml、binary等各种数据格式
3、get通过url传参数,post可以使用url和query
4、post传递参数较大(会遇到使用get加请求参数,导致参数过长,被截断的缺陷)
行业通用的规范
无状态变化的建议使用get请求
数据的写入与状态修改建议用post

Session Cookie Token区别

Session和Cookie使用:https://www.cnblogs.com/070727sun/p/11527277.html
简单理解Cookie和Session
cookie存放在客户端,session存放在服务端。cookie会通过Set-Cookie设置在浏览器,cookie是session每次会话的标记,每次会话会通过发送cookie来获取对应的session。
Cookie和Session区别
cookie:浏览器接受服务器的Set-Cookie指令,并把cookie保存待电脑上,每个网站保存的cookie只作用于自己的网站。
session:数据存储到服务端,只把关联数据的一个加密串放到cookie中标记。

Token应用场景
凭借认证信息获取token,或者通过后台配置好token
在相关请求中使用token,多数是以query参数的形态提供
企业微信中Token使用:https://work.weixin.qq.com/api/doc/90000/90135/91039
参考类似认证:OAuth认证、企业微信、微信、GitHub、gitlab等相关认证

Session与Token的区别
token是一个用户请求时附带的请求字段,用于验证身份与权限。
session可以基于cookie,也可以基于query参数,用于关联用户相关数据。
跨端应用的时候,比如Android原生系统不支持cookie
1、需要用token识别用户
2、需要用把sessionid保存到http请求中header或者query字段中

Charles功能介绍

使用
一、http/https抓包
http1.0、http1.1、http2.0 区别https://blog.csdn.net/ailunlee/article/details/97831912
在这里插入图片描述
二、限速模拟
1、常见网络类型模拟
2、带宽
3、丢包
4、延迟
在这里插入图片描述
三、交互式拦截请求与响应
在这里插入图片描述
四、Mock对请求与响应进行动态修改
在这里插入图片描述
五、Fake用测试环境替代线上环境
在这里插入图片描述
六、Fake用本地cache替代线上环境
在这里插入图片描述
对语言直接交互Protocol Buffershttps://developers.google.cn/protocol-buffers/

scoks、http、websocket、socket区别
具体区别可以参考:https://www.cnblogs.com/aspirant/p/11334957.html
可以把WebSocket想象成HTTP(应用层),HTTP和Socket什么关系,WebSocket和Socket就是什么关系。
HTTP 协议有一个缺陷:通信只能由客户端发起,做不到服务器主动向客户端推送信息。
WebSocket 协议 它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种
Socket:只是一个抽象接口,不是协议
Scoks代理:是一种技术
websocket:应用层的一个协议(类似http同级的协议)
在这里插入图片描述
socks代理
在这里插入图片描述
map local功能
在这里插入图片描述
使用:
第一步:开启map local在这里插入图片描述
第二步:添加命中规则,和导入模拟数据(模拟数据使用 .json格式)
对应值介绍
URL : https://blog.csdn.net/weixin_43665351/category_10747544.html?spm=1001.2014.3001.5482
协议Protocol:https
主机Host:blog.csdn.net
路径Path:/weixin_43665351/category_10747544.html
参数Query:?spm=1001.2014.3001.5482 参数key:spm 参数Value:1001.2014.3001.5482
端口Port:http(80) https(443)
在这里插入图片描述
map remote功能
在这里插入图片描述
第一步:开启map remote
在这里插入图片描述
在这里插入图片描述
补充:使用curl发送代理请求
-x 127.0.0.1:8888 代理地址
-k 表示不做证书验证

 curl https://baidu.com -x 127.0.0.1:8888 -k

弱网功能模拟
在这里插入图片描述
Mirror 保存抓取数据到指定文件夹
在这里插入图片描述
下载./jq,用于美化json格式文件
jq使用说明:https://stedolan.github.io/jq/tutorial/

cnpm install jp
mitmproxy

安装
GitHub地址:https://github.com/mitmproxy/mitmproxy
使用文档:https://docs.mitmproxy.org/stable/overview-installation/
Mac系统安装

brew install mitmproxy

使用pip安装

pip install pipx
pipx install mitmproxy

安装证书
参考文档:https://www.jianshu.com/p/036e5057f0b9
mac系统(PC和移动端一样)
1、启动:mitmdump
2、访问:mitm.it 下载对应系统的版本
在这里插入图片描述
3、在钥匙串中打开,信任,改成始终信任
在这里插入图片描述
mitmproxy工具组成

mitmproxy -> gives you an interactive TUI
mitmdump -> gives you a plain and simple terminal output
mitmweb -> gives you a browse-based GUI

使用
启动

mitmdump   # 启动代理默认8080 端口
mitmdump -p 8888  # 启动代理指定8888端口

录制和回放
录制

mitmdump -p 8888 -w path

回放

mitmdump -p 8888 -nC path  n不录制  C回放

过滤
过滤path1 文件中response含有baidu的请求,并且写入到path2文件

mitmdump -p 8888 -nr path1 -w path2 “~s baidu”  # n不录制 r读取 w 写入

使用过滤文档:https://docs.mitmproxy.org/stable/concepts-filters/

查看录制文件内容
1、首先启动mitmweb

mitmweb

2、将文件导入mitmweb代开的浏览器中
在这里插入图片描述
使用mitmdump实现maploacl
1、创建Python文件mitmproxy.py
mitmproxy.py

from mitmproxy import http

def request(flow: http.HTTPFlow) -> None:
    if flow.request.pretty_url == "https://www.baidu.com/":
        flow.response = http.HTTPResponse.make(
            200,  # (optional) status code
            b"Hello World",  # (optional) content
            {"Content-Type": "text/html"}  # (optional) headers
        )

2、使用mitmdump启动该文件
3、首先进入到该文件的目录下,打开网络代理。运行下面命令

mitmdump -p 8888 -s ./mitmproxy.py

4、打开https://www.baidu.com/ 返回 Hello World

串改数据
demo.json是抓取下来的数据,可以使用Charles等工具

from mitmproxy import http

def request(flow: http.HTTPFlow) -> None:
    if flow.request.pretty_url == "demo.json":     # flow.request.pretty_url  请求的URL中的内容
        with open('path/demo.json',encoding='utf-8') as f:  # 打开对应的文件
            flow.response = http.HTTPResponse.make(
                200,  # (optional) status code
                f.read(),  # (optional) content  # 读取文件的内容
                {"Content-Type": "text/html"}  # (optional) headers
            )

mapreponse(类似map remote)
在这里插入图片描述

import json

def response(flow):
    if "demo.json" == flow.request.pretty_url:
        data = json.loads(flow.response.content)
        data['data']['items'][0]['quote']['name'] = "Tester"
        print(json.dumps(data,indent=2))
        flow.request.text = json.dumps(data)  # 赋值返回后的内容
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值