@@ -8,7 +8,6 @@ import 'package:kazumi/utils/storage.dart';
88import 'package:kazumi/utils/proxy_utils.dart' ;
99import 'package:kazumi/utils/logger.dart' ;
1010import 'package:hive/hive.dart' ;
11- import 'package:flutter_socks_proxy/socks_proxy.dart' ;
1211
1312class Request {
1413 static final Request _instance = Request ._internal ();
@@ -33,7 +32,7 @@ class Request {
3332 dio.options.headers['user-agent' ] = Utils .getRandomUA ();
3433 }
3534
36- // 设置代理
35+ // 设置代理(仅支持 HTTP 代理)
3736 static void setProxy () {
3837 final bool proxyEnable =
3938 setting.get (SettingBoxKey .proxyEnable, defaultValue: false );
@@ -55,59 +54,30 @@ class Request {
5554 return ;
5655 }
5756
58- final (proxyType, proxyHost, proxyPort) = parsed;
57+ final (proxyHost, proxyPort) = parsed;
5958
60- if (proxyType == 'SOCKS5' ) {
61- // SOCKS5 代理使用 flutter_socks_proxy 库
62- try {
63- // 构建代理字符串,支持认证
64- String proxyString;
59+ dio.httpClientAdapter = IOHttpClientAdapter (
60+ createHttpClient: () {
61+ final HttpClient client = HttpClient ();
62+ client.findProxy = (Uri uri) {
63+ return 'PROXY $proxyHost :$proxyPort ' ;
64+ };
65+ // 处理代理认证
6566 if (proxyUsername.isNotEmpty && proxyPassword.isNotEmpty) {
66- proxyString = 'SOCKS5 $proxyUsername :$proxyPassword @$proxyHost :$proxyPort ' ;
67- } else {
68- proxyString = 'SOCKS5 $proxyHost :$proxyPort ' ;
67+ client.addProxyCredentials (
68+ proxyHost,
69+ proxyPort,
70+ 'Basic' ,
71+ HttpClientBasicCredentials (proxyUsername, proxyPassword),
72+ );
6973 }
70-
71- dio.httpClientAdapter = IOHttpClientAdapter (
72- createHttpClient: () {
73- final HttpClient client = createProxyHttpClient ();
74- // 设置代理
75- client.findProxy = (url) => proxyString;
76- // 忽略证书验证
77- client.badCertificateCallback =
78- (X509Certificate cert, String host, int port) => true ;
79- return client;
80- },
81- );
82- KazumiLogger ().i ('Proxy: SOCKS5 代理设置成功 $proxyHost :$proxyPort ' );
83- } catch (e) {
84- KazumiLogger ().e ('Proxy: SOCKS5 代理设置失败' , error: e);
85- }
86- } else if (proxyType == 'HTTP' ) {
87- // HTTP 代理
88- dio.httpClientAdapter = IOHttpClientAdapter (
89- createHttpClient: () {
90- final HttpClient client = HttpClient ();
91- client.findProxy = (Uri uri) {
92- return 'PROXY $proxyHost :$proxyPort ' ;
93- };
94- // 处理代理认证
95- if (proxyUsername.isNotEmpty && proxyPassword.isNotEmpty) {
96- client.addProxyCredentials (
97- proxyHost,
98- proxyPort,
99- 'Basic' ,
100- HttpClientBasicCredentials (proxyUsername, proxyPassword),
101- );
102- }
103- // 忽略证书验证
104- client.badCertificateCallback =
105- (X509Certificate cert, String host, int port) => true ;
106- return client;
107- },
108- );
109- KazumiLogger ().i ('Proxy: HTTP 代理设置成功 $proxyHost :$proxyPort ' );
110- }
74+ // 忽略证书验证
75+ client.badCertificateCallback =
76+ (X509Certificate cert, String host, int port) => true ;
77+ return client;
78+ },
79+ );
80+ KazumiLogger ().i ('Proxy: HTTP 代理设置成功 $proxyHost :$proxyPort ' );
11181 }
11282
11383 // 禁用代理
0 commit comments