Những điều chúng tôi phải tính trước khi đặt một con bot lên Pokerman

Viết từ những lần chúng tôi tự dựng thử. Cập nhật ngày 13 tháng 10 năm 2026 · khoảng 9 phút đọc.

Tóm tắt một dòng: Ứng dụng Pokerman hiển thị ván bài do máy chủ quyết định, chạy trên một lớp di động mỏng và có cơ chế chống can thiệp canh chừng. Bot không đọc được giao thức một cách rẻ tiền, nên buộc phải bám vào tầng thiết bị: dịch vụ trợ năng hoặc đọc màn hình trên giả lập. Cơ chế chống can thiệp và theo dõi hành vi giám sát tầng thiết bị này.

Mô hình câu lạc bộ/đại lý, nói theo kiểu phần mềm

Một ứng dụng câu lạc bộ như Pokerman tách ba vai trò mà các trang web công khai hay gộp làm một. Nhà vận hành phát hành ứng dụng và chạy máy chủ chia bài. Câu lạc bộ là một "người thuê" bên trong nhà vận hành, có bàn chơi, mức rake và danh sách người chơi riêng. Đại lý là người kéo người chơi vào câu lạc bộ, cấp chip cho họ theo kiểu ghi nợ, rồi thanh toán bằng tiền thật sau đó.

Chip không phải là tiền. Chip chỉ là một dòng trong sổ cái gắn với từng câu lạc bộ. Máy chủ giữ sổ cái chính thức. Ứng dụng chỉ hiển thị sổ cái, còn đại lý thực hiện đối soát. Mọi hình thức tự động hóa đều phải chấp nhận rằng kết quả do máy chủ nắm.

Tầng thiết bị Ứng dụng câu lạc bộ Phía nhà vận hành Điện thoại Android / iOS cảm ứng • màn hình Trợ năng / lớp phủ chỗ bot sẽ bám vào Ứng dụng khách hiển thị trạng thái bàn Lớp chống can thiệp kiểm tra root / giả lập Máy chủ trò chơi chia bài • quyết toán Sổ cái đại lý / câu lạc bộ chip • thanh toán Theo dõi hành vi → phát hiện nhịp bấm • chuyển động • dấu vân tay thiết bị • tỷ lệ thắng
Kiến trúc ứng dụng câu lạc bộ: tầng thiết bị là bề mặt duy nhất bot với tới được, máy chủ và sổ cái nằm ngoài tầm với.

Từng tầng một

1. Tầng thiết bị

Mọi thứ bắt đầu từ một chiếc điện thoại Android hoặc iOS. Hệ điều hành nắm màn hình cảm ứng, bề mặt hiển thị và đường dẫn thao tác nhập. Với tự động hóa, có hai tính năng ở cấp thiết bị đáng kể. Trên Android, API dịch vụ trợ năng cho phép một ứng dụng đọc cây giao diện đang hiển thị và gửi thao tác chạm. Nó được làm cho trình đọc màn hình, nhưng điều khiển được giao diện poker cũng dễ như vậy. Thứ hai là quyền lớp phủ, cho phép một ứng dụng vẽ đè lên ứng dụng khác. iOS cố ý không có thứ tương đương nếu máy chưa jailbreak, nên phần lớn tự động hóa nghiêm túc nhắm vào Android, thường chạy trong giả lập trên máy tính, nơi chụp màn hình và đưa thao tác vào đều dễ.

2. Ứng dụng khách

Ứng dụng hiển thị trạng thái bàn: bài trên tay bạn, bài chung, số chip, lượt đang đến phiên bạn, rồi gửi quyết định của bạn lên máy chủ. Các lá bạn nhìn thấy đã được chia từ phía máy chủ, ứng dụng chỉ hiện những gì nó được báo. Bot không thể thấy bài úp của người khác, vì ứng dụng chưa bao giờ nhận được chúng. Bot chỉ có cùng thông tin công khai như người thật: các lá nhìn thấy được, cỡ cược và nhịp thời gian.

3. Lớp chống can thiệp

Ứng dụng poker di động có kèm các kiểm tra toàn vẹn: phát hiện root và jailbreak, nhận diện giả lập, phát hiện trình gỡ lỗi và hook (ví dụ nhận ra Frida hoặc Xposed), và đôi khi là xác thực SafetyNet / Play Integrity. Chúng không phải bất khả xâm phạm, kiểu kiểm tra nào cũng có cách vượt được công khai, nhưng chúng đẩy chi phí lên. Cài công cụ còn đòi hỏi duy trì môi trường đã vá và được che giấu qua mọi bản cập nhật ứng dụng. Đa số tự động hóa nghiệp dư thất bại ở khâu này.

4. Máy chủ và sổ cái

Máy chủ chia bài giữ quyền quyết định: nó xáo bài, chia bài, áp dụng luật và quyết toán pot. Cạnh đó là sổ cái đại lý/câu lạc bộ, ghi số dư chip của từng người chơi trong từng câu lạc bộ. Người viết bot không chạm được vào cả hai. Gian lận trên ứng dụng câu lạc bộ chủ yếu xoay quanh thao tác nhập. Bạn có thể tự động hóa việc người chơi làm, nhưng không thể đổi điều máy chủ quyết định.

Những chỗ tự động hóa có thể bám vào trên thực tế

Với bản đồ đó, chỉ còn vài điểm bám thực sự:

Bộ não quyết định là phần dễ nhất

Khi một công cụ đọc được bàn, phần "não" poker là thành phần ít mới nhất. Bảng range preflop theo vị trí và độ sâu stack, cộng với chính sách postflop (call theo pot odds, tần suất continuation bet, vài mức cỡ cược đơn giản), đã chơi một ván kỷ luật và có lãi trước những bàn yếu. Chiến lược sinh từ solver có sẵn công khai. Phần chiến lược đã đủ giải và đã thành hàng phổ thông. Khâu tích hợp vẫn chưa giải được: giữ kết nối, không bị phát hiện và không chơi đều như máy đếm nhịp.

Ràng buộc khi ứng dụng chỉ có trên di động

Pokerman không có ứng dụng máy tính chính thức. Với một trang có bản PC, tự động hóa có thể chạy như một tiến trình anh em: đọc bộ nhớ chung, hook lệnh vẽ, hoặc ngồi trên socket mạng, trong một môi trường ổn định, gỡ lỗi được. Ứng dụng chỉ có trên di động không có môi trường như vậy. Lựa chọn thực tế là chạy trên điện thoại thật (chụp màn hình và đưa thao tác vừa vụng vừa chậm) hoặc giả lập Android trên PC (lấy lại được công cụ, nhưng đưa cho nhà vận hành một tín hiệu phát hiện rất rõ). Ứng dụng câu lạc bộ ưu tiên di động khó tự động hóa hơn các phòng desktop đời cũ. Bề mặt tấn công nhỏ hơn và phơi ra nhiều hơn.

Điều này cũng quyết định rủi ro về nhịp cập nhật. Ứng dụng di động ra bản mới qua kho ứng dụng thường xuyên, và mỗi bản có thể đánh số lại ID view, dời nút, đổi cách vẽ lá bài hoặc siết một kiểm tra toàn vẹn. Một con bot desktop có thể sống vài tháng giữa các bản vá; một công cụ đọc màn hình trên di động có thể gãy sau bản cập nhật hôm thứ Ba và âm thầm đánh sai cho đến khi có người để ý. Chi phí chủ đạo là bảo trì.

Một ví dụ cụ thể: vòng lặp đọc – quyết – bấm

Để thấy rõ đường ống, hãy hình dung vòng lặp mà một công cụ đọc màn hình chạy ở mỗi street:

  1. Đọc. Chụp khung hình hiện tại và xác định các vùng quan tâm: vùng bài trên tay, bài chung, pot, số chip, các nút hành động. Chạy so khớp mẫu hoặc một bộ phân loại nhỏ để biến điểm ảnh thành trạng thái có cấu trúc (ví dụ "AsKh", bài chung "Qd7s2c", cần call 0, pot 480).
  2. Quyết. Đưa trạng thái đó vào động cơ chiến lược: tra range preflop theo vị trí và độ sâu stack, hoặc áp dụng chính sách postflop, rồi ra một hành động kèm mức cỡ cược.
  3. Bấm. Chuyển quyết định thành một cú chạm hoặc kéo ở đúng tọa độ màn hình, tốt nhất là có độ trễ ngẫu nhiên và đường đi hơi cong để thao tác không đều như máy.

Bước nào cũng là điểm có thể hỏng. Một khung hình bị chói hoặc đang chạy hiệu ứng làm đọc sai bài chung và cho ra quyết định sai. Bố cục lệch sau một bản cập nhật khiến cú chạm rơi vào nút khác. Hệ thống phát hiện hành vi được chỉnh để nhận ra các đặc điểm giúp vòng lặp chạy ổn định, gồm nhịp thao tác và cỡ cược đều, hoạt động không mệt mỏi. Làm cho bền thì trông như robot, làm cho giống người thì mong manh và chậm.

Vì sao kiến trúc nghiêng về phía nhà vận hành

Dữ liệu có giá trị, khai thác được nằm ở phía máy chủ và không bao giờ được gửi xuống ứng dụng. Bề mặt duy nhất bot với tới được là tầng thiết bị, đúng nơi lớp chống can thiệp dồn kiểm tra và nơi dữ liệu hành vi (nhịp thao tác, đường di chuyển, dấu vân tay thiết bị, độ dài phiên, đường cong tỷ lệ thắng) được thu và gửi đi để phát hiện. Kiến trúc này dồn mọi nỗ lực tự động hóa qua phần bị canh chừng nhất và mong manh nhất của hệ thống.

Bot cho Pokerman đòi hỏi liên tục né phát hiện và bảo trì. Câu lạc bộ vẫn có thể đóng băng tài khoản của bạn. Trang tiếp theo, an toàn tài khoản (bản tiếng Anh), đi vào phía phát hiện một cách chi tiết: các tín hiệu theo dõi đó thực sự bắt được gì, và điều gì khiến tài khoản bị đóng băng.

So sánh với các ứng dụng câu lạc bộ khác

Kiến trúc của Pokerman không riêng có trong nhóm ứng dụng câu lạc bộ. PPPoker, ClubGG, Upoker và các ứng dụng tương tự đều chia nhà vận hành – câu lạc bộ – đại lý, ưu tiên di động, và để máy chủ quyết định ván chia. Chi tiết triển khai khác nhau: lớp chống can thiệp gắt đến đâu, có đường giả lập chính thức hay không, dữ liệu hành vi được lấy mẫu thế nào, nhưng trạng thái có giá trị nằm ở máy chủ và không với tới được, tự động hóa bị đẩy xuống tầng thiết bị, và đại lý là một chốt kiểm tra bằng con người mà không mẹo phần mềm nào gỡ được. Các ràng buộc do mô hình ứng dụng quyết định, không phải thương hiệu.

Không có "lỗ hổng Pokerman" nào dùng được ở chỗ khác. Một bộ cài chạy được trên một ứng dụng là gánh nặng bảo trì gắn với giao diện và nhịp cập nhật của đúng ứng dụng đó, và không biến thành đường tắt ở nơi khác.