Ví dụ thực hiện

Updated by MoreLogin

  1. Khởi động MoreLogin và đăng nhập thành công, giữ trạng thái đăng nhập trong quá trình sử dụng API;
  2. Quản lý hồ sơ trình duyệt」->「API」xem trạng thái thành công của giao diện API;
  1. lấy địa chỉ API , số cổng và API Key tại trang 「API」;
  1. Sử dụng giao diện 「Lấy danh sách hồ sơ trình duyệt」 hoặc phương thức sao chép id hồ sơ trình duyệt (tại đầu khách hàng 「Quản lý hồ sơ trình duyệt」)- Menu thả xuống dưới nút 「nhiều hơn」thanh thao tác, bấm nút 「Sao chép ID」để sao chép để lấy được id của hồ sơ trình duyệt cần mở ra
# python3
# pip install requests
import requests
import pprint

headers = {
'x-api-key': 'c7d3b3d1-af9d-4359-8adf-632c2715704a',
}
params = {
"page": 1,
"page_size": 10,
}
res = requests.get("http://local.morelogin.com:25520/profile/list", params=params, headers=headers)
data = res.json()
pprint.pprint(data)

  1. Nếu id hồ sơ trình duyệt của bạn đã lấy được tại bước 4 là  "26841222374912", lúc đó bạn có thể hoàn thành thao tác khởi động hồ sơ trình duyệt bằng khởi động API của hồ sơ trình duyệt
# python3
# pip install requests
import requests
import pprint

headers = {
'x-api-key': 'c7d3b3d1-af9d-4359-8adf-632c2715704a',
}
payload = {
"id": 26868295929665,
}
res = requests.post("http://local.morelogin.com:25520/profile/start/browser", json=payload, headers=headers)
data = res.json()
pprint.pprint(data)

  1. Nếu bạn đã khởi động hồ sơ trình duyệt tại bước 5, lúc đó bạn có thể lấy số cổng webdriver của hồ sơ trình duyệt này trong nội dung tương ứng, do đó bạn có thể hoàn thành bất cứ thao tác trình duyệt điều khiển tự động webdriver nào như Selenium hoặc Puppeteer v.v...
{
"ret": 0,
"data": {
"webdriver_url": "http://localhost:46300",
"port": 46300
}
}

Nếu bạn muốn sử dụng chế độ webdriver, hãy bật công tắc 「Cổng gỡ lỗi」tại 「Trung tâm cài đặt」-「Cài đặt cục bộ」

  1. Dưới đây là ví dụ để vận hành webdriver, có giá trị tham khảo (số cổng điều khiển từ xa cần dựa vào số cổng lấy được thực tế)
from selenium import webdriver
from selenium.webdriver.common.by import By
import requests
import time


def open_profile(api_key, profile_id):
headers = {
"x-api-key": api_key,
}
payload = {
"id": profile_id,
}
res = requests.post(
"http://local.morelogin.com:25520/profile/start/browser",
json=payload,
headers=headers,
)
print(res.json())
data = res.json()["data"]
return data["core_type"], data["port"], data["version"]


def stop_profile(api_key, profile_id):
headers = {
"x-api-key": api_key,
}
payload = {
"id": profile_id,
}
res = requests.post(
"http://local.morelogin.com:25520/profile/stop/browser",
json=payload,
headers=headers,
)
data = res.json()
print(data)


def get_driver(core_type, port, version):
if core_type == 0:
opts = webdriver.ChromeOptions()
opts.set_capability("browserVersion", str(version))
opts.add_experimental_option("debuggerAddress", f"127.0.0.1:{port}")
driver = webdriver.Chrome(options=opts)
else:
raise Exception()
return driver


def test_webdriver(driver):
# time.sleep(5)
driver.switch_to.new_window("tab")
driver.get("https://www.selenium.dev/selenium/web/web-form.html")

title = driver.title
assert title == "Web form"

driver.implicitly_wait(0.5)

text_box = driver.find_element(by=By.NAME, value="my-text")
submit_button = driver.find_element(by=By.CSS_SELECTOR, value="button")

text_box.send_keys("Selenium")
submit_button.click()

message = driver.find_element(by=By.ID, value="message")
value = message.text
assert value == "Received!"

driver.quit()


if __name__ == "__main__":
api_key = "c7d3b3d1-af9d-4359-8adf-632c2715704a"
# profile_id = 26868295929665
profile_id = 26871691303507
core_type, port, version = open_profile(api_key, profile_id)
print(core_type, port, version)
time.sleep(10)
driver = get_driver(core_type, port, version)
test_webdriver(driver)
stop_profile(api_key, profile_id)


How did we do?