Tìm kiếm

Hướng dẫn

Chạy nhiều giả lập LDPlayer và BlueStacks để nuôi acc game

Chạy nhiều giả lập LDPlayer hoặc BlueStacks để nuôi acc trong MAS: thêm từng instance theo cổng, gom vào nhóm, và cho mỗi thiết bị hồ sơ và proxy riêng.

  • Windows
  • Mac
  • Giả lập
  • Studio
  • Python SDK
Trung bình Cập nhật 9 phút đọc
Trong trang này
  1. Trước khi bắt đầu
  2. Mỗi instance khi chạy nhiều giả lập là một thiết bị
  3. Tạo nhóm thiết bị
  4. Cho mỗi thiết bị tham số riêng
  5. Cho mỗi thiết bị proxy riêng
  6. Bắt đầu tất cả: chạy nhiều giả lập LDPlayer hoặc BlueStacks đồng bộ
  7. Giữ trạng thái từng thiết bị bằng bộ nhớ
  8. Webhook theo nhóm
  9. Theo dõi giới hạn tài nguyên của dàn bot BlueStacks
  10. Lập lịch cho nhóm
  11. Một ví dụ hoàn chỉnh
  12. Điều gì có thể sai
  13. Port is already in use
  14. Một instance chạy, các instance khác đứng ở Đang kết nối
  15. Ảnh mẫu chỉ khớp trên một instance
  16. Mọi instance dùng chung một bộ đếm

Một macro, năm tài khoản, một cú nhấn: đó là chạy nhiều giả lập LDPlayer hoặc BlueStacks để nuôi acc. Khi bạn chạy nhiều giả lập LDPlayer cùng lúc, Macro Automation Studio (MAS) coi mỗi instance giả lập là một thiết bị riêng. Một nhóm thiết bị sau đó chạy cùng macro trên tất cả, với tham số theo từng thiết bị, mỗi cái một proxy, và bộ nhớ không bao giờ trộn lẫn bộ đếm. Hướng dẫn này dựng thiết lập đó trên BlueStacks, LDPlayer, MuMu Player hoặc MEmu. Trang dành cho bất kỳ ai chạy nhiều hơn một tài khoản.

Trước khi bắt đầu

  • MAS đã cài và đăng nhập với gói có số thiết bị đủ cho các instance bạn muốn chạy cùng lúc. Xem Thanh toán.
  • Trình quản lý đa nhiệm của giả lập đã tạo các instance và mỗi cái đã bật ADB. Các hướng dẫn BlueStacks, LDPlayer, MuMu PlayerMEmu chỉ cài đặt và cổng nằm ở đâu.
  • Mọi instance dùng cùng độ phân giải và DPI với instance bạn đã chụp ảnh mẫu.
  • Macro chạy được trên một instance từ Code Editor. Xem hướng dẫn vòng lặp.

Mỗi instance khi chạy nhiều giả lập là một thiết bị

Một instance giả lập nghe adb trên cổng TCP cục bộ riêng. MAS tìm instance bằng cách quét các tiến trình đang chạy và giữ các cổng nằm trong dải đã biết của từng giả lập. Hai cửa sổ BlueStacks vì thế hiện thành hai mục trong danh sách Cổng. Thiết bị là cổng; nhóm là danh sách cổng.

Giả lậpCổng MAS chấp nhận
BlueStacks5555 đến 8500
LDPlayerCổng lẻ từ 5555 đến 5599
MuMu PlayerCổng lẻ 5555 đến 5599, 7555, 16384 đến 16576, 26624 đến 27264
MEmu21503 và mọi cổng kết thúc bằng 3 phía trên nó, dưới 30000

Giữ mọi instance mở trong lúc bạn thêm; instance đã dừng không có cổng để tìm. Trang Thiết bị có đầy đủ quy tắc phát hiện.

Tạo nhóm thiết bị

  1. Mở Nhóm thiết bị và nhấn Tạo nhóm mới.
  2. Nhập Tên, giữ loại Local, và nhấn Tạo nhóm.
  3. Mở nhóm và nhấn Thêm thiết bị.
  4. Nhập Tên thiết bị cho biết đó là tài khoản nào, ví dụ farm-alt-2.
  5. Chọn cổng của instance trong Cổng. Nhấn Làm mới nếu thiếu, hoặc chọn Cổng tùy chỉnh và gõ vào.
  6. Nhấn Thêm thiết bị và lặp lại cho mọi instance.
  7. Trên mỗi thẻ thiết bị, chọn macro trong ô Macro.

Một cổng chỉ thuộc về một thiết bị. Thêm lần hai thất bại với “Port is already in use”. Xem Nhóm thiết bị.

Cho mỗi thiết bị tham số riêng

Hầu hết bot cần một giá trị khác nhau theo từng tài khoản: một cái tên, một mục tiêu, số lượt. Có hai cách truyền nó.

Hồ sơ cài đặt (không đổi mã). Nếu macro có biểu mẫu tham số từ UI Builder, mỗi thẻ thiết bị có Sửa tham số. Hộp thoại mang thanh Hồ sơ: nhập giá trị, chọn Lưu giá trị hiện tại thành hồ sơ mới, đặt tên và nhấn Tạo hồ sơ. Một thiết bị đi theo một hồ sơ, và sửa hồ sơ cập nhật mọi thiết bị đi theo nó ở lần chạy tiếp theo. “Default” luôn tồn tại và không xóa được. Xem Hồ sơ cài đặtUI Builder.

Cổng trong mã. Mã có thể hỏi nó đang ở instance nào và tự chọn cài đặt. Cách này không cần biểu mẫu và là cách ví dụ ở cuối dùng.

python
import mas

port = mas.get_current_device_port()   # 5555, 5557, 5559 ...

Dùng hồ sơ khi giá trị đổi thường xuyên hoặc người khác chạy bot; dùng cổng khi ánh xạ cố định và đi cùng mã.

Cho mỗi thiết bị proxy riêng

Các tài khoản dùng chung IP thì chung số phận. MAS gắn một proxy cho mỗi thiết bị và định tuyến lưu lượng của instance đó qua nó.

  1. Mở Proxy. Dưới Thêm proxy, điền tab Tài khoản gateway, hoặc tab Nhà cung cấp khác cho proxy của riêng bạn (http, https hoặc socks5), và nhấn Thêm & kiểm tra.
  2. Chờ kiểm tra. Nó xác nhận proxy trả lời và phát hiện quốc gia; Kiểm tra lặp lại về sau.
  3. Nhấn Gán và chọn thiết bị, hoặc mở thẻ thiết bị trong Nhóm thiết bị và chọn proxy trong Proxy.

Thẻ thiết bị hiển thị trạng thái proxy ở mỗi lần chạy, và webhook của lần chạy mang proxy_exit_ipproxy_country. Một thiết bị giữ một proxy; gắn cái khác thay thế nó. Xem Proxy.

Bắt đầu tất cả: chạy nhiều giả lập LDPlayer hoặc BlueStacks đồng bộ

Nhấn Bắt đầu tất cả ở đầu nhóm. MAS bắt đầu các thiết bị lần lượt, cách nhau nửa giây, mỗi cái có lần chạy riêng, nhật ký riêng và mã thoát riêng. Thiết bị không có macro bị bỏ qua kèm lỗi và phần còn lại tiếp tục. Dừng tất cả kết thúc mọi lần chạy trong nhóm. Tab Nhật ký trên mỗi thẻ chỉ hiển thị thiết bị đó, và tab Bảng điều khiển hiển thị giao diện lúc chạy nếu macro có.

Giữ trạng thái từng thiết bị bằng bộ nhớ

mas.save, mas.retrievemas.clear được khóa theo máy tính này, cổng của thiết bị và tên tác vụ. Hai instance chạy cùng macro vì thế giữ bộ đếm riêng mà không cần thêm mã. Để cộng dồn, mas.retrieve_all(task_name) trả về một mục cho mỗi cổng với machine_id, port, dataupdated_at.

python
TASK = "collector"

mine = mas.retrieve(TASK)                          # this instance only
everyone = mas.retrieve_all(TASK)                  # every instance on this computer
total = sum(entry["data"].get("done", 0) for entry in everyone)

Xem Lưu trữ.

Webhook theo nhóm

Để được báo khi bất kỳ tài khoản nào xong hoặc thất bại, thêm một điểm cuối trên trang Webhook, chọn sự kiện dưới Gửi cho tôi, và dưới Gửi cho tôi sự kiện từ chọn Nhóm cụ thể rồi tích nhóm. Thiết bị bạn thêm vào nhóm sau này cũng được bao phủ. Mỗi sự kiện mang device_name, device_port, group_id, statusexit_code, nên một điểm cuối phân biệt được các tài khoản. Xem Webhook.

Theo dõi giới hạn tài nguyên của dàn bot BlueStacks

Mỗi instance là một hệ thống Android đầy đủ. Trước khi mở rộng, kiểm tra ba thứ:

  • CPU và RAM cho mỗi instance. Mỗi instance chiếm số nhân và bộ nhớ đặt trong cài đặt instance của giả lập. Cộng chúng lại và chừa dư cho MAS, vốn chạy so khớp mẫu và OCR cho mọi instance trên cùng máy. Khi cú chạm bắt đầu đến muộn, bạn đã quá tải.
  • Thiết bị trong gói của bạn. Gói được định cỡ theo số thiết bị của bạn có thể chạy cùng lúc. Bắt đầu tất cả chạy đúng số gói cho phép; xem Thanh toántrang giá.
  • Công việc theo lịch. Bộ lập lịch chạy tối đa 20 công việc cùng lúc, mỗi cổng một công việc.

Ít instance chạy sạch tốt hơn nhiều instance trượt ảnh mẫu.

Lập lịch cho nhóm

Bộ lập lịch nhắm một cổng cho mỗi công việc, nên lịch của nhóm là một công việc cho mỗi thiết bị.

  1. Mở Lập lịch và nhấn Tạo lịch mới.
  2. Chọn Macro, nhấn Quét dưới Cổng giả lập và chọn instance đầu tiên.
  3. Đặt Ngày, GiờChu kỳ, rồi nhấn Tạo lịch.
  4. Lặp lại cho từng cổng. Cho các công việc cùng giờ; cổng khác nhau không bao giờ xung đột.

Các lần chạy theo lịch dùng tham số đã lưu trên mỗi thẻ thiết bị, hoặc hồ sơ mà thiết bị đi theo, nên giá trị theo tài khoản được giữ nguyên. Ứng dụng phải mở. Xem Bộ lập lịchhướng dẫn vòng lặp.

Một ví dụ hoàn chỉnh

Macro đọc cổng của mình, chọn cài đặt của tài khoản, giữ bộ đếm theo cổng, và ghi tổng trên mọi instance ở cuối. Thay cổng và ID ảnh bằng của bạn.

python
import random
import sys
import time

import mas

images = mas.images({
    "collect": 501,
    "close_popup": 502,
})

SETTINGS = {   # per instance, keyed by the emulator's adb port
    5555: {"account": "main", "rounds": 20},
    5557: {"account": "alt-1", "rounds": 10},
    5559: {"account": "alt-2", "rounds": 10},
}
DEFAULT = {"account": "unknown", "rounds": 5}
TASK = "collector"
TIME_BUDGET_S = 15 * 60


def main():
    port = mas.get_current_device_port()
    settings = SETTINGS.get(port, DEFAULT)
    account = settings["account"]
    mas.log(f"Port {port}: account {account}, {settings['rounds']} rounds")

    done = mas.retrieve(TASK).get("done", 0)
    started = time.monotonic()
    misses = 0

    while done < settings["rounds"]:
        if time.monotonic() - started > TIME_BUDGET_S:
            mas.log(f"{account}: time budget reached", level="warning")
            break
        popup = mas.find_object(images.close_popup)
        if popup:
            mas.click(popup.x, popup.y, delay_ms=800)
            continue
        button = mas.find_object_retry(images.collect, total_tries=3, time_sleep=2.0)
        if button is None:
            misses += 1
            if misses >= 5:
                mas.log(f"{account}: five misses, giving up", level="error")
                sys.exit(2)
            continue
        misses = 0
        mas.click(button.x, button.y, delay_ms=1000)
        done += 1
        mas.save(TASK, {"done": done, "account": account})
        time.sleep(random.uniform(0.8, 2.5))

    total = sum(entry["data"].get("done", 0) for entry in mas.retrieve_all(TASK))
    mas.log(f"{account}: {done} rounds done; {total} across all instances")
    mas.webhook("account.finished", {"account": account, "port": port, "done": done})


if __name__ == "__main__":
    main()

mas.webhook gửi sự kiện custom.account.finished tới các điểm cuối đăng ký sự kiện tùy chỉnh; bỏ dòng đó nếu bạn không có. Khi ánh xạ lớn dần, chuyển nó vào biểu mẫu tham số và đọc args.<tab>.<key> thay cho từ điển.

Điều gì có thể sai

Port is already in use

Một thiết bị khác trong một nhóm của bạn giữ cổng đó. Mỗi cổng chỉ thêm được một lần; xóa mục cũ hoặc chọn cổng của instance kia.

Một instance chạy, các instance khác đứng ở Đang kết nối

Các instance kia đang tắt ADB, vẫn đang khởi động, hoặc nghe trên cổng ngoài dải của giả lập. Mở cài đặt của từng instance, xác nhận ADB và cổng, và nhấn Làm mới trong Thêm thiết bị. Nếu cổng nằm ngoài bảng trên, dùng Cổng tùy chỉnh. Xem Khắc phục sự cố ADB.

Ảnh mẫu chỉ khớp trên một instance

Instance đó có độ phân giải hoặc DPI khác. So khớp mẫu dựa trên pixel; đặt mọi instance về độ phân giải lúc chụp trong cài đặt instance của giả lập và khởi động lại. Hướng dẫn nhận diện hình ảnh giải thích phần còn lại.

Mọi instance dùng chung một bộ đếm

Mã truyền port hoặc machine_id tường minh cho mas.save, hoặc dùng một tệp trên đĩa thay vì bộ nhớ lưu trữ. Gọi mas.save(TASK, data) với giá trị mặc định; cổng hiện tại được thêm cho bạn.

Không có công cụ tự động hóa nào an toàn 100%, vì vậy hãy tự động hóa một cách có trách nhiệm và theo quyết định của riêng bạn.

Bước tiếp theo

Trang liên quan

Trang này có hữu ích không?

Có câu hỏi? Hỏi trên Discord