Cách chạy các tập lệnh Multilogin API trên nhiều máy chủ bằng Python
Cần chạy cùng một script Multilogin API trên nhiều máy chủ? Với Python và SSH, bạn có thể chạy mọi thứ từ một máy tính, thay vì phải kết nối vào từng máy chủ và khởi động script thủ công.
➡️ Tạo token tự động hóa → thiết lập quyền truy cập SSH → thêm remote_api.py vào từng máy chủ → chạy auto.py trên máy tính của bạn.
Ví dụ này kiểm tra kết nối với Multilogin API bằng cách lấy danh sách điện thoại đám mây. Khi kết nối hoạt động, bạn có thể thay request kiểm tra bằng các tác vụ tự động hóa của riêng mình.
Ai có thể sử dụng tự động hóa?
- 👨💻 Chủ tài khoản và tất cả các thành viên trong nhóm (quyền truy cập vào các tính năng phụ thuộc vào vai trò)
- 💰 Có sẵn trên gói Pro 10 và cao hơn
Trước khi bắt đầu
Bạn cần:
- Python 3 trên máy tính và các máy chủ từ xa
- Quyền truy cập từng máy chủ bằng khóa SSH, với host key đã được xác minh
- Token tự động hóa Multilogin còn hiệu lực
- Kết nối Internet trên từng máy chủ để truy cập Multilogin API
SSH và Multilogin dùng thông tin xác thực khác nhau. Khóa SSH giúp bạn kết nối với máy chủ, còn token tự động hóa cho phép script gửi request đến Multilogin API.
Ví dụ này dùng máy chủ Linux hoặc macOS
Bạn cũng có thể dùng máy chủ Windows, nhưng cần điều chỉnh đường dẫn tệp và lệnh Python.
Bước 1: chuẩn bị máy chủ
Trước tiên, hãy kiểm tra xem bạn có thể kết nối với từng máy chủ qua SSH hay không.
Mở terminal trên máy tính và chạy:
ssh username@server-ipThay username và server-ip bằng thông tin của bạn.
Nếu đây là lần đầu kết nối, hãy xác minh SSH fingerprint của máy chủ với quản trị viên trước khi tin cậy.
Sau đó, cài đặt các thư viện Python cần thiết.
Trên máy tính của bạn:
python3 -m pip install paramikoTrên từng máy chủ từ xa:
python3 -m pip install requestsNếu bạn dùng môi trường Python ảo, hãy cài các thư viện trong môi trường đó và dùng cùng môi trường để chạy script.
Bước 2: tạo script Multilogin API
Hãy bắt đầu bằng một bài kiểm tra đơn giản. Script sẽ yêu cầu Multilogin API trả về danh sách điện thoại đám mây để kiểm tra xem từng máy chủ có kết nối được hay không.
Tạo tệp remote_api.py trong thư mục home của từng máy chủ từ xa.
import sys
import requests
token = sys.stdin.readline().strip()
if not token:
raise SystemExit("No automation token provided.")
url = "https://api.multilogin.com/mobile_profiles/phone/list"
headers = {
"Authorization": f"Bearer {token}",
"Accept": "application/json",
}
params = {
"page": 1,
"page_size": 10,
}
try:
response = requests.get(
url,
headers=headers,
params=params,
)
response.raise_for_status()
result = response.json()
status = result.get("status", {})
if status.get("http_code") != 200:
raise RuntimeError(
status.get("message", "Unknown API error")
)
print("Connected to Multilogin API successfully.")
except (requests.RequestException, ValueError, RuntimeError) as error:
print(f"API request failed: {error}")
raise SystemExit(1)Script nhận token tự động hóa khi chạy, nên bạn không cần lưu email, mật khẩu hoặc token Multilogin trong tệp.
Bài kiểm tra này không thay đổi hồ sơ của bạn. Nó chỉ yêu cầu trang đầu tiên trong danh sách điện thoại đám mây.
Bước 3: tạo script kết nối máy chủ
Bây giờ, hãy kết nối mọi thứ lại với nhau.
Tạo auto.py trên máy tính của bạn. Script này kết nối với từng máy chủ, chuyển token tự động hóa và chạy remote_api.py.
import sys
import getpass
import paramiko
servers = [
{"username": "username1", "host": "server1-ip", "port": 22},
{"username": "username2", "host": "server2-ip", "port": 22},
]
token = getpass.getpass("Multilogin automation token: ")
if not token:
raise SystemExit("No automation token provided.")
failed_servers = []
for server in servers:
username = server["username"]
host = server["host"]
port = server.get("port", 22)
print(f"\nConnecting to {username}@{host}")
try:
with paramiko.SSHClient() as ssh:
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(
paramiko.RejectPolicy()
)
ssh.connect(
hostname=host,
port=port,
username=username,
look_for_keys=True,
allow_agent=True,
timeout=15,
)
stdin, stdout, stderr = ssh.exec_command(
"python3 ~/remote_api.py"
)
stdin.write(token + "\n")
stdin.flush()
stdin.channel.shutdown_write()
output = stdout.read().decode().strip()
errors = stderr.read().decode().strip()
exit_code = stdout.channel.recv_exit_status()
if output:
print(output)
if errors:
print(errors)
if exit_code != 0:
print(f"Script failed with exit code {exit_code}")
failed_servers.append(host)
except Exception as error:
print(f"Connection failed: {error}")
failed_servers.append(host)
if failed_servers:
print("\nFailed servers: " + ", ".join(failed_servers))
sys.exit(1)Thay tên người dùng, địa chỉ máy chủ và cổng mẫu bằng thông tin của bạn.
Script dùng khóa SSH, nên bạn không cần lưu mật khẩu máy chủ trong code. Script cũng kiểm tra máy chủ có đáng tin cậy hay không trước khi kết nối.
Bước 4: chạy script
Mọi thứ đã sẵn sàng? Giờ hãy kiểm tra kết nối.
- Mở terminal trên máy tính
-
Đi đến thư mục chứa
auto.py - Chạy:
python3 auto.py- Nhập token tự động hóa khi được yêu cầu
- Kiểm tra kết quả của từng máy chủ
- Nếu kết nối thành công, bạn sẽ thấy:
Connected to Multilogin API successfully.Nếu có lỗi, script sẽ cho biết máy chủ nào gặp sự cố.
Token sẽ không hiển thị khi bạn nhập, và script cũng không in hoặc lưu token.
Bước 5: thêm tác vụ tự động hóa của bạn
Khi bài kiểm tra hoạt động, bạn có thể thay phần kiểm tra kết nối bằng các tác vụ thực tế cần chạy.
Thay request kiểm tra trong remote_api.py bằng các thao tác Multilogin API bạn cần.
Ví dụ, bạn có thể:
- Lấy danh sách điện thoại đám mây hoặc hồ sơ trình duyệt
- Kiểm tra hồ sơ nào đang chạy
- Tạo hoặc cập nhật hồ sơ
- Khởi động hoặc dừng các hồ sơ được hỗ trợ
Ví dụ, nếu bạn quản lý tài khoản trên nhiều máy chủ, bạn có thể dùng cách này để kiểm tra trạng thái hồ sơ trên tất cả máy chủ mà không cần kết nối thủ công từng máy.
Bạn có thể xem các endpoint có sẵn, tham số bắt buộc và ví dụ phản hồi trong tài liệu Multilogin API.
Đang dùng endpoint của local launcher?
Nếu script khởi động hoặc điều khiển hồ sơ trình duyệt qua API của local launcher, các thành phần desktop của Multilogin phải đang chạy trên máy chủ đó. Chỉ kết nối với cloud API sẽ không tự khởi động ứng dụng desktop.
Xử lý sự cố
Không kết nối được qua SSH
Thử kết nối thủ công:
ssh username@server-ipNếu không được, hãy kiểm tra khóa SSH và đảm bảo bạn có quyền truy cập máy chủ.
Nếu gặp lỗi host key không xác định, hãy xác minh fingerprint của máy chủ rồi thêm máy chủ vào danh sách SSH host đáng tin cậy trước khi thử lại.
Python không tìm thấy thư viện
Kiểm tra xem bạn đã cài đúng thư viện ở đúng nơi chưa:
-
Máy tính của bạn:
paramiko -
Máy chủ từ xa:
requests
Nếu dùng môi trường ảo, hãy đảm bảo bạn đang chạy script bằng đúng Python interpreter.
Multilogin API trả về lỗi
Trước tiên, hãy kiểm tra thông báo lỗi. Một số phản hồi thường gặp:
-
401 – Unauthorized: token tự động hóa có thể bị thiếu, không chính xác hoặc đã hết hạn -
403 – Forbidden: không gian làm việc hoặc vai trò của bạn có thể không có quyền gửi request này -
429 – Too Many Requests: không gian làm việc đã đạt giới hạn request API
Để tìm hiểu thêm, xem giới hạn tần suất và mã phản hồi của Multilogin API.
Python không xác minh được chứng chỉ API
Nếu bạn dùng proxy của công ty hoặc cấu hình mạng tùy chỉnh, Python có thể không nhận ra chứng chỉ dùng cho kết nối.
Hãy yêu cầu quản trị viên cung cấp gói chứng chỉ CA được phê duyệt và cấu hình Requests để sử dụng gói đó.
Không tắt tính năng xác minh chứng chỉ. Tính năng này giúp bảo vệ kết nối của bạn.
Giữ token tự động hóa an toàn
Chỉ chạy các script này trên máy chủ mà bạn tin cậy.
Token tự động hóa được truyền qua kết nối SSH đã mã hóa, nhưng script trên máy chủ vẫn có thể truy cập token trong lúc chạy. Nếu ai đó kiểm soát máy chủ đó, họ có thể lấy token và sử dụng quyền của không gian làm việc.