Github: https://github.com/wanghongenpin/proxypin
ProxyPin运行机制是在启动了一个本地代理服务器(默认监听端口9099)来接收网络请求,当客户端与代理服务器进行通信时,ProxyPin会使用自签名SSL证书进行客户端SSL握手通信。为了保证客户端与中间人成功进行SSL握手通信,需要将ProxyPin的根证书安装到系统里。
桌面端:
抓包软件会把系统网络代理设置为代理服务器的地址和端口,比如浏览器等其他客户端发送网络请求时,会将流量转发到代理监听的端口上,从而被ProxyPin代理服务器捕获。但是有些软件并不会读取系统代理信息,可以借助于其他软件(如Proxifier)将流量转ProxyPin。
手机端:
第一种配置Wi-Fi代理:
你可以将Wi-Fi代理配置成代理服务器的地址和端口,手机和电脑需要在同一个局域网下,这样系统会将所有流量转发给代理服务器,但是Flutter应用发起的请求不会走代理
第二种使用VPN服务:
VpnService会创建一个虚拟网卡,然后通过NAT,将所有的数据包转发到TUN虚拟网卡上去.
VPN程序读取该虚拟网卡设备上的数据,可以获得所有转发到TUN虚拟网络设备上的IP包。
应用程序会解析IP数据包,获取TCP/UDP数据, 如果是UDP会原文转发到实际的目标地址, TCP数据会判断是否是HTTP(S)协议包, 如果是将会转发到ProxyPin代理服务, 从而实现数据拦截处理.
HTTP协议是明文传出, 可以直接解析HTTP报文.
什么是HTTPS?
超文本传输协议安全(HTTPS)是HTTP的安全版本。HTTPS在HTTP协议的基础上使用TLS/SSL加密进行通信,以提高数据传输的安全性。
TLS和SSL之间有什么区别?
Netscape(网景)开发了名为安全套接字层(Secure Socket Layer,SSL)的加密协议,用于在网络上的两个设备之间创建安全连接.
但是,SSL是一种较老的技术,包含一些安全漏洞。传输层安全性协议(TLS)是SSL 的升级版本,用于修复现有SSL漏洞。TLS1.0版实际上最初作为SSL3.1版开发,但在发布前更改了名称,以表明它不再与Netscape关联。由于这个历史原因,TLS和SSL这两个术语有时会互换使用。
现在使用的都是TLS协议,目前常用版本TLS1.2或较新TLS1.3。
HTTPS为了兼顾安全与效率,同时使用了 对称加密 和 非对称加密。在TLS/SSL握手阶段,使用非对称加密来保证对称加密密钥在传输过程中的安全性,在 HTTPS 连接建立后,会使用对称加密算法对实际传输的数据。因为通常对称加密算法速度更快。
从TLS握手可知,我们如果想解密数据,可以在收到TLS Client Hello包时,响应给客户端自签名的证书,这样后续就可以用自签名证书解密密钥信息。但是由于我们自签名证书不是受信任机构签发的,所以需要把根证书安装到系统受信任根证书里。
如果你想拦截电脑流量需要在电脑上安装根证书,拦截手机需要在手机端安装证书
Windows根证书安装
点击安装证书或者双击证书文件进行安装,选择“受信任的根证书颁发机构”
Mac根证书安装
点击安装证书或将证书文件拖拽到钥匙串系统证书里,安装完双击选择“始终信任此证书”
iOS根证书安装
下载手机端ProxyPin, 在HTTPS代理菜单下载根证书或者通过配置WI-FI代理连接电脑访问进行下载证书。下载完整证书需要信任证书。
安装证书 设置 > 已下载描述文件 > 安装
信任证书 设置 > 通用 > 关于本机 > 证书信任设置
安卓根证书安装
所以Android7之后大部分应用需要把证书安装到系统下,才可以进行抓包。但是安装到系统里需要ROOT,您也可以使用MuMu等模拟器。
Magisk模块:
安卓ROOT设备可以使用Magisk ProxyPinCA系统证书模块, 安装完重启手机后 在系统证书查看是否有ProxyPinCA证书,如果有说明证书安装成功。
您也可以使用frida绕过安卓ssl pinning
无ROOT可以使用Xposed模块抓包,只能hook原生请求,flutter等请求无法处理。
捕获到流量之后,可以使用调试功能进行数据模拟等各种测试。ProxyPin提供了非常强大的调试功能,主要有重写、断点和脚本功能。
可通过重写规则来修改请求和响应内容。目前重写支持5种类型,分别是替换请求、替换响应、修改请求、修改响应和重定向。
替换请求
表示整体替换请求数据,支持替换的部分包括:请求方法、请求路径、请求头和请求体。
替换响应
此重写行为表示整体替换响应数据,支持替换的部分:状态码方法、响应头、响应体。
修改请求
相比于替换请求行为,修改请求提供了更加细致化的修改策略。例如删除查询参数,正则替换请求体的内容。
修改响应
基本操作同上面修改请求。
function onRequest(context, request)
在请求到达服务器之前,调用此函数,您可以在此处修改请求数据
具体参数格式见 > 参数定义
function onResponse(context, request, response)
在将响应数据发送到客户端之前,调用此函数,您可以在此处修改响应数据
参数定义
JS内置方法
File 文件操作
API和dart一致,见dart File文档 https://api.dart.ac.cn/stable/3.4.4/dart-io/File-class.html
Fetch API使用参考文档
到此这篇本地回环地址有什么用(本地回环地址什么意思)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/71921.html