Пример использования

Updated by MoreLogin

  1. Запустите MoreLogin и успешно войдите в систему, а затем сохраните состояние входа в систему при использовании API.
  2. Перейдите в Профиль браузера > API, чтобы проверить успешное состояние интерфейса API.
  1. Получить адрес API; номер порта; и ключ API на странице API.
  1. Используйте конечную точку «Получить список профилей браузера», чтобы получить список профилей браузера, или вы можете напрямую скопировать идентификатор профиля браузера. Перейдите в раздел «Профиль браузера», нажмите кнопку «Еще» в столбце действий и выберите опцию «Копировать идентификатор» в раскрывающемся меню.
# 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. Предполагая, что на четвертом шаге вы получили идентификатор профиля браузера как «26841222374912», вы можете запустить API профиля браузера, чтобы инициировать профиль браузера.
# 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. Предполагая, что вы успешно запустили профиль браузера на пятом шаге, теперь вы можете получить номер порта веб-драйвера, связанный с этим профилем браузера. Это позволит вам выполнять автоматические действия браузера с помощью таких инструментов, как Selenium или Puppeteer.
{
"ret": 0,
"data": {
"webdriver_url": "http://localhost:46300",
"port": 46300
}
}

Если вам необходимо использовать режим WebDriver, обязательно включите переключатель «Порт отладки» в меню «Настройки» — «Локальные настройки».

  1. Вот пример запуска веб-драйвера (номер удаленного порта должен основываться на фактическом полученном номере порта):
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?