Các chủ đề phổ biến: Multilogin X, Multilogin 6,
Ví dụ về tự động hóa Playwright
Bảng tóm tắt
Playwright là thư viện tự động hóa nguồn mở được thiết kế để thử nghiệm các ứng dụng web và tự động hóa tương tác với trình duyệt web. Nó cung cấp khả năng kiểm soát toàn diện các hành động của trình duyệt, bao gồm điều hướng, điền biểu mẫu, nhấp vào phần tử và trích xuất dữ liệu từ các trang web.
Trong bài viết này, chúng tôi sẽ cung cấp một tập lệnh đơn giản để khởi chạy cấu hình trình duyệt và kết nối nó với Playwright .
Bạn có thể tự động hóa cấu hình trình duyệt Mimic bằng cách sử dụng Playwright cho trình thu thập dữ liệu web của mình. Lưu ý rằng Playwright dành cho Stealthfox chưa có trong Multilogin X
Trước khi bạn bắt đầu
JavaScript
- Tải xuống Node.js từ trang web chính thức và cài đặt nó
- Đảm bảo Node.js và npm (Node Package Manager) được cài đặt chính xác:
node -v
npm -v
- Tạo một thư mục dự án, sau đó chạy lệnh này để khởi tạo dự án Node.js mới và tạo tệp
package.json
:
npm init -y
- Cài đặt Playwright làm phần phụ thuộc cho dự án của bạn:
npm install playwright
- Cài đặt thư viện Axios và MD5:
npm install axios
npm install md5
Python
- Cài đặt các thư viện Python sau:
- requests
- playwright
- Cài đặt các nhị phân trình duyệt cần thiết:
playwright install
Chạy tập lệnh
JavaScript
- Đảm bảo agent được kết nối vì nó giúp có thể khởi chạy hồ sơ
- Đảm bảo Playwright tương thích với phiên bản lõi Mimic hiện tại – kiểm tra ghi chú phát hành cho Playwright và Mimic
- Chạy tệp
.js
bằng mã tự động hóa của bạn
Ví dụ về tập lệnh
const { chromium } = require('playwright');
const md5 = require ('md5');
const axios = require('axios');
const HEADERS = {
"Content-Type": "application/json",
"Accept": "application/json",
};
const acc_info = {
// Insert your account information in both variables below
"email": "",
"password": md5("")
};
async function get_token() {
const signIn_URL = "https://api.multilogin.com/user/signin";
try {
const response = await axios.post(signIn_URL, acc_info, { headers: HEADERS });
return response.data.data.token;
} catch (error) {
console.log(error.message);
console.log("Response data:", error.response.data);
return false;
}
};
// Insert the Folder ID and the Profile ID below
const folder_id = "";
const profile_id = "";
async function start_browserProfile(){
const token = await get_token();
if (!token) return;
// Update HEADERS with bearer token retrived from the get_token function
HEADERS.Authorization = 'Bearer ' + token;
// Launch a profile defining "Playwright" as automation type
const profileLaunch_URL = `https://launcher.mlx.yt:45001/api/v2/profile/f/${folder_id}/p/${profile_id}/start?automation_type=playwright&headless_mode=false`;
try {
const response = await axios.get(profileLaunch_URL, { headers: HEADERS });
const browserURL = `http://127.0.0.1:${response.data.data.port}`;
// if you prefer to connect with browserWSEndpoint, try to get the webSocketDebuggerUrl by following request
// const {data : {webSocketDebuggerUrl}} = await axios.get(`${browserURL}/json/version`)
const browser = await chromium.connectOverCDP(browserURL,{timeout:10000});
const context = browser.contexts()[0];
const page = await context.newPage();
await page.goto("https://multilogin.com/");
await page.screenshot({path: "example.png"});
await page.close();
} catch (error) {
console.log("Error:", error.message);
if (error.response) {
console.log("Response data:", error.response.data);
}
}
};
start_browserProfile();
Python
- Đảm bảo agent được kết nối vì nó giúp có thể khởi chạy hồ sơ
- Đảm bảo Playwright tương thích với phiên bản lõi Mimic hiện tại – kiểm tra ghi chú phát hành cho Playwright và Mimic
- Chạy tệp
.py
với mã tự động hóa của bạn
Ví dụ về tập lệnh
import hashlib
import requests
import time
from playwright.sync_api import sync_playwright
MLX_BASE = "https://api.multilogin.com"
HEADERS = {"Accept": "application/json", "Content-Type": "application/json"}
# TODO: Insert your account information in both variables below
USERNAME = ""
PASSWORD = ""
# TODO: Insert the Folder ID and the Profile ID below
FOLDER_ID = ""
PROFILE_ID = ""
def sign_in() -> str:
payload = {
"email": USERNAME,
"password": hashlib.md5(PASSWORD.encode()).hexdigest(),
}
r = requests.post(f"{MLX_BASE}/user/signin", json=payload)
if r.status_code != 200:
print(f"\nError during login: {r.text}\n")
else:
response = r.json()["data"]
token = response["token"]
return token
HEADERS["Authorization"] = f"Bearer {sign_in()}"
def start_profile():
with sync_playwright() as pw:
resp = requests.get(
f"https://launcher.mlx.yt:45001/api/v2/profile/f/{FOLDER_ID}/p/{PROFILE_ID}/start?automation_type=playwright&headless_mode=false",
headers=HEADERS)
resp_json = resp.json()
if resp.status_code != 200:
print(f"\nError while starting profile: {resp.text}\n")
return
else:
print(f"\nProfile {PROFILE_ID} started.\n")
browserPort = resp_json["data"]["port"]
browserURL = f"http://127.0.0.1:{browserPort}"
# if you prefer to connect with browserWSEndpoint, try to get the webSocketDebuggerUrl by following request
# response = requests.get(f'{browserURL}/json/version')
# browser_ws_endpoint = response.json()["webSocketDebuggerUrl"]
browser = pw.chromium.connect_over_cdp(endpoint_url=browserURL)
context = browser.contexts[0]
page = context.new_page()
page.goto('https://www.multilogin.com')
time.sleep(5)
page.screenshot(path='example.png')
page.close()
start_profile()