Запуск и остановка профилей

Введение

Vision предоставляет возможность запуска и остановки профилей по API, используя HTTP-запросы. Для отправки некоторых запросов может потребоваться X-Token, подробнее о нём можно прочитать в соответствующей статье.

Получение токена авторизации

Получения токена авторизации для работы с API

Работа с профилями

Получение списка запущенных профилей

В Vision есть возможность получения информации по уже запущенным профилям.

Запрос

Для получения списка запущенных профилей необходимо отправить соответствующий GET запрос:

GET
http://127.0.0.1:3030/list

Пример запроса

1const url =
2  "http://127.0.0.1:3030/list"; 
3
4const options = {
5  method: "GET",
6  headers: {
7    "X-Token": "Your Token", 
8  }, 
9};
10
11fetch(url, options)
12  .then((response) => {
13    response.json().then((data) => {
14      console.log(data);
15    });
16  })
17  .catch((error) => {
18    console.error(error);
19  });

Пример ответа

1{
2    "profiles": [
3        {
4            "folder_id": "698d2698-11a5-4768-bfb8-92b904026bfd",
5            "profile_id": "05296821-1ee5-445c-805f-1523578e898c",
6            "port": null
7        },
8        {
9            "folder_id": "698d2698-11a5-4768-bfb8-92b904026bfd",
10            "profile_id": "98bc0cb8-3cae-483f-bb8c-2607cc5c9883",
11            "port": null
12        },
13        {
14            "folder_id": "698d2698-11a5-4768-bfb8-92b904026bfd",
15            "profile_id": "9c6ed4a3-20b3-441d-adc6-58b99791f67b",
16            "port": null
17        }
18    ]
19}

Запуск профиля по API

Запрос

Для запуска профиля необходимо отправить соответствующий GET запрос:

Обратите внимание, что в URL запроса неободимо передать ID папки - folderId, в которой находится запускаемый профиль, а также ID самого профиля - profileID.

GET
http://127.0.0.1:3030/start/{folderId}/{profileId}
POST
http://127.0.0.1:3030/start/{folderId}/{profileId}

Если вы хотите передать дополнительные аргументы в браузер, вы можете сделать это, отправив POST запрос с JSON телом, содержащим поле args с массивом аргументов.

Заголовки запроса

Headers
Название
Тип / Значение
Описание
X-Token
String
Токен авторизации

Тело запроса (необязательно)

Browser arguments
Название
Тип / Значение
Описание
args
String[]
Array of extra arguments should be passed to browser

Пример запроса

1const url =
2  "http://127.0.0.1:3030/start/{folderId}/{profileId}"; 
3
4const options = {
5  method: "GET",
6  headers: {
7    "X-Token": "Your Token", 
8  }, 
9};
10
11fetch(url, options)
12  .then((response) => {
13    response.json().then((data) => {
14      console.log(data);
15    });
16  })
17  .catch((error) => {
18    console.error(error);
19  });

Пример запроса запуска профиля в режиме headless

1const url =
2  "http://127.0.0.1:3030/start/{folderId}/{profileId}"; 
3
4const body = {
5  "args": [
6    "--headless"
7  ]
8}
9
10const options = {
11  method: "POST",
12  headers: {
13    "X-Token": "Your Token", 
14    "Content-Type": "application/json"
15  }, 
16  body: JSON.stringify(body)
17};
18
19fetch(url, options)
20  .then((response) => {
21    response.json().then((data) => {
22      console.log(data);
23    });
24  })
25  .catch((error) => {
26    console.error(error);
27  });

Пример запроса запуска профиля с конкретным портом

В указанном ниже примере вместо PORT_NUMBER_HERE необходимо указать целое число в диапазоне от 1024 до 65535. Таким образом профиль будет запущен с указанным в коде портом, а вы сможете использовать именно этот порт для подключения к инстансу браузерного профиля.

1const url =
2  "http://127.0.0.1:3030/start/{folderId}/{profileId}"; 
3
4const body = {
5  "args": [
6    "--remote-debugging-port=PORT_NUMBER_HERE"
7  ]
8}
9
10const options = {
11  method: "POST",
12  headers: {
13    "X-Token": "Your Token", 
14    "Content-Type": "application/json"
15  }, 
16  body: JSON.stringify(body)
17};
18
19fetch(url, options)
20  .then((response) => {
21    response.json().then((data) => {
22      console.log(data);
23    });
24  })
25  .catch((error) => {
26    console.error(error);
27  });

Пример запроса запуска профиля с временной прокси

Если необходимо запустить профиль с временной прокси, то можно указать данные от прокси в теле запроса на запуск. При этом данная прокси сохранена не будет. От вас потребуется передать в body запроса следующие данные:

  • тип прокси (http, https, socks5, ssh)
  • хост прокси (IP адрес или домен)
  • порт
  • логин (при наличии)
  • пароль (при наличии)

ВАЖНО: При запуске профиля с временной прокси необходимо передавать также пустой массив args, в противном случае запуск с временной прокси работать не будет!

1const url =
2  "http://127.0.0.1:3030/start/{folderId}/{profileId}"; 
3
4const body = {
5  "args": [],
6  "proxy": {
7    "type": "socks5",
8    "address": "1.1.1.1",
9    "port": 4123,
10    "username": "vision",
11    "password": "password"
12  }
13}
14
15const options = {
16  method: "POST",
17  headers: {
18    "X-Token": "Your Token", 
19    "Content-Type": "application/json"
20  }, 
21  body: JSON.stringify(body)
22};
23
24fetch(url, options)
25  .then((response) => {
26    response.json().then((data) => {
27      console.log(data);
28    });
29  })
30  .catch((error) => {
31    console.error(error);
32  });

Обратите внимание, что временная прокси является приоритетным выбором при запуске.

Это значит, что при наличии у профиля привязанной прокси, запуск всё равно произойдёт с временной прокси.

Ответ

Данные ответа

Response data
Название
Тип / Значение
Описание
folder_id
String
ID папки, в которой находится запущенный профиль
profile_id
String
ID запущенного профиля
port
Number
Порт для подключения к профилю для автоматизации

Пример ответа

1{
2    "folder_id": "698d2698-11a5-4768-bfb8-92b904026bfd",
3    "profile_id": "98bc0cb8-3cae-483f-bb8c-2607cc5c9883",
4    "port": 19512
5}

Остановка профиля по API

Запрос

Для остановки профиля необходимо отправить соответствующий GET запрос:

GET
http://127.0.0.1:3030/stop/{folderId}/{profileId}

Обратите внимание, что в URL запроса необходимо передать ID папки - folderId, в которой находится останавливаемый профиль, а также ID самого профиля - profileId.

Пример запроса

1const url =
2  "http://127.0.0.1:3030/stop/{folderId}/{profileId}"; 
3
4const options = {
5  method: "GET",
6  headers: {
7    "X-Token": "Your Token", 
8  }, 
9};
10
11fetch(url, options)
12  .then((response) => {
13    response.json().then((data) => {
14      console.log(data);
15    });
16  })
17  .catch((error) => {
18    console.error(error);
19  });

Ответ

Пример ответа

1Stopping profile 98bc0cb8-3cae-483f-bb8c-2607cc5c9883 in folder 698d2698-11a5-4768-bfb8-92b904026bfd