Chào mọi người, hình ảnh trên đó chắc chắn khiến bạn tự hỏi: "Hệ thống này được sử dụng để làm gì? Điều khiển bằng tay hay tự động hoàn toàn?" Tôi từng có cơ hội nhìn thấy những hệ thống như thế này và chúng được sử dụng cho nhiều mục đích khác nhau, tuỳ thuộc vào nhu cầu. Ví dụ như xây dựng hệ thống tự động tăng view, chia sẻ livestream bán hàng, tăng lượng người theo dõi trên các nền tảng như Youtube, Tiktok, Facebook,...
Vậy làm thế nào để kiểm soát những thiết bị di động Android này? Có rất nhiều công cụ và framework để làm điều này, nhưng một công cụ được sử dụng phổ biến là ADB, viết tắt của Android Debug Bridge.
I. Tổng quan:
ADB là một công cụ Command Line giúp kết nối thiết bị Android với máy tính thông qua dòng lệnh cmd, dùng để điều khiển và giao tiếp với điện thoại Android. Nó cho phép bạn truy cập vào Unix shell để thực hiện các lệnh nhân Unix trên thiết bị.
II. Cài đặt:
Để điều khiển điện thoại, điều kiện tiên quyết là bạn phải mở chế độ USB Debugging trên điện thoại. Sau đó, bạn cần cài đặt công cụ ADB trên PC của mình để giao tiếp với điện thoại. Trong bài viết này, tôi sẽ sử dụng package pure-python-adb
dành cho Python trên hệ điều hành Ubuntu. Bạn có thể cài đặt nó bằng cách chạy lệnh sau:
pip install pure-python-adb
Nếu bạn không có điện thoại thật để thực hành, bạn có thể sử dụng phần mềm giả lập Android trên PC. Một trong những phần mềm mã nguồn mở phổ biến là scrcpy. Bạn có thể cài đặt nó từ đây.
Bây giờ, khi chúng ta đã cài đặt xong, hãy mở điện thoại và kết nối nó với máy tính qua cáp USB. Để thiết lập kết nối, chạy lệnh sau:
sudo adb start-server
Viết một đoạn mã nhỏ để kiểm tra xem thiết bị đã được kết nối chưa:
from ppadb.client import Client as AdbClient import time def getDevice(): client = AdbClient(host="127.0.0.1", port=5037) # Default is "127.0.0.1" and 5037 devices = client.devices() if len(devices) < 0: print("0 device") return 0 return devices[0] device = getDevice() print(device)
Đoạn mã trên được viết để lấy ra thiết bị đầu tiên đã kết nối.
III. Bắt đầu:
Cách chúng ta giao tiếp với điện thoại Android là thông qua shell, từ đó chúng ta có thể gửi các lệnh để giả lập các thao tác như vuốt màn hình, gõ phím, nhấn vào vị trí bất kỳ trên màn hình, v.v. Để nhấn vào vị trí bất kỳ trên màn hình, chúng ta cần xác định tọa độ trên màn hình và tọa độ trên điện thoại. Để lấy tọa độ dễ dàng nhất, bạn có thể tải và sử dụng ứng dụng Screen Coordinates từ CH Play.
Dưới đây là một số command thường được sử dụng để tự động hóa các thao tác trên điện thoại:
adb shell input tap x y
: chạm vào vị trí có tọa độ (x, y) trên màn hìnhadb shell input text "Hello Vietnam"
: nhập văn bản vào trường nhập liệuadb shell keyevent eventID
: thực hiện một số sự kiện trên điện thoại tương ứng vớieventID
Dưới đây là danh sách một số eventID
phổ biến:
- 3: Bấm nút HOME
- 4: Bấm nút quay lại
- 5: Gọi
- 6: Kết thúc cuộc gọi
- 24: Tăng âm lượng
- 25: Giảm âm lượng
- 26: Bật/tắt điện thoại
- 27: Mở camera
- 64: Mở trình duyệt
- 66: Enter
- 67: Xóa ký tự
- 207: Mở danh bạ
- 220: Tăng độ sáng
- 221: Giảm độ sáng
- 277: Cắt
- 278: Sao chép
- 279: Dán
Với những command này, bạn có đủ kiến thức để viết các công cụ tự động cơ bản rồi. Ngoài ra, còn rất nhiều command khác mà bạn có thể tham khảo tại đây.
IV: Tạo công cụ:
1. Auto đăng bài lên Facebook:
Mình sẽ sử dụng những kiến thức trên để viết một công cụ tự động trên điện thoại để đăng bài viết tự động lên Facebook. Kịch bản của công cụ sẽ như sau:
- Mở ứng dụng Facebook
- Nhấn vào vị trí nhập văn bản
- Gõ nội dung bài viết
- Nhấn nút Đăng để đăng bài viết
Đầu tiên, chúng ta cần sử dụng ứng dụng Screen Coordinates để lấy tọa độ của một số vị trí trên màn hình. Dựa vào đó, chúng ta có thể viết mã theo kịch bản trên:
from ppadb.client import Client as AdbClient import time def getDevice(): client = AdbClient(host="127.0.0.1", port=5037) # Default is "127.0.0.1" and 5037 devices = client.devices() if len(devices) < 0: print("0 device") return 0 return devices[0] device = getDevice() def postFacebook(): # Trở về màn hình chính device.input_keyevent(HOME_BUTTON) # Nhấn vào biểu tượng Facebook sau 1 giây device.input_tap(672, 1237) time.sleep(1) # Nhấn vào vị trí nhập văn bản sau 1 giây device.input_tap(648, 479) time.sleep(1) # Gõ nội dung bài viết sau 2 giây device.input_text("Tự động đăng bài lên FACEBOOK") time.sleep(2) # Nhấn Đăng bài device.input_tap(949, 152) postFacebook()
2. Nhá máy (gọi liên tục):
Ví dụ, bạn muốn đùa thằng bạn bằng cách nhá máy liên tục đến số điện thoại của nó. Để tự động thực hiện việc này, kịch bản công cụ sẽ như sau:
- Vào màn hình cuộc gọi
- Gõ số điện thoại
- Chờ khoảng 13 giây để chuông nhỡ
- Kết thúc cuộc gọi
- Lặp lại cho đến khi chặn
Dưới đây là mã script cho kịch bản trên:
from ppadb.client import Client as AdbClient import time def getDevice(): client = AdbClient(host="127.0.0.1", port=5037) # Default is "127.0.0.1" and 5037 devices = client.devices() if len(devices) < 0: print("0 device") return 0 return devices[0] device = getDevice() def callPhoneNumber(device, phoneNumber): # Gọi số điện thoại device.input_keyevent(5) device.input_text("") device.input_text(phoneNumber) device.input_keyevent(5) # Chờ 13 giây time.sleep(13) # Kết thúc cuộc gọi device.input_keyevent(6) while True: callPhoneNumber(device, "0774751111")
3. Tự động đăng ký tài khoản Facebook trên điện thoại:
Tương tự như các công cụ trên, việc tạo công cụ tự động đăng ký tài khoản Facebook trên điện thoại cũng chỉ là viết script dựa trên kịch bản đã đề ra. Mình không thể public mã script chi tiết lên đây do độ dài, nhưng dưới đây là kết quả mà nó đạt được:
Trên đây là một số kiến thức cơ bản để bạn có thể tạo các công cụ tự động trên điện thoại. Tuy nhiên, còn nhiều điều mình chưa đề cập như điều khiển nhiều điện thoại cùng một lúc hoặc xác định tọa độ linh hoạt hơn. Hy vọng những kiến thức thú vị trên sẽ giúp bạn bắt đầu học về tự động hóa (yay)!
Telegram: dinhlongit