CDP, giao thức Chrome DevTools
CDP (Chrome DevTools Protocol) là tập hợp các lệnh mà một chương trình dùng để điều khiển trình duyệt: mở một địa chỉ, click vào một nút, gõ văn bản, chạy một script trên trang, chụp ảnh màn hình. Chính công cụ dành cho nhà phát triển của trình duyệt cũng nói cùng một ngôn ngữ này, và cả Playwright lẫn Puppeteer cũng vậy.
Các lệnh đọc lên rất rõ ràng: Page.navigate, Runtime.evaluate, Page.captureScreenshot.
Ba cách một chương trình kết nối
| Đường | Trông như thế nào | Cái bẫy |
|---|---|---|
| Cổng (Port) | trình duyệt khởi động với --remote-debugging-port và chương trình kết nối đến đó | cổng đang mở, và không chỉ chủ sở hữu mới có thể tiếp cận nó |
| Pipe | một kênh giữa chương trình và trình duyệt, không có cổng mạng | không gì từ bên ngoài có thể kết nối được — chính điều đó khiến nó tốt hơn |
| Qua một tiện ích mở rộng | một tiện ích mở rộng bên trong trình duyệt phát ra các lệnh | hoàn toàn không có switch gỡ lỗi nào trong dòng lệnh |
Sự khác biệt không chỉ mang tính hình thức. Một cổng gỡ lỗi đang mở là quyền truy cập đầy đủ vào trình duyệt: qua đó, mọi cookie trong hồ sơ đều có thể đọc được, kể cả những cookie mà script trên trang không thể tiếp cận. Chính vì vậy mà Chrome 136 đã cấm gỡ lỗi trên thư mục hồ sơ mặc định.
Một phép đo đáng biết trước
Việc đăng nhập vào tài khoản Google thất bại bất cứ khi nào trình duyệt có một kênh gỡ lỗi — bất kỳ loại nào. Chúng tôi đã kiểm tra riêng từng trường hợp: cổng, pipe, và cả trường hợp kênh đó chỉ đơn giản đang mở mà không có lệnh nào được gửi qua. Kết quả đều giống nhau mỗi lần — việc đăng nhập không thành công.
Việc giả mạo dấu vân tay không khắc phục được điều này: thứ bị phát hiện không phải là trình duyệt trông như thế nào, mà là chính sự thật rằng nó có thể bị điều khiển từ bên ngoài.
Hệ quả thực tiễn: tự động hóa và đăng nhập vào Google là một sự lựa chọn, không phải một sự kết hợp. Một hồ sơ bị điều khiển qua kênh gỡ lỗi không phù hợp để đăng nhập vào Google; một hồ sơ cần đăng nhập vào Google được tự động hóa theo cách khác — qua một tiện ích mở rộng từ bên trong.
Vì sao điều này lại quan trọng với một người bình thường
Trực tiếp — thì không cần. Gián tiếp — vì script, tự động hóa và việc điều khiển trình duyệt từ một tác nhân AI đều dựa trên CDP. Và cũng vì một cổng gỡ lỗi đang mở trên máy của bạn là một lỗ hổng thật sự: nếu một chương trình đề nghị bạn "chỉ cần bật gỡ lỗi" trên trình duyệt chính của mình, đó là lý do đáng để hỏi vì sao.
