Популярные темы: Multilogin X, Multilogin 6,
Пример автоматизации с Playwright
Содержание
Playwright — это библиотека с открытым исходным кодом, используемая для автоматизации тестирования веб-приложений и взаимодействия с браузерами. Она предоставляет полный контроль над действиями браузера, такими как навигация, заполнение форм, нажатие на элементы и сбор данных.
В этой статье мы рассмотрим простой скрипт, который запускает браузерный профиль с использованием Playwright.
Вы можете автоматизировать профили Mimic с Playwright. Обратите внимание, что Playwright для Stealthfox пока недоступен в Multilogin X.
Начало работы
JavaScript
- Загрузите Node.js с официального сайта и установите его.
- Убедитесь, что Node.js и npm (Node Package Manager) установлены правильно:
node -v
npm -v
- Создайте каталог проекта, затем запустите эту команду, чтобы начать новый проект Node.js и создать файл
package.json
:
npm init -y
- Установите Playwright в качестве зависимости:
npm install playwright
- Установите библиотеку Axios и MD5:
npm install axios
npm install md5
Python
- Установите следующие библиотеки Python:
- requests
- playwright
- Установите необходимые браузеры:
playwright install
Запуск скрипта
JavaScript
- Проверьте подключение к агенту: он отвечает за запуск профилей.
- Убедитесь, что Playwright совместим с текущей версией ядра Mimic: проверьте журнал обновлений для Playwright и Mimic.
- Запустите файл
.js
с вашим кодом.
Пример скрипта
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
- Проверьте подключение к агенту: он отвечает за запуск профилей.
- Убедитесь, что Playwright совместим с текущей версией ядра Mimic: проверьте журнал обновлений для Playwright и Mimic.
- Запустите файл
.py
с вашим кодом.
Пример скрипта
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()