当前位置: 首页 > news >正文

charles抓包flutter

一,准备工作

在我的另一篇文章flutter Dio发送post请求-CSDN博客里面,直接复用一部分代码

该方法无需让手机安装charles的ca证书(当然安装了也没事儿),也无需设置手机wifi的网络代理(因为ca证书的内容和网络代理都写进dart代码中了)

注:需要先打开charles作为代理,手机和电脑在同一局域网中(或者电脑or手机一个开热点给另一个连上)

二,coding

import 'dart:convert';
import 'dart:io';
import 'dart:typed_data';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:dio/adapter.dart';final Dio dio = Dio();class AcceptCA extends HttpOverrides {// 信任证书@overrideHttpClient createHttpClient(SecurityContext? context) {SecurityContext securityContext = SecurityContext(withTrustedRoots: true);// ca证书的内容var caContent = Uint8List.fromList(utf8.encode('''-----BEGIN CERTIFICATE-----
MIIFKjCCBBKgAwIBAgIGAZIDF60vMA0GCSqGSIb3DQEBCwUAMIGZMSowKAYDVQQDDCFDaGFybGVz
IFByb3h5IENBICgxOCBTZXAgMjAyNCwgTCkxJTAjBgNVBAsMHGh0dHBzOi8vY2hhcmxlc3Byb3h5
LmNvbS9zc2wxETAPBgNVBAoMCFhLNzIgTHRkMREwDwYDVQQHDAhBdWNrbGFuZDERMA8GA1UECAwI
QXVja2xhbmQxCzAJBgNVBAYTAk5aMB4XDTI0MDkxNzAzMDUzNloXDTI1MDkxNzAzMDUzNlowgZkx
KjAoBgNVBAMMIUNoYXJsZXMgUHJveHkgQ0EgKDE4IFNlcCAyMDI0LCBMKTElMCMGA1UECwwcaHR0
cHM6Ly9jaGFybGVzcHJveHkuY29tL3NzbDERMA8GA1UECgwIWEs3MiBMdGQxETAPBgNVBAcMCEF1
Y2tsYW5kMREwDwYDVQQIDAhBdWNrbGFuZDELMAkGA1UEBhMCTlowggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQC7B4T2grKCDC0SH/W9v+lbZMYL9R4d34Xhe/g4l+MC38GYfq4oonIprMbb
wNpeSvlrriDeImp1/lGJsj3kkY3tcySki5IeNzpEEvBrsssExiecGKQNE2jg3sdNPChacL+rpuUy
pKs20Ciu/Xoz5ut4PxD2/D43Jfm/cBf25wZN97539EV7NjZl1lLTZL0u9YoVkBbJmY5WFQpvHVv2
r+SqVJjhio2gABkQITwbjBOmIWBggy1P8Fsv4KzbLxaO2hl8hFiehiJgNtLnEzgAU8Cby8CtEuFx
Xl2nkWCFK0RG30BLiLCsoeJyPJCOi4HQjM7EQhgsDr+aZ5aSZQ7tJd61AgMBAAGjggF0MIIBcDAP
BgNVHRMBAf8EBTADAQH/MIIBLAYJYIZIAYb4QgENBIIBHROCARlUaGlzIFJvb3QgY2VydGlmaWNh
dGUgd2FzIGdlbmVyYXRlZCBieSBDaGFybGVzIFByb3h5IGZvciBTU0wgUHJveHlpbmcuIElmIHRo
aXMgY2VydGlmaWNhdGUgaXMgcGFydCBvZiBhIGNlcnRpZmljYXRlIGNoYWluLCB0aGlzIG1lYW5z
IHRoYXQgeW91J3JlIGJyb3dzaW5nIHRocm91Z2ggQ2hhcmxlcyBQcm94eSB3aXRoIFNTTCBQcm94
eWluZyBlbmFibGVkIGZvciB0aGlzIHdlYnNpdGUuIFBsZWFzZSBzZWUgaHR0cDovL2NoYXJsZXNw
cm94eS5jb20vc3NsIGZvciBtb3JlIGluZm9ybWF0aW9uLjAOBgNVHQ8BAf8EBAMCAgQwHQYDVR0O
BBYEFD8hFf1Rncg+7ulyepOQ2uQrb8NcMA0GCSqGSIb3DQEBCwUAA4IBAQBXdrCNt+0gUOGRzIz7
JjyfVOicqcSjDrB3rSDjJC++BEQgBMNeeC/N8UxmVPar9lKN9aONoT3ylsSXG9vv2iuL2bJosz9y
Wf4VREg37JFFMRc87/MzvihTjvHHGC7KR4KcI3rE+d6S3Llq+LkakCdQZ343HTUi9NcNyF7sddl5
hh0Hf/00VJ63CZ1wHh5lW0XoRtnjpZScIVOKXvWmC405lCliWFhN4kC0M2+cXcT5Sy2FA22xE8ui
gUCIQZa/D623B/SYMKdbxT3aZSoFxkCaiGAh4LHmZ5vogm9OTc2hOzDssUbrTxyLFBwzXKQlHBTQ
bDi7/SxEYgwQ2XVEDBm/
-----END CERTIFICATE-----'''));securityContext.setTrustedCertificatesBytes(caContent);return super.createHttpClient(securityContext);}
}main() {runApp(const MaterialApp(home: H(),));
}class H extends StatefulWidget {const H({super.key});@overrideState<H> createState() => _HState();
}class _HState extends State<H> {String _resStr = "";@overridevoid initState() {super.initState();HttpOverrides.global = AcceptCA();// 设置网络代理(dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =(HttpClient client) {client.badCertificateCallback =(X509Certificate cert, String host, int port) => true;client.findProxy = (uri) => 'PROXY 192.168.111.111:8888';};}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("抓包测试"),),body: Center(child: Text(_resStr,style: const TextStyle(fontSize: 30),),),floatingActionButton:FloatingActionButton(onPressed: _postRequestFunction));}void _postRequestFunction() async {FormData formData = FormData.fromMap({"sourceText": "Who are you?"});String url = "https://api.oioweb.cn/api/txt/QQFanyi";Response response = await dio.post(url, data: formData);setState(() {_resStr =json.decode(response.toString())["result"]["targetText"].toString();});}
}


http://www.mrgr.cn/news/29912.html

相关文章:

  • Unity性能优化-具体操作
  • 鸿蒙多线程开发——同步任务处理
  • 【论文笔记】Wings: Learning Multimodal LLMs without Text-only Forgetting
  • Python 基础语法 二维列表
  • 使用C语言从零开发一款支持语法高亮的文本编辑器
  • 陪诊问诊APP开发实战:基于互联网医院系统源码的搭建详解
  • 【Binlog实战】:基于Spring监听Binlog日志
  • 情感计算领域可以投稿的期刊与会议
  • 【iOS】引用计数
  • Java创建教程!(*  ̄3)(ε ̄ *)
  • C++ | Leetcode C++题解之第415题字符串相加
  • 酒店布草洗涤-酒店分层管理编程实现--———未来之窗行业应用跨平台架构
  • NCU-机器学习-作业2:金鱼年龄预测
  • MySQL查询第M条到第N条数据(M<N)
  • 超大酒店司机收布草-酒店分层管理--酒店布草洗涤
  • 虚拟机vaware中cpu设置跑满大核
  • 算法训练——day16快乐数
  • MFC获取网页的html文本
  • [产品管理-25]:NPDP新产品开发 - 23 - 产品创新中的市场调研 - 定量市场调研的常见工具
  • 计算机视觉——GFLOPs、FLOPS和FLOPs的区别和联系
  • spug项目实现代码本地启动步骤
  • typescript-tsconfig文件解释
  • 时间序列数据库之InfluxDB
  • Linux(ubuntu)(c语言程序)
  • C编程控制PC蜂鸣器方法2
  • 【TypeScript】 ts控制语句