Ngiêm cấm sử đụng PROXY và VPS vào mục đích trái pháp luật bạn sẽ phải chịu toàn bộ trách nhiệm trước pháp luật khi sử dụng dịch vụ của chúng tôi tks!
Flutter proxy: Cấu hình HttpClient, Dio và debug qua proxy

Flutter proxy: Cấu hình HttpClient, Dio và debug qua proxy

Chuyên viên Kỹ thuật ProxyVN 06-19-2026 Đang tính... phút đọc

Flutter proxy là cách cấu hình để ứng dụng viết bằng Flutter gửi yêu cầu mạng qua máy chủ proxy. Nhiều lập trình viên ngạc nhiên khi đã cài proxy cho Wi-Fi trên điện thoại, trình duyệt đi qua proxy nhưng ứng dụng Flutter vẫn đi thẳng, công cụ bắt lưu lượng không thấy gì. Bài này ProxyVN giải thích vì sao Flutter không theo proxy hệ thống, cách đặt proxy cho HttpClient của dart:io, cho thư viện Dio và gói http, cách đọc proxy hệ thống, cho phép chứng chỉ tự ký khi debug và bắt lưu lượng bằng mitmproxy hay Charles. Xem thêm dịch vụ tại ProxyVN.

Tổng quan về Flutter proxy

Flutter là bộ công cụ giao diện của Google, viết bằng ngôn ngữ Dart, chạy trên Android, iOS, web và máy tính để bàn. Ứng dụng Flutter trên di động và máy tính gửi yêu cầu HTTP qua thư viện dart:io, cụ thể là lớp HttpClient. Các thư viện phổ biến như http và Dio đều dựa trên HttpClient này khi chạy ngoài trình duyệt.

Điểm khác biệt quan trọng: HttpClient của Dart không tự đọc cài đặt proxy của Android hay iOS. Nó chỉ dùng proxy khi lập trình viên chỉ định qua thuộc tính findProxy. Tài liệu lớp này có ở trang HttpClient của Dart.

Vì sao app Flutter bỏ qua proxy Wi-Fi

Vì sao app Flutter bỏ qua proxy Wi-Fi

Vì sao app Flutter bỏ qua proxy Wi-Fi

Ứng dụng Android viết bằng Java, Kotlin dùng thư viện mạng của hệ thống, tự đọc proxy Wi-Fi. Ứng dụng iOS dùng URLSession cũng vậy. Flutter có tầng mạng riêng viết bằng Dart, mở kết nối socket trực tiếp, nên cài đặt proxy của hệ điều hành không có tác dụng. Đây là lý do số một khiến người debug ứng dụng Flutter không thấy lưu lượng trong công cụ bắt gói.

Khi nào cần Flutter proxy

  • Debug API: xem ứng dụng gửi gì, nhận gì bằng mitmproxy, Charles, Proxyman.
  • Mạng công ty bắt buộc proxy: ứng dụng nội bộ chạy trên máy tính để bàn trong mạng có proxy.
  • Kiểm thử theo vùng: xem ứng dụng hiển thị gì với IP của một vùng khác.
  • Ứng dụng có tính năng proxy: ứng dụng quản lý nhiều tài khoản, ứng dụng thu thập dữ liệu cần đi qua proxy người dùng nhập.

Flutter proxy với HttpClient của dart:io

Mọi cách cấu hình proxy trong Flutter rốt cuộc đều quy về HttpClient và hàm findProxy. Tài liệu hàm có ở trang findProxy.

Hàm findProxy của HttpClient

Hàm findProxy của HttpClient

Hàm findProxy

findProxy nhận địa chỉ đích và trả về một chuỗi theo cú pháp giống tệp PAC: "PROXY host:port" để đi qua proxy, "DIRECT" để đi thẳng. Có thể nối nhiều lựa chọn bằng dấu chấm phẩy, HttpClient thử lần lượt.

final client = HttpClient();
client.findProxy = (uri) {
  return "PROXY 192.168.1.10:8080; DIRECT";
};

Chuỗi trên nghĩa là thử đi qua proxy trước, không được thì đi thẳng. Bỏ phần DIRECT nếu muốn bắt buộc qua proxy.

Chọn proxy theo địa chỉ

Vì findProxy nhận uri, có thể chọn đường theo tên máy:

client.findProxy = (uri) {
  if (uri.host.endsWith(".noibo.local")) return "DIRECT";
  return "PROXY 10.0.0.5:8080";
};

Cách này giống danh sách ngoại lệ, hữu ích khi ứng dụng gọi cả dịch vụ nội bộ và dịch vụ bên ngoài. Cú pháp chuỗi kế thừa từ tệp PAC, giải thích trong bài PAC proxy.

Đọc proxy từ biến môi trường

HttpClient có hàm tĩnh findProxyFromEnvironment, đọc biến http_proxy, https_proxy, no_proxy. Hàm này hữu ích cho ứng dụng máy tính để bàn và công cụ dòng lệnh viết bằng Dart, nhưng trên điện thoại thường không có biến môi trường nên ít tác dụng.

Proxy có tài khoản mật khẩu

Có hai cách. Cách một, thêm thông tin xác thực bằng addProxyCredentials với HttpClientBasicCredentials. Cách hai, gán hàm authenticateProxy để cung cấp tài khoản khi proxy đòi. Thông tin không đặt trong chuỗi findProxy.

client.addProxyCredentials("10.0.0.5", 8080, "",
    HttpClientBasicCredentials("user01", "matkhau"));

Lưu ý về SOCKS

HttpClient của Dart chỉ hỗ trợ proxy HTTP qua findProxy. Muốn dùng SOCKS5, cần gói bên thứ ba dựng kết nối SOCKS hoặc dùng cổng HTTP của cùng proxy. Khác biệt giữa hai giao thức có trong bài proxy HTTP và SOCKS5.

Flutter proxy cho thư viện Dio

Dio là thư viện HTTP phổ biến nhất trong cộng đồng Flutter, có interceptor, huỷ yêu cầu, tải tệp. Trang gói có ở pub.dev Dio.

Cấu hình proxy cho Dio

Cấu hình proxy cho Dio

Cấu hình qua IOHttpClientAdapter

Dio cho phép tạo HttpClient riêng thông qua bộ chuyển đổi kết nối. Từ Dio 5, dùng IOHttpClientAdapter với hàm createHttpClient:

final dio = Dio();
dio.httpClientAdapter = IOHttpClientAdapter(
  createHttpClient: () {
    final client = HttpClient();
    client.findProxy = (uri) => "PROXY 192.168.1.10:8080";
    return client;
  },
);

Các phiên bản cũ dùng DefaultHttpClientAdapter với onHttpClientCreate. Nếu đọc hướng dẫn cũ trên mạng, chú ý tên lớp đã đổi.

Bật tắt theo môi trường build

Chỉ gắn proxy khi chạy bản debug, dùng hằng kDebugMode của Flutter hoặc biến truyền qua --dart-define. Bản phát hành không được còn sót cấu hình proxy debug, nếu không ứng dụng của người dùng thật sẽ cố kết nối tới máy của lập trình viên và lỗi mạng.

flutter run --dart-define=PROXY=192.168.1.10:8080

Trong mã, đọc String.fromEnvironment("PROXY"), nếu rỗng thì không gắn proxy.

Gói http

Gói http chính thức dùng IOClient trên di động. Tạo HttpClient có findProxy, bọc trong IOClient rồi dùng như bình thường. Cách này cho phép giữ nguyên mã gọi API cũ, chỉ đổi chỗ tạo client.

Thư viện khác

Thư viện dùng nền tảng gốc như cronet_http trên Android hay cupertino_http trên iOS lại tôn trọng proxy hệ thống, vì chúng gọi thư viện mạng của hệ điều hành. Đây là một lựa chọn nếu muốn ứng dụng tự theo proxy Wi-Fi mà không phải viết findProxy.

Đọc proxy hệ thống cho Flutter proxy

Khi muốn ứng dụng tự theo proxy mà người dùng đã cài trong Wi-Fi, cần lấy thông tin proxy từ phía nền tảng rồi đưa cho findProxy.

Dùng gói đọc proxy hệ thống

Trên pub.dev có các gói gọi API gốc của Android, iOS để lấy host và port của proxy hiện tại. Ứng dụng gọi gói này lúc khởi động, nếu có proxy thì cấu hình findProxy tương ứng.

Tự viết bằng platform channel

Ở Android, phía Kotlin đọc System.getProperty của http.proxyHost và http.proxyPort, hoặc dùng ConnectivityManager để lấy LinkProperties. Ở iOS, dùng CFNetworkCopySystemProxySettings. Kết quả trả về Dart qua MethodChannel.

Lưu ý khi mạng thay đổi

Người dùng đổi Wi-Fi thì proxy cũng đổi. Ứng dụng nên đọc lại cấu hình khi trạng thái mạng thay đổi, hoặc đọc mỗi lần tạo HttpClient mới. Cách cài proxy cho Wi-Fi điện thoại có trong bài cài proxy cho Android và bài cách cài proxy trên iPhone.

Tệp PAC

Nếu mạng dùng tệp PAC, gói đọc proxy cần đánh giá tệp PAC theo địa chỉ đích. Phần lớn gói đơn giản chỉ trả proxy tĩnh, nên với mạng doanh nghiệp dùng PAC, giải pháp dùng cronet_http, cupertino_http thường đơn giản hơn.

Debug Flutter proxy với mitmproxy và Charles

Lý do phổ biến nhất để cấu hình proxy trong Flutter là xem lưu lượng API khi phát triển.

Bắt lưu lượng app Flutter khi debug

Bắt lưu lượng app Flutter khi debug

Bước 1: chạy công cụ bắt lưu lượng trên máy tính

Chạy mitmproxy, Charles hoặc Proxyman trên máy tính, ghi lại IP mạng nội bộ của máy và cổng lắng nghe, thường là 8080 hoặc 8888. Hướng dẫn mitmproxy có trong bài mitmproxy, Charles có trong bài Charles Proxy là gì.

Bước 2: trỏ findProxy về máy tính

Trong bản debug, findProxy trả về "PROXY 192.168.1.10:8080" với IP của máy tính. Điện thoại và máy tính phải cùng mạng Wi-Fi. Với máy ảo Android, địa chỉ của máy tính là 10.0.2.2.

Bước 3: cho phép chứng chỉ của công cụ

Công cụ bắt lưu lượng giải mã HTTPS bằng chứng chỉ riêng. HttpClient của Dart không tin chứng chỉ này nên báo lỗi bắt tay. Trong bản debug, gán badCertificateCallback trả về true:

client.badCertificateCallback = (cert, host, port) => kDebugMode;

Chỉ trả về true khi kDebugMode. Không bao giờ để hàm này trả về true trong bản phát hành, vì như vậy ứng dụng chấp nhận mọi chứng chỉ và người dùng có thể bị nghe lén. Kiểu tấn công này được giải thích trong bài tấn công MITM.

Bước 4: kiểm tra

Mở ứng dụng, thực hiện thao tác gọi API, xem yêu cầu xuất hiện trong công cụ. Nếu không thấy, kiểm tra findProxy đã được gán cho đúng client mà Dio hay http đang dùng.

Cách khác: HttpOverrides toàn cục

Lớp HttpOverrides cho phép ghi đè cách tạo mọi HttpClient trong ứng dụng. Gán HttpOverrides.global bằng lớp con có createHttpClient đặt findProxy và badCertificateCallback. Mọi thư viện dùng dart:io đều đi qua proxy mà không phải sửa từng chỗ. Đây là cách nhanh nhất khi ứng dụng dùng nhiều thư viện mạng khác nhau.

Flutter proxy trên từng nền tảng

Bảng: Flutter proxy trên từng nền tảng

Nền tảng

Tầng mạng mặc định

Theo proxy hệ thống

Android

dart:io HttpClient

Không, trừ khi dùng cronet_http

iOS

dart:io HttpClient

Không, trừ khi dùng cupertino_http

Windows, macOS, Linux

dart:io HttpClient

Không, đọc được biến môi trường

Web

Trình duyệt

Có, trình duyệt quyết định

Flutter Web

Ứng dụng Flutter chạy trên web gửi yêu cầu bằng API của trình duyệt, nên đi qua proxy mà trình duyệt đang dùng. findProxy không có tác dụng trên web. Cách cài proxy cho trình duyệt có trong bài cài đặt proxy cho Google Chrome.

Máy tính để bàn

Ứng dụng Flutter trên Windows, macOS, Linux có thể dùng findProxyFromEnvironment để theo biến môi trường, phù hợp với mạng công ty đã đặt biến. Trên Windows, muốn theo proxy hệ thống cần đọc registry hoặc gọi API WinHTTP qua FFI.

Máy ảo và thiết bị thật

Máy ảo Android gọi máy tính qua 10.0.2.2, máy ảo iOS dùng localhost của máy Mac. Thiết bị thật phải dùng IP mạng nội bộ của máy tính. Nhầm địa chỉ là nguyên nhân hay gặp khi debug không thấy lưu lượng.

Kiểm thử ứng dụng Flutter theo vùng bằng proxy

Ngoài debug, proxy giúp kiểm thử ứng dụng ở các vùng khác nhau mà không cần thiết bị ở vùng đó.

Nội dung phụ thuộc vị trí

Ứng dụng thương mại điện tử, ứng dụng tin tức hiển thị nội dung, giá, ngôn ngữ theo IP. Đặt findProxy trỏ tới proxy ở vùng cần kiểm thử để xem kết quả. Khái niệm nhắm vùng được giải thích trong bài geo-targeting proxy.

Kết hợp với kiểm thử tự động

Bài kiểm thử tích hợp của Flutter có thể nhận proxy qua --dart-define, chạy nhiều lần với proxy khác nhau. Khi cần điều khiển ứng dụng như người dùng thật trên nhiều thiết bị, công cụ như Appium phù hợp hơn, xem bài Appium proxy.

Proxy ổn định cho kiểm thử

Kiểm thử ứng dụng của chính mình cần proxy nhanh, ổn định, ít khi đổi IP. Nếu cần proxy Việt Nam tốc độ cao cho kiểm thử ứng dụng, anh em có thể mua proxy tại ProxyVN, mỗi proxy hỗ trợ cả HTTP và SOCKS5.

Ứng dụng Flutter cho người dùng nhập proxy

Một số ứng dụng có tính năng cho người dùng tự nhập proxy, ví dụ ứng dụng quản lý tài khoản, ứng dụng kiểm tra mạng.

Lưu và áp dụng cấu hình

Lưu host, port, tài khoản bằng gói lưu trữ an toàn như flutter_secure_storage. Mỗi khi cấu hình thay đổi, tạo lại HttpClient hoặc Dio với findProxy mới. HttpClient cũ nên được đóng để giải phóng kết nối.

Kiểm tra proxy trước khi dùng

Gọi một dịch vụ trả về IP qua proxy vừa nhập, hiển thị IP và thời gian phản hồi cho người dùng. Nếu lỗi, báo rõ là sai địa chỉ, sai tài khoản hay hết thời gian chờ. Các định dạng proxy người dùng hay dán vào có trong bài định dạng proxy.

Xử lý lỗi 407

Khi proxy trả 407, hàm authenticateProxy được gọi. Nếu không có tài khoản, trả false để yêu cầu thất bại với lỗi rõ ràng thay vì treo.

Mỗi tài khoản một client

Ứng dụng quản lý nhiều tài khoản nên tạo client riêng cho từng tài khoản, mỗi client một proxy và một kho cookie riêng. Dùng chung client làm lẫn proxy giữa các tài khoản.

Lỗi Flutter proxy thường gặp và cách sửa

Bảng: Lỗi Flutter proxy thường gặp và cách sửa

Hiện tượng

Nguyên nhân khả dĩ

Cách sửa

Không thấy lưu lượng trong Charles

App không theo proxy Wi-Fi

Đặt findProxy hoặc HttpOverrides

HandshakeException khi debug

Không tin chứng chỉ của công cụ bắt gói

badCertificateCallback chỉ trong debug

SocketException: Connection refused

Sai IP máy tính, công cụ chưa chạy

Dùng 10.0.2.2 cho máy ảo, kiểm tra tường lửa máy tính

407 Proxy Authentication Required

Thiếu thông tin xác thực

addProxyCredentials hoặc authenticateProxy

Bản phát hành không kết nối được

Sót cấu hình proxy debug

Bọc bằng kDebugMode, kiểm tra trước khi phát hành

Dio vẫn đi thẳng

Gán proxy cho client khác

Gán qua IOHttpClientAdapter của đúng đối tượng Dio

Tường lửa máy tính chặn cổng

Windows Defender Firewall hay tường lửa macOS có thể chặn kết nối từ điện thoại tới cổng của công cụ bắt gói. Cho phép ứng dụng công cụ qua tường lửa ở mạng riêng.

Ứng dụng dùng certificate pinning

Nếu ứng dụng ghim chứng chỉ máy chủ, bắt gói sẽ luôn lỗi kể cả khi đã cho phép chứng chỉ. Tắt ghim trong bản debug, không tắt trong bản phát hành.

Flutter proxy và tài liệu mạng chính thức

Trang Networking của Flutter hướng dẫn cách gửi yêu cầu, xin quyền mạng trên Android, macOS và các lưu ý theo nền tảng. Trước khi nghi proxy, kiểm tra ứng dụng đã có đủ quyền mạng chưa.

Quyền INTERNET trên Android

Bản debug của Flutter tự có quyền INTERNET, nhưng bản phát hành cần khai báo trong AndroidManifest.xml của thư mục main. Thiếu quyền này, ứng dụng không gửi được yêu cầu nào, lỗi trông giống lỗi proxy.

Quyền mạng trên macOS

Ứng dụng macOS chạy trong sandbox, cần khoá com.apple.security.network.client trong tệp entitlements. Không có khoá này, mọi kết nối ra ngoài bị chặn kể cả khi proxy đúng.

HTTP thường bị chặn

Android từ bản 9 và iOS mặc định chặn kết nối HTTP không mã hoá. Kết nối tới proxy là HTTP thường nhưng không bị ảnh hưởng, vì quy định chỉ áp cho địa chỉ đích. Nếu API đích là HTTP thường trong môi trường thử nghiệm, cần mở ngoại lệ trong network security config hoặc Info.plist.

Máy chủ phát triển cục bộ

Khi ứng dụng gọi API chạy trên máy tính của lập trình viên, địa chỉ đó cần được loại khỏi proxy trong findProxy, trả về DIRECT. Nếu không, yêu cầu tới máy chủ cục bộ bị gửi sang công cụ bắt gói rồi mới quay lại, vừa chậm vừa dễ lỗi.

Quy trình gỡ lỗi Flutter proxy từng bước

Khi không thấy lưu lượng hoặc ứng dụng lỗi mạng sau khi đặt proxy, đi theo thứ tự sau để khoanh vùng.

Bước 1: thử proxy từ trình duyệt điện thoại

Cài proxy Wi-Fi trên điện thoại trỏ tới máy tính, mở trình duyệt vào một trang bất kỳ. Nếu công cụ bắt gói thấy yêu cầu, đường mạng từ điện thoại tới máy tính đã thông. Nếu không thấy, vấn đề nằm ở IP, cổng hoặc tường lửa, chưa liên quan tới mã Flutter.

Bước 2: in giá trị findProxy trả về

Thêm dòng in nhật ký trong hàm findProxy, in uri và chuỗi trả về. Nếu không thấy dòng nào, hàm chưa được gán cho client mà thư viện đang dùng.

Bước 3: thử với HttpClient thuần

Viết một đoạn ngắn tạo HttpClient, gán findProxy, gọi một địa chỉ HTTPS. Nếu chạy được, lỗi nằm ở cách gắn proxy vào Dio hay gói http. Nếu không, xem lại chứng chỉ và badCertificateCallback.

Bước 4: kiểm tra từng loại lỗi

SocketException là lỗi đường mạng, HandshakeException là lỗi chứng chỉ, mã 407 là lỗi xác thực. Mỗi loại một hướng sửa khác nhau, đọc kỹ thông báo trước khi đổi cấu hình.

Bước 5: thử trên máy ảo và thiết bị thật

Máy ảo và thiết bị thật dùng địa chỉ khác nhau để gọi máy tính. Chạy được trên máy ảo mà không chạy trên thiết bị thật thường do vẫn để 10.0.2.2 hoặc localhost trong cấu hình.

Flutter proxy trong mạng công ty

Ứng dụng Flutter cho máy tính để bàn dùng nội bộ doanh nghiệp hay gặp proxy bắt buộc. Một số điểm cần chú ý khi phát triển cho môi trường này.

Đọc cấu hình mà IT đã đặt

Trên Windows, doanh nghiệp thường đẩy proxy qua chính sách nhóm vào cài đặt Internet. Ứng dụng cần đọc cấu hình này, qua registry hoặc API WinHTTP, thay vì bắt người dùng nhập tay. Cách xem proxy đang có trên máy có trong bài cách xem proxy của máy tính.

Proxy NTLM

HttpClient của Dart không tự xác thực NTLM với proxy công ty. Giải pháp thường dùng là chạy proxy trung gian cục bộ như Cntlm hay Px, ứng dụng trỏ findProxy tới cổng cục bộ không cần xác thực.

Chứng chỉ gốc của công ty

Proxy kiểm tra HTTPS của doanh nghiệp dùng chứng chỉ riêng. Thay vì badCertificateCallback, tạo SecurityContext nạp thêm chứng chỉ gốc của công ty rồi truyền vào HttpClient. Cách này giữ được kiểm tra chứng chỉ cho mọi máy chủ khác.

Ghi nhật ký kết nối

Ứng dụng nội bộ nên ghi nhật ký lỗi mạng kèm proxy đang dùng. Khi người dùng báo không vào được, bộ phận hỗ trợ đọc nhật ký là biết lỗi do proxy hay do máy chủ.

Mẫu tổ chức mã Flutter proxy gọn gàng

Cấu hình proxy rải rác khắp ứng dụng rất khó bảo trì. Gom về một chỗ giúp bật tắt dễ và tránh sót khi phát hành.

Một lớp tạo client duy nhất

Viết một lớp hoặc hàm duy nhất chịu trách nhiệm tạo HttpClient, Dio cho cả ứng dụng. Mọi màn hình, mọi dịch vụ lấy client từ đây. Khi cần đổi proxy, chỉ sửa một nơi.

Cấu hình theo môi trường

Tách ba môi trường: phát triển có proxy debug, kiểm thử có proxy theo vùng, phát hành không có proxy hoặc dùng proxy người dùng nhập. Mỗi môi trường đọc giá trị từ --dart-define khác nhau, không viết cứng địa chỉ trong mã.

Kiểm tra tự động trước khi phát hành

Thêm một bài kiểm thử đơn vị đảm bảo khi không có biến PROXY, client tạo ra không gán findProxy và không gán badCertificateCallback. Bài kiểm thử này chạy trong CI, chặn bản phát hành nếu sót cấu hình debug.

Bảo mật khi dùng Flutter proxy

Không phát hành cấu hình debug

Kiểm tra mã trước khi phát hành, đảm bảo findProxy, badCertificateCallback và HttpOverrides chỉ được gán trong nhánh kDebugMode hoặc khi có biến build. Một số đội thêm bài kiểm tra tự động quét mã tìm badCertificateCallback trả về true.

Lưu mật khẩu proxy an toàn

Ứng dụng cho người dùng nhập proxy phải lưu mật khẩu bằng kho bảo mật của hệ điều hành, không lưu bằng SharedPreferences dạng chữ thường.

Chứng chỉ của công cụ bắt gói

Sau khi debug xong, gỡ chứng chỉ của mitmproxy, Charles khỏi điện thoại. Chứng chỉ gốc lạ còn nằm trên máy là rủi ro nếu ai đó có được khoá riêng.

Cảnh báo kết nối không riêng tư

Người dùng thấy cảnh báo kết nối không riêng tư trong trình duyệt khi điện thoại còn cài proxy debug là dấu hiệu chưa gỡ cấu hình. Ý nghĩa cảnh báo có trong bài kết nối của bạn không phải là kết nối riêng tư.

Câu hỏi thường gặp về Flutter proxy

Vì sao app Flutter không theo proxy Wi-Fi

Vì HttpClient của Dart có tầng mạng riêng, không đọc cài đặt proxy của Android, iOS. Phải đặt findProxy, dùng HttpOverrides hoặc dùng thư viện gốc như cronet_http, cupertino_http.

Có cần root điện thoại để bắt lưu lượng app Flutter không

Không, nếu sửa được mã ứng dụng. Đặt findProxy trỏ về máy tính và cho phép chứng chỉ trong bản debug là đủ. Chỉ khi phân tích ứng dụng không có mã nguồn mới cần kỹ thuật khác.

findProxy có hỗ trợ SOCKS5 không

Không. findProxy chỉ hiểu PROXY và DIRECT. Muốn SOCKS5 cần gói bên thứ ba hoặc dùng cổng HTTP của cùng proxy.

Đặt proxy một chỗ cho cả ứng dụng được không

Được, bằng HttpOverrides.global gán ngay đầu hàm main. Mọi HttpClient tạo sau đó, kể cả trong Dio và gói http, đều dùng cấu hình này.

Flutter Web có dùng findProxy được không

Không. Trên web, yêu cầu do trình duyệt gửi nên dùng proxy của trình duyệt. findProxy chỉ có tác dụng khi chạy trên di động và máy tính để bàn.

Proxy có làm app Flutter chậm không

Có thêm một chặng mạng nên độ trễ tăng. Proxy gần, ổn định thì chênh lệch nhỏ. Công cụ bắt gói chạy trên máy tính có thể làm chậm rõ hơn khi ghi lại nhiều yêu cầu lớn, chỉ bật khi cần.

Tổng kết

Flutter proxy không tự theo proxy Wi-Fi vì HttpClient của Dart có tầng mạng riêng. Đặt proxy bằng findProxy trả về chuỗi PROXY host:port, cấu hình Dio qua IOHttpClientAdapter, hoặc dùng HttpOverrides.global cho cả ứng dụng. Khi debug với mitmproxy, Charles, chỉ cho phép chứng chỉ trong bản debug và gỡ sạch trước khi phát hành. Muốn theo proxy hệ thống, dùng cronet_http, cupertino_http hoặc đọc cấu hình qua platform channel. Cần proxy Việt Nam ổn định cho kiểm thử ứng dụng, anh em liên hệ Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam để được tư vấn.

TIN TỨC LIÊN QUAN