Tạo hồ sơ AdsPower hàng loạt bằng Python qua API
Tạo hồ sơ bằng tay hoặc bằng file mẫu trong giao diện AdsPower phù hợp với nhu cầu vài chục hồ sơ mỗi đợt. Khi cần tích hợp việc tạo hồ sơ vào một hệ thống riêng — ví dụ tự động tạo hồ sơ mới mỗi khi có khách hàng mới trong CRM nội bộ — gọi thẳng Local API bằng script là cách phù hợp hơn.
Khi nào nên tạo hồ sơ qua API thay vì qua giao diện?
Nếu việc tạo hồ sơ là thao tác rời rạc, không lặp lại thường xuyên, dùng tính năng nhập file mẫu có sẵn trong giao diện đơn giản hơn nhiều — xem bài tạo hồ sơ hàng loạt bằng mẫu trên AdsPower. Gọi API phù hợp hơn khi:
- Việc tạo hồ sơ cần kích hoạt tự động từ một sự kiện trong hệ thống khác (đơn hàng mới, khách hàng mới đăng ký…), không phải do người vận hành bấm tay.
- Logic tạo hồ sơ cần điều kiện phức tạp hơn cột đơn giản trong file CSV (ví dụ gán proxy theo quy tắc riêng tuỳ theo loại khách hàng).
- Cần chạy định kỳ tự động theo lịch mà không có người trực bấm nút.
Điều kiện cần trước khi bắt đầu
- Tài khoản AdsPower ở bậc Professional trở lên.
- Ứng dụng AdsPower đang mở và đăng nhập trên máy chạy script.
- Danh sách thông tin hồ sơ cần tạo, chuẩn bị sẵn trong file CSV hoặc Excel (tên hồ sơ, ghi chú, thông tin proxy nếu có).
- Đã cài
requestscho Python (pip install requests).
Luồng xử lý tổng quát
Bước 1: Đọc danh sách từ file
import csv
def doc_danh_sach(duong_dan_file):
with open(duong_dan_file, newline="", encoding="utf-8") as f:
return list(csv.DictReader(f))
danh_sach_ho_so = doc_danh_sach("danh_sach_ho_so.csv")
Bước 2: Lặp qua từng dòng và gọi API tạo hồ sơ
Tên endpoint và tham số chính xác để tạo hồ sơ nằm trong tài liệu Postman chính hãng (documenter.getpostman.com/view/45822952/2sB34hEzQH). Ví dụ dưới đây minh hoạ luồng gọi, dùng biến giữ chỗ cho endpoint và tham số:
import time
import requests
KHOANG_CACH_GIUA_CAC_LAN_GOI_GIAY = 1 # điều chỉnh theo giới hạn tốc độ của bậc giá đang dùng
danh_sach_loi = []
for dong in danh_sach_ho_so:
try:
# Thay URL và tên tham số bên dưới bằng đúng endpoint tạo hồ sơ
# trong tài liệu chính hãng — đây chỉ là ví dụ minh hoạ.
response = requests.post(
"http://<local-api-host>:<port>/<endpoint-tao-ho-so-theo-tai-lieu>",
json={
"ten_ho_so": dong["ten_ho_so"],
"ghi_chu": dong.get("ghi_chu", ""),
# các tham số proxy, nhóm hồ sơ... theo đúng tên trong tài liệu
},
timeout=10,
)
response.raise_for_status()
ket_qua = response.json()
# Nếu API báo lỗi giới hạn tốc độ gọi (cấu trúc phản hồi cụ thể
# xem tài liệu chính hãng), nên dừng lại và chờ trước khi thử tiếp.
print(f"Đã tạo hồ sơ: {dong['ten_ho_so']}")
except requests.RequestException as loi:
print(f"Lỗi khi tạo hồ sơ {dong['ten_ho_so']}: {loi}")
danh_sach_loi.append(dong)
time.sleep(KHOANG_CACH_GIUA_CAC_LAN_GOI_GIAY)
if danh_sach_loi:
print(f"Có {len(danh_sach_loi)} hồ sơ tạo lỗi, cần kiểm tra lại.")
Bước 3: Xử lý riêng các dòng lỗi
Không nên chạy lại toàn bộ file khi có lỗi giữa chừng, vì sẽ tạo trùng các hồ sơ đã thành công. Ghi log các dòng lỗi ra một file riêng (như danh_sach_loi ở trên), kiểm tra nguyên nhân (thiếu tham số bắt buộc, vượt giới hạn hồ sơ của gói, hay chạm giới hạn tốc độ gọi API), sửa lại rồi chỉ chạy lại phần đã lỗi.
Bước 4: Kiểm tra lại sau khi tạo xong
Gọi lại endpoint lấy danh sách hồ sơ để đối chiếu số lượng hồ sơ vừa tạo có khớp với số dòng đã gửi thành công không, tránh trường hợp API báo thành công nhưng hồ sơ chưa thực sự sẵn sàng dùng ngay.
Tính toán độ trễ phù hợp với bậc giá
Giới hạn tốc độ gọi API theo bậc giá (nguồn: adspower.com/vn/pricing, kiểm tra ngày 25/07/2026):
| Bậc giá | Giới hạn tốc độ gọi |
|---|---|
| Professional | 120 lần/phút |
| Business | 300 lần/phút |
| Enterprise | 600 lần/phút |
Ở bậc Professional, 120 lần/phút tương đương trung bình 2 lần gọi mỗi giây — nhưng nên để độ trễ rộng rãi hơn mức lý thuyết (ví dụ 1 giây/lần thay vì 0,5 giây/lần) để chừa khoảng đệm cho các lệnh gọi API khác đang chạy song song trên cùng tài khoản (ví dụ script khác đang mở/đóng hồ sơ cùng lúc). Xem phân tích chi tiết hơn về cách xử lý khi chạm trần tại bài xử lý khi chạm trần giới hạn tốc độ gọi API AdsPower.
Có nên tạo hàng trăm hồ sơ trong một lần chạy?
Không nên. Chia thành nhiều đợt nhỏ (ví dụ 50 hồ sơ mỗi đợt), kiểm tra kết quả từng đợt trước khi chạy đợt tiếp theo. Cách này giúp phát hiện lỗi cấu hình sớm (ví dụ sai tên tham số) trước khi lỗi đó lặp lại hàng trăm lần, đồng thời tránh áp lực dồn dập lên giới hạn tốc độ gọi API trong thời gian ngắn.
Tài liệu tham khảo chính xác
Tên endpoint tạo hồ sơ, danh sách tham số bắt buộc/tuỳ chọn, và cấu trúc JSON phản hồi thật nằm trong tài liệu Postman chính hãng tại documenter.getpostman.com/view/45822952/2sB34hEzQH. Tìm hiểu khái niệm nền tảng của Local API tại bài API cục bộ AdsPower là gì, xem thông tin gói dịch vụ tại trang AdsPower và bảng giá.
Câu hỏi thường gặp
Tạo hàng loạt bằng API khác gì với tạo hàng loạt bằng file mẫu có sẵn trong giao diện?
Tạo bằng file mẫu trong giao diện là thao tác thủ công qua tính năng có sẵn, phù hợp tạo theo đợt không thường xuyên. Tạo qua API phù hợp khi cần tích hợp vào một hệ thống riêng của bạn (ví dụ tự động tạo hồ sơ khi có đơn hàng mới) hoặc cần logic tạo phức tạp hơn (điều kiện, dữ liệu động) mà giao diện không đáp ứng được.
Vì sao phải chèn sleep giữa các lần gọi API tạo hồ sơ?
Vì mỗi lần gọi API đều tính vào giới hạn tốc độ gọi theo bậc giá (120 lần/phút ở Professional). Vòng lặp tạo hàng chục hồ sơ liên tiếp không có độ trễ sẽ chạm giới hạn này rất nhanh, dẫn đến các lần gọi sau bị từ chối.
Nếu một dòng trong danh sách tạo lỗi giữa chừng thì xử lý sao?
Nên ghi lại log riêng các dòng thất bại (kèm lý do lỗi trả về) thay vì để cả vòng lặp dừng lại, sau đó chỉ chạy lại phần tạo cho các dòng lỗi đó. Cách này tránh tạo trùng các hồ sơ đã thành công.
Cần gói AdsPower nào để dùng cách này?
Tối thiểu bậc Professional. Với số lượng hồ sơ cần tạo lớn và tần suất cao, nên cân nhắc bậc Business (300 lần/phút) để giảm thời gian chờ giữa các lần gọi.
Có nên tạo hàng trăm hồ sơ chỉ trong một lần chạy script không?
Nên chia thành nhiều đợt nhỏ hơn thay vì chạy một script tạo hàng trăm hồ sơ liên tục trong một lần, để dễ kiểm soát lỗi giữa chừng và tránh áp lực lớn lên giới hạn tốc độ gọi API trong thời gian ngắn.