Quay lại blog

Hướng dẫn đầy đủ về Fiddler để gỡ lỗi lưu lượng HTTP cho ứng dụng Windows và UWP: cấu hình proxy chi tiết

Fiddler là công cụ mạnh mẽ để chặn và phân tích lưu lượng HTTP/HTTPS trong các ứng dụng Windows và UWP. Chúng tôi sẽ xem xét cách cấu hình, chặn yêu cầu và tích hợp với proxy.

📅6 tháng 8, 2026
```html

Nếu bạn đang phát triển hoặc kiểm tra các ứng dụng Windows và muốn thấy chính xác các yêu cầu HTTP mà chúng gửi đi — Fiddler sẽ là công cụ chính của bạn. Nó chặn toàn bộ lưu lượng, cho phép bạn phân tích, thay đổi ngay lập tức và phát lại. Điều này đặc biệt hữu ích khi làm việc với các ứng dụng UWP, vốn mặc định bỏ qua proxy hệ thống.

Trong hướng dẫn này, chúng ta sẽ xem xét việc cài đặt, cấu hình chặn HTTPS, làm việc với UWP, kết nối proxy bên ngoài và các kịch bản sử dụng điển hình — từ gỡ lỗi API đến theo dõi các yêu cầu nền.

Fiddler là gì và nó có tác dụng gì

Fiddler là một trình gỡ lỗi HTTP-proxy, được phát triển bởi công ty Telerik (nay là Progress). Nó hoạt động như một máy chủ proxy cục bộ: tất cả các yêu cầu HTTP và HTTPS từ máy tính của bạn đều đi qua nó, và bạn có thể thấy từng yêu cầu trong thời gian thực. Công cụ này miễn phí, có hai phiên bản — Fiddler Classic (chỉ dành cho Windows) và Fiddler Everywhere (đa nền tảng).

Fiddler khác gì so với DevTools trong trình duyệt? Các công cụ phát triển trong trình duyệt chỉ hiển thị lưu lượng của chính trình duyệt. Fiddler lại chặn các yêu cầu từ mọi ứng dụng trên máy tính của bạn: các chương trình desktop, dịch vụ hệ thống, các tiến trình nền của Windows, các ứng dụng di động qua Wi-Fi và — điều đặc biệt quan trọng — các ứng dụng UWP từ Microsoft Store.

Các nhiệm vụ điển hình mà Fiddler giải quyết:

  • Phân tích các yêu cầu API của các ứng dụng desktop — chương trình gửi đi cái gì, các tiêu đề nào, dữ liệu nào
  • Gỡ lỗi mã của riêng bạn — bạn thấy các yêu cầu thực tế của ứng dụng, không phải những gì bạn dự kiến gửi đi
  • Thay đổi các yêu cầu và phản hồi ngay lập tức — thay thế dữ liệu để kiểm tra các trường hợp biên
  • Theo dõi hoạt động nền — các máy chủ nào mà chương trình "gọi" mà không có sự cho phép của bạn
  • Kiểm tra qua proxy — kiểm tra hành vi của ứng dụng khi hoạt động qua máy chủ proxy bên ngoài
  • Phát lại các yêu cầu — gửi lại yêu cầu đã chặn với các tham số đã thay đổi

Fiddler đặc biệt có giá trị cho các nhà phát triển làm việc với các API kín — ví dụ, đảo ngược kỹ thuật giao thức của ứng dụng di động hoặc khách hàng desktop. Bạn chỉ cần khởi động chương trình, nhấn các nút cần thiết trong giao diện và thấy tất cả các yêu cầu trong Fiddler.

Cài đặt và cấu hình ban đầu

Cài đặt Fiddler Classic mất khoảng hai phút. Tải xuống trình cài đặt từ trang web chính thức telerik.com/fiddler và khởi chạy nó. Sau khi cài đặt, Fiddler tự động đăng ký mình như một proxy hệ thống Windows trên cổng 127.0.0.1:8888.

Ngay sau khi khởi động, bạn sẽ thấy cửa sổ chính với ba khu vực:

  • Bảng bên trái (Sessions) — danh sách tất cả các yêu cầu đã chặn trong thời gian thực
  • Bảng bên phải phía trên — chi tiết yêu cầu đã chọn (tiêu đề, nội dung, tham số)
  • Bảng bên phải phía dưới — phản hồi từ máy chủ

Điều đầu tiên bạn nên làm là cấu hình bộ lọc, nếu không danh sách sẽ chứa toàn bộ lưu lượng hệ thống Windows (cập nhật, telemetry, OneDrive, v.v.), và sẽ rất khó để tìm các yêu cầu cần thiết. Chuyển đến tab Filters ở bên phải và bật Use Filters. Trong trường Show only the following Hosts, hãy chỉ định các miền mà bạn quan tâm.

Các phím tắt hữu ích của Fiddler Classic:

  • F12 — bật/tắt chặn lưu lượng
  • Ctrl+X — xóa danh sách phiên
  • Ctrl+F — tìm kiếm trong các phiên
  • R — lặp lại yêu cầu đã chọn
  • Shift+Delete — xóa các phiên đã chọn

Chúng tôi cũng khuyên bạn nên ngay lập tức cấu hình tự động lưu các phiên: File → Capture TrafficFile → Save → All Sessions. Điều này sẽ cho phép bạn quay lại lưu lượng đã ghi lại sau này và phân tích nó ngoại tuyến.

Chặn lưu lượng HTTPS: cấu hình chứng chỉ

Theo mặc định, Fiddler chỉ chặn lưu lượng HTTP. Để làm việc với HTTPS (chiếm hơn 95% lưu lượng hiện đại), bạn cần cấu hình giải mã SSL. Fiddler hoạt động như một Man-in-the-Middle: nó tạo ra chứng chỉ gốc của riêng mình và ký tất cả các kết nối HTTPS bằng nó.

Các bước cấu hình chặn HTTPS:

  1. Mở Tools → Options → HTTPS
  2. Đánh dấu Capture HTTPS CONNECTs
  3. Đánh dấu Decrypt HTTPS traffic
  4. Trong danh sách thả xuống, chọn ...from all processes
  5. Nhấn nút Actions → Trust Root Certificate
  6. Xác nhận cài đặt chứng chỉ vào kho hệ thống Windows
  7. Khởi động lại Fiddler

Sau đó, trong cột Protocol, bạn sẽ thấy HTTPS thay vì CONNECT, và bạn sẽ có thể xem nội dung đã giải mã của các yêu cầu và phản hồi.

⚠️ Quan trọng: bảo mật chứng chỉ

Chứng chỉ Fiddler chỉ được cài đặt trong kho của người dùng hiện tại trên Windows. Không chia sẻ tệp chứng chỉ với bên thứ ba — điều này sẽ cho phép họ chặn lưu lượng HTTPS của bạn. Sau khi hoàn tất gỡ lỗi, bạn có thể xóa chứng chỉ qua Tools → Options → HTTPS → Actions → Remove Interception Certificates.

Một số ứng dụng sử dụng Certificate Pinning — chúng kiểm tra chứng chỉ cụ thể của máy chủ và sẽ từ chối hoạt động qua Fiddler. Trong trường hợp này, bạn sẽ thấy lỗi kết nối trong ứng dụng. Vượt qua pinning là một chủ đề riêng, nằm ngoài phạm vi của bài viết này.

Cách chặn lưu lượng của các ứng dụng UWP

UWP (Universal Windows Platform) — là các ứng dụng từ Microsoft Store: Mail, Maps, Movies & TV, Spotify, Netflix và nhiều ứng dụng khác. Đặc điểm của chúng là vì lý do bảo mật, chúng hoạt động trong một container cách ly (App Container) và không sử dụng proxy hệ thống. Chính vì vậy, cấu hình Fiddler thông thường không chặn được lưu lượng của chúng.

Để giải quyết vấn đề này, Fiddler cung cấp một công cụ đặc biệt — AppContainer Loopback Exemption Utility. Nó thêm ứng dụng UWP vào danh sách ngoại lệ, cho phép nó truy cập vào proxy cục bộ Fiddler.

Cách 1 — qua giao diện Fiddler:

  1. Trong menu, chọn WinConfig (nút trên thanh công cụ hoặc Tools → Win8 Loopback Exemptions)
  2. Một danh sách tất cả các ứng dụng UWP đã cài đặt sẽ mở ra
  3. Tìm ứng dụng cần thiết và đánh dấu vào ô bên cạnh nó
  4. Nhấn Save Changes
  5. Khởi động lại ứng dụng UWP

Cách 2 — qua dòng lệnh (để tự động hóa):

CheckNetIsolation LoopbackExempt -a -n="Microsoft.WindowsMaps_8wekyb3d8bbwe"

Thay thế Microsoft.WindowsMaps_8wekyb3d8bbwe bằng Package Family Name của ứng dụng cần thiết. Bạn có thể tìm thấy nó trong PowerShell bằng lệnh:

Get-AppxPackage | Select-Object Name, PackageFamilyName | Sort-Object Name

Sau khi thêm ngoại lệ, ứng dụng UWP sẽ bắt đầu gửi lưu lượng qua Fiddler. Bạn sẽ thấy các yêu cầu của nó trong danh sách phiên — thường chúng dễ dàng được xác định qua User-Agent hoặc qua host đích.

💡 Mẹo: UWP và HTTPS

Để chặn lưu lượng HTTPS của các ứng dụng UWP, không đủ chỉ thêm ngoại lệ loopback. Bạn cũng cần cài đặt chứng chỉ Fiddler vào kho Trusted Root Certification Authorities cho Local Machine (không chỉ cho người dùng hiện tại). Làm điều này qua certmgr.msc hoặc qua chính sách nhóm.

Bộ lọc, điểm dừng và thay đổi yêu cầu

Ba chức năng mạnh mẽ nhất của Fiddler để gỡ lỗi — là lọc các phiên, điểm dừng và AutoResponder. Chúng ta sẽ xem xét từng chức năng.

Lọc các phiên

Tab Filters cho phép hiển thị chỉ các yêu cầu cần thiết. Các tùy chọn chính:

  • Show only the following Hosts — bộ lọc theo miền (ví dụ, api.example.com)
  • Show only if URL contains — bộ lọc theo phần của URL
  • Show only if response Content-Type — chỉ JSON, XML, hình ảnh, v.v.
  • Hide if URL contains — loại bỏ các yêu cầu không cần thiết (ví dụ, telemetry, analytics)

Bạn cũng có thể sử dụng dòng QuickExec ở dưới cùng của cửa sổ để thực hiện các lệnh nhanh. Ví dụ, select status 404 sẽ chọn tất cả các yêu cầu có lỗi 404, trong khi bold api sẽ làm nổi bật tất cả các phiên chứa "api" trong URL.

Điểm dừng (Breakpoints)

Điểm dừng cho phép dừng yêu cầu hoặc phản hồi trước khi gửi/nhận và thay đổi nội dung một cách thủ công. Đây là tương tự như điểm dừng trong trình gỡ lỗi mã, nhưng dành cho HTTP.

  • Rules → Automatic Breakpoints → Before Requests — dừng mỗi yêu cầu trước khi gửi
  • Rules → Automatic Breakpoints → After Responses — dừng mỗi phản hồi trước khi truyền cho ứng dụng
  • Nhấp chuột phải vào phiên → Breakpoint → Break on Request — điểm dừng cụ thể cho một URL cụ thể

Khi yêu cầu bị dừng, bạn có thể thay đổi bất kỳ tiêu đề nào, nội dung yêu cầu, URL và nhấn Run to Completion để tiếp tục. Điều này đặc biệt hữu ích để kiểm tra hành vi của ứng dụng với dữ liệu đã thay đổi.

AutoResponder

AutoResponder — công cụ để thay thế phản hồi từ máy chủ. Bạn tạo ra một quy tắc: "nếu URL khớp với mẫu — trả về tệp/phản hồi này". Các ứng dụng:

  • Kiểm tra ứng dụng với các stub API mà không cần backend thực tế
  • Mô phỏng lỗi máy chủ (500, 503, timeout)
  • Thay thế tài nguyên — tải phiên bản JS/CSS cục bộ thay vì phiên bản từ máy chủ
  • Tăng tốc phát triển — lưu cache các yêu cầu chậm đến API bên ngoài

Kết nối proxy bên ngoài qua Fiddler

Một trong những khả năng quan trọng của Fiddler — hoạt động trong chế độ "proxy qua proxy" (upstream proxy). Fiddler chặn lưu lượng cục bộ, sau đó chuyển tiếp nó qua máy chủ proxy bên ngoài. Điều này cho phép bạn đồng thời gỡ lỗi các yêu cầu và thay đổi địa chỉ IP hoặc vị trí địa lý.

Khi nào cần điều này:

  • Kiểm tra hành vi của ứng dụng khi hoạt động qua proxy doanh nghiệp
  • Kiểm tra nội dung phụ thuộc vào địa lý — ứng dụng hoạt động như thế nào từ một quốc gia khác
  • Gỡ lỗi ứng dụng mà chính nó sử dụng proxy
  • Kiểm tra API với các giới hạn IP (whitelist theo IP)

Cấu hình upstream proxy trong Fiddler Classic:

  1. Mở Tools → Options → Gateway
  2. Chọn Manual Proxy Configuration
  3. Trong trường Proxy, nhập địa chỉ proxy theo định dạng host:port
  4. Nếu proxy yêu cầu xác thực — hãy chỉ định tên đăng nhập và mật khẩu
  5. Nhấn OK và khởi động lại việc chặn lưu lượng

Fiddler hỗ trợ HTTP, HTTPS và SOCKS5 proxy như là upstream. Đối với SOCKS5, định dạng ghi chú hơi khác:

socks=proxy.example.com:1080

Đối với các nhiệm vụ kiểm tra hành vi phụ thuộc vào địa lý của ứng dụng, proxy dân cư là lựa chọn tốt — chúng sử dụng địa chỉ IP thực tế của người dùng tại nhà từ quốc gia cần thiết, và ứng dụng nhận được phản hồi giống như người dùng thực tế từ khu vực đó. Điều này quan trọng nếu API trả về nội dung khác nhau tùy thuộc vào vị trí địa lý.

Nếu bạn cần tốc độ cao để tải lượng dữ liệu lớn trong quá trình gỡ lỗi, proxy trung tâm dữ liệu sẽ phù hợp — chúng cung cấp kết nối ổn định và độ trễ tối thiểu, điều này rất tiện lợi khi làm việc với các API nặng.

💡 FiddlerScript cho việc chọn proxy động

Qua FiddlerScript, bạn có thể cấu hình các upstream-proxy khác nhau cho các host khác nhau. Ví dụ, chuyển hướng các yêu cầu đến api.us-service.com qua proxy Mỹ, trong khi các yêu cầu khác — trực tiếp:

static function OnBeforeRequest(oSession: Session) {
  if (oSession.HostnameIs("api.us-service.com")) {
    oSession["x-OverrideGateway"] = "us-proxy.example.com:8080";
  }
}

Kịch bản thực tế: phân tích, kiểm tra API, vượt địa lý

Chúng ta sẽ xem xét các nhiệm vụ cụ thể mà Fiddler giúp giải quyết một cách thuận tiện.

Kịch bản 1: Đảo ngược kỹ thuật API của ứng dụng di động

Bạn muốn tự động hóa các hành động trong ứng dụng, nhưng nó không có API công khai. Giải pháp: khởi động ứng dụng trên trình giả lập Android hoặc qua khách hàng Windows, cấu hình nó sử dụng Fiddler như một proxy, và ghi lại tất cả các yêu cầu khi thực hiện các hành động cần thiết.

Sau khi ghi lại, bạn sẽ có bức tranh đầy đủ: các endpoint, định dạng yêu cầu, các tiêu đề xác thực, token. Những dữ liệu này có thể được sử dụng để viết khách hàng của riêng bạn hoặc tự động hóa qua các kịch bản.

Kịch bản 2: Gỡ lỗi trình phân tích của thị trường

Khi phát triển trình phân tích cho Wildberries, Ozon hoặc các thị trường khác, thường không rõ lý do tại sao các yêu cầu bị chặn. Fiddler cho phép so sánh các yêu cầu của trình duyệt (các yêu cầu đi qua) với các yêu cầu của trình phân tích (các yêu cầu bị chặn) và tìm ra sự khác biệt trong các tiêu đề, thứ tự của chúng, giá trị cookie hoặc dấu vân tay TLS.

Một phát hiện điển hình: trình phân tích gửi các tiêu đề theo thứ tự khác, thiếu Accept-Language, hoặc User-Agent chứa phiên bản Python. Sửa chữa những chi tiết này trong mã của trình phân tích sẽ giảm khả năng bị chặn.

Kịch bản 3: Kiểm tra nội dung phụ thuộc vào địa lý

Nếu ứng dụng của bạn hiển thị nội dung khác nhau cho người dùng từ các quốc gia khác nhau, bạn cần kiểm tra nó với các IP thực tế từ những quốc gia đó. Cấu hình Fiddler với upstream-proxy từ khu vực cần thiết, khởi động ứng dụng — và bạn sẽ thấy chính xác những gì người dùng từ quốc gia đó thấy, cộng với toàn bộ nhật ký của tất cả các yêu cầu.

Kịch bản 4: Theo dõi hoạt động nền của các ứng dụng

Bạn muốn biết ứng dụng đã "gọi" đến đâu? Khởi động Fiddler, khởi động ứng dụng, chờ 5-10 phút. Trong danh sách phiên sẽ xuất hiện tất cả các host mà ứng dụng đã truy cập. Điều này hữu ích cho việc kiểm toán an ninh phần mềm bên thứ ba, kiểm tra sự hiện diện của telemetry hoặc các kết nối không mong muốn.

Kịch bản 5: Xuất các yêu cầu để phát lại

Fiddler cho phép xuất các yêu cầu đã chặn dưới định dạng cURL, mà bạn có thể ngay lập tức chạy trong terminal hoặc dán vào Postman. Nhấp chuột phải vào phiên → Copy → cURL Request. Điều này rất tiện lợi để chuyển giao yêu cầu cho đồng nghiệp hoặc để tài liệu hóa API.

Fiddler Classic vs Fiddler Everywhere: chọn cái nào

Telerik hỗ trợ hai phiên bản sản phẩm, và việc chọn giữa chúng không phải lúc nào cũng rõ ràng. Chúng ta sẽ xem xét các điểm khác biệt chính.

Tham số Fiddler Classic Fiddler Everywhere
Nền tảng Chỉ Windows Windows, macOS, Linux
Giá Miễn phí Đăng ký trả phí (có kế hoạch miễn phí)
Hỗ trợ UWP Có (qua WinConfig) Hạn chế
FiddlerScript Có (JScript.NET) Không (sử dụng Rules)
Giao diện Cũ nhưng chức năng Hiện đại, tiện lợi
Cộng tác Không Có (bộ sưu tập đám mây)
Mở rộng Plugin .NET Hạn chế
Chặn lưu lượng hệ thống Hoàn toàn Hoàn toàn

Khi nào chọn Fiddler Classic: bạn chỉ làm việc trên Windows, bạn cần làm việc với các ứng dụng UWP, bạn sử dụng FiddlerScript để tự động hóa, hoặc bạn cần phiên bản hoàn toàn miễn phí không có giới hạn.

Khi nào chọn Fiddler Everywhere: bạn làm việc trên macOS hoặc Linux, bạn cần giao diện hiện đại, cần cộng tác với các bộ sưu tập yêu cầu chung, hoặc bạn muốn tích hợp với các pipeline CI/CD.

Cũng đáng đề cập đến các lựa chọn thay thế: Charles Proxy (trả phí, phổ biến trên macOS), mitmproxy (miễn phí, dòng lệnh, rất linh hoạt), Wireshark (hoạt động ở mức gói, không phải HTTP). Mỗi công cụ có những điểm mạnh riêng, nhưng cho hầu hết các nhiệm vụ gỡ lỗi ứng dụng Windows, Fiddler Classic vẫn là lựa chọn tối ưu.

Các vấn đề thường gặp và cách giải quyết

Khi làm việc với Fiddler, thỉnh thoảng sẽ gặp phải các vấn đề điển hình. Đây là những vấn đề phổ biến nhất và cách giải quyết chúng.

Vấn đề: Ứng dụng không hoạt động khi Fiddler đang bật

Nguyên nhân: Certificate Pinning, proxy được cài đặt cứng trong ứng dụng, hoặc ứng dụng không tin tưởng chứng chỉ Fiddler. Giải pháp:

  • Cài đặt chứng chỉ Fiddler vào kho Local Machine → Trusted Root
  • Kiểm tra xem ứng dụng có sử dụng certificate pinning hay không
  • Thêm host vào ngoại lệ SSL: Tools → Options → HTTPS → Skip Decryption for following hosts

Vấn đề: Sau khi đóng Fiddler, internet không hoạt động

Fiddler không kịp gỡ bỏ proxy hệ thống khi kết thúc đột ngột. Giải pháp: mở Cài đặt Windows → Mạng → Proxy và tắt proxy thủ công. Hoặc khởi động lại Fiddler và đóng nó một cách bình thường.

Vấn đề: Chỉ thấy các đường hầm CONNECT, nhưng không thấy nội dung HTTPS

Chưa cấu hình chặn HTTPS. Quay lại phần cấu hình chứng chỉ và đảm bảo rằng tùy chọn Decrypt HTTPS traffic đã được bật và chứng chỉ đã được cài đặt trong kho hệ thống.

Vấn đề: Lưu lượng của ứng dụng UWP không xuất hiện trong Fiddler

Chưa thêm ngoại lệ loopback cho ứng dụng này. Sử dụng WinConfig (đã mô tả trong phần UWP) và khởi động lại ứng dụng sau khi thêm ngoại lệ.

Vấn đề: Upstream proxy không hoạt động (lỗi kết nối)

Kiểm tra: độ chính xác của địa chỉ và cổng proxy, độ chính xác của tên đăng nhập/mật khẩu, khả năng truy cập máy chủ proxy (thử kết nối trực tiếp mà không cần Fiddler). Cũng đảm bảo rằng proxy hỗ trợ giao thức cần thiết — không phải tất cả các HTTP-proxy đều hỗ trợ tunneling HTTPS.

Kết luận

Fiddler là công cụ không thể thiếu cho tất cả những ai làm việc với HTTP-trafik của các ứng dụng Windows. Nó cho phép bạn thấy tất cả các yêu cầu trong thời gian thực, thay đổi chúng ngay lập tức, kiểm tra hành vi của các ứng dụng trong các điều kiện khác nhau và giải quyết các nhiệm vụ mà không thể thực hiện bằng các DevTools của trình duyệt. Đặc biệt, hỗ trợ các ứng dụng UWP thông qua cơ chế ngoại lệ loopback — đây là một cơ hội độc đáo mà hầu hết các công cụ tương tự không có.

Đối với các nhiệm vụ kiểm tra hành vi phụ thuộc vào địa lý của các ứng dụng hoặc kiểm tra hoạt động qua các proxy bên ngoài — hãy cấu hình upstream proxy trong Fiddler. Nếu bạn cần các IP thực tế từ các quốc gia cụ thể để kiểm tra chính xác, hãy chú ý đến proxy dân cư — chúng cung cấp địa lý thực tế nhất và rủi ro thấp nhất về việc bị chặn từ các dịch vụ đang kiểm tra.

Bắt đầu với Fiddler Classic — nó miễn phí, được tài liệu hóa tốt và đáp ứng 90% các nhiệm vụ gỡ lỗi trên Windows. Khi nhu cầu tăng lên, bạn có thể chuyển sang Fiddler Everywhere hoặc bổ sung quy trình làm việc của mình bằng các công cụ chuyên biệt như mitmproxy để tự động hóa linh hoạt hơn.

```