Dùng Claude và mitmproxy để đảo ngược kỹ thuật API ứng dụng tập gym
Tác giả muốn xuất dữ liệu từ ứng dụng tập gym Liftoff nhưng không có tính năng hỗ trợ. Anh đã sử dụng AI Claude để hướng dẫn thiết lập mitmproxy, phân tích lưu lượng mạng và tự động đảo ngược kỹ thuật API của ứng dụng. Kết quả là một công cụ CLI bằng ngôn ngữ Go giúp xuất dữ liệu để Claude phân tích và đưa ra lời khuyên huấn luyện.

Dùng Claude và mitmproxy để đảo ngược kỹ thuật API ứng dụng tập gym
Tôi theo dõi các buổi tập luyện của mình bằng Liftoff, một ứng dụng ghi nhận bài tập ở phòng gym. Ứng dụng này rất tốt để ghi lại số hiệp và số lần lặp lại (reps), nhưng tôi muốn Claude giúp tôi phân tích quá trình huấn luyện — đề xuất thay đổi chương trình, phát hiện giai đoạn trì trệ (plateau) và cảnh báo về sự mất cân bằng. Vấn đề là ứng dụng không có nút xuất dữ liệu. Dữ liệu của tôi bị khóa bên trong ứng dụng.
Vì vậy, tôi đã nhờ Claude giải quyết vấn đề này.
Claude điều khiển mitmproxy
Tôi nói với Claude rằng tôi muốn chặn lưu lượng mạng của ứng dụng Liftoff. Nó đã hướng dẫn tôi qua từng bước — cài đặt mitmproxy, cấu hình cài đặt proxy trên iPhone, cài đặt chứng chỉ CA để giải mã HTTPS. Tất cả những gì tôi phải làm là làm theo hướng dẫn và thao tác trên điện thoại.
Sau đó, Claude chạy lệnh mitmdump, yêu cầu tôi mở Liftoff và cuộn qua các bài tập, rồi tự đọc lưu lượng mạng đã bị bắt.
Claude đảo ngược kỹ thuật API
Từ kết quả đầu ra của mitmdump, Claude nhận ra rằng Liftoff sử dụng tRPC — một khung RPC của TypeScript đóng gói các yêu cầu vào một định dạng phong bì cụ thể. API nằm tại một tên miền phụ có phiên bản (v2-12-2.api.getgymbros.com) và yêu cầu chuỗi user-agent của iOS.
Claude đã lập bản đồ toàn bộ API:
- Quy trình xác thực — một điểm cuối
user.signIntrả về mã thông báo truy cập và làm mới, cùng với điểm cuốiuser.refreshTokenđể gia hạn. - Điểm cuối bài tập —
post.getMyPoststrả về mọi bài tập bạn từng ghi nhận. - Mã loại bài tập —
WRcho trọng lượng/số lần lặp,ABcho trọng lượng cơ thể có hỗ trợ,BRcho trọng lượng cơ thể cộng thêm kháng lực,DDcho khoảng cách/thời gian. - Cấu trúc dữ liệu hiệp tập — mỗi hiệp có một loại (khởi động vs chính), và hai đầu vào có ý nghĩa thay đổi tùy theo loại bài tập.
Tôi không cần đọc một gói tin nào cả. Claude đã làm tất cả.
Claude xây dựng công cụ CLI
Khi đã hiểu rõ API, Claude đã viết một công cụ CLI bằng ngôn ngữ Go sử dụng thư viện Cobra. Nó xử lý lưu trữ mã thông báo xác thực, tự động làm mới mã thông báo và định dạng yêu cầu tRPC.
Công cụ này được phát triển thêm với các tính năng:
workouts list— xuất bài tập sang định dạng fitdown hoặc JSON, lọc theo ngày hoặc bài tập.workouts stats— tóm tắt khối lượng tập luyện theo từng bài tập với biểu đồ thanh ASCII hàng tháng.bodyweights stats— phân tích xu hướng với khả năng phát hiện giai đoạn trì trệ.
Tôi đã thiết lập goreleaser để biên dịch đa nền tảng và một Homebrew tap để dễ dàng cài đặt:
brew tap DTTerastar/tap
brew install liftoff-export
Vòng tròn khép kín
Đây là phần tôi thích nhất: lý do duy nhất tôi xây dựng công cụ này là để chuyển dữ liệu bài tập của mình trở lại cho Claude.
Bây giờ, tôi có thể chạy lệnh liftoff-export workouts list --since 6m --json và cung cấp cho Claude sáu tháng dữ liệu huấn luyện có cấu trúc. Nó có thể thấy các hiệp tập, số lần lặp lại và trọng lượng thực tế của tôi trong mọi bài tập. Từ đó, nó giúp tôi lập kế hoạch huấn luyện — những gì cần thay đổi, nơi tôi đang bị đình trệ, và phương pháp nào đang hiệu quả.
Claude đã đảo ngược kỹ thuật API, xây dựng công cụ để trích xuất dữ liệu của tôi, và giờ sử dụng dữ liệu đó để huấn luyện tôi. AI đã tự hoàn thành vòng lặp của chính nó.
Liên kết
- GitHub: DTTerastar/liftoff-export-cli
- Ứng dụng Liftoff: getgymbros.com
Bài viết liên quan

Phần mềm
Ra mắt Rail: Ngôn ngữ lập trình tự hosting tích hợp HTTPS thuần túy
18 tháng 4, 2026

Phần mềm
Tương lai "Headless" cho AI cá nhân: Khi giao diện dòng lệnh lên ngôi
18 tháng 4, 2026

Công nghệ
Cursor đàm phán huy động hơn 2 tỷ USD với định giá 50 tỷ USD khi tăng trưởng doanh nghiệp bùng nổ
17 tháng 4, 2026
