Глоссарий
Headless-браузер
Headless-браузер это настоящий браузер, который работает без окна на экране, и ведёт его код, а не человек.
Что значит работа без окна
Движок по-прежнему грузит страницы, раскладывает их и исполняет сценарии. На экран не рисуется ничего, и машина не тратится на точки, на которые никто не смотрит.
Поэтому так идут прогоны по расписанию и длинные сценарии. По этой же причине проверка на ботов смотрит сюда первым делом.
Тот же движок без поверхности
Страницы грузятся и сценарии идут ровно так же, как в окне, которое видно глазами.
Ведёт его код
Расписание или сценарий говорит, куда идти и что там делать, когда дошёл.
Дёшево держать помногу
Память уходит страницам, и сервер держит больше сеансов, чем настольный экран способен показать.
Почему проверка смотрит сюда первой
Chromium называет этот режим в собственной строке браузера. Замерено на нашем собранном движке в обоих режимах: примета стоит и в новом режиме тоже.
С ней обычно едут ещё две строки. Браузер под управлением кода умеет объявить это одним признаком, а выключенная графика убирает WebGL целиком.
Слово в строке браузера
Строка по умолчанию несёт слово, говорящее, что окна к этому браузеру не приставлено.
Признак автоматизации
Открытый канал отладки ставит признак, который проверка на ботов читает первой же строкой.
Выключенная графика
Браузер вовсе без WebGL заметнее, чем браузер без окна.
Пустой список надстроек
Старый режим не отдавал ни одной, и страница всё ещё их считает, потому что это ничего не стоит.
Что отвечает наш профиль без окна
Скрытый профиль несёт ту же строку браузера, что и открытый, потому что строка берётся из семени профиля и ставится в строке запуска всегда.
Графика остаётся на месте, канал отладки не оставляет признака, а семя это ровно то, с которым идёт дневная работа руками.
| Что читает страница | С окном | Без окна |
|---|---|---|
| Строка браузера | из семени профиля | из семени профиля |
| WebGL | Да | Да |
| Признак автоматизации | скрыт | скрыт |
| Семя отпечатка | своё у профиля | то же самое побайтно |
| Адресов при старте | стартовая страница и цель | один, остальные вкладками |
Ваш браузер прямо сейчас
Эти три строки проверка на ботов читает первыми. Здесь они описывают тот браузер, в котором вы читаете эту страницу.
Ваша машина прямо сейчас
- Строка браузера
- измеряем на вашей машине
- Признак автоматизации
- измеряем на вашей машине
- Надстроек насчитано
- измеряем на вашей машине
Прочитано в вашем браузере и показано здесь. Никуда не отправляется.
Где просят прогон без окна
Это свойство профиля, и потому все дороги к запуску чтят одно и то же решение. Кнопка в окне, расписание и прогон сценария читают его один раз.
Отдельный прогон вправе попросить другого. Чужая программа на этой же машине просит скрытый прогон, не меняя того, как профиль откроется завтра.
- 1
Задано один раз у профиля
Выбор сохраняется вместе с профилем и остаётся на месте после перезапуска.
- 2
Прочитано каждой дорогой
Решение принимается в начале запуска и раздаётся всем, кому оно нужно.
- 3
Перебито на один прогон
Просьба чужой программы действует на этот прогон и не трогает сам профиль.
Часто путают с этим
Режим инкогнито
Окно, которое видно, и хранилище, которое стирается при закрытии. Само окно при этом ничем не скрыто.
Виртуальная машина
Целый второй компьютер. Здесь же это один процесс браузера на том компьютере, который у вас уже есть.
Свёрнутое окно
Оно всё ещё рисуется, всё ещё известно управляющему окнами и всё ещё придушено системой, пока его не видно.
Чего это не делает
- Работа без окна сама по себе не прячет автоматизацию. Что набрано, с какой скоростью набрано и куда ходит указатель, читается ровно так же.
- Это не принимает больше одного адреса на старте. Chromium в этом режиме берёт одну цель, и остальные открываются вкладками, когда браузер уже поднялся.
- Это не меняет адрес, с которого вы приходите, и ту репутацию, которая у этого адреса уже есть.
- Это не вторая машина. Скрытый профиль и открытый на одном компьютере делят один диск и одну сеть.
Проверить
Каждая строка выше это файл, который можно открыть, или стенд, который её держит.
- Скрытый запуск несёт собственную строку браузера профиля
- apps/desktop/test/скрытый-режим.js
- Движку уходит один адрес, а остальные не теряются
- apps/desktop/test/скрытый-запуск-одним-адресом.js
- Один профиль, открытый обоими способами, сверяется по полям
- apps/desktop/test/скрытый-режим-живьём.js
- Канал отладки не оставляет признака автоматизации
- apps/desktop/test/webdriver-flag.js · apps/desktop/test/cdp-port-only-when-needed.js
Вопросы
- Сайт может понять, что окна нет?
- Он ищет обычные приметы: слово в строке браузера, признак автоматизации и пустой список надстроек. Каждая из них это одна строка сценария.
- Скрытый профиль выглядит иначе, чем он же с окном?
- Не должен, и это меряется, а не предполагается. Один профиль открывают обоими способами на собранном движке и сверяют две машины поле за полем.
- Памяти уходит меньше?
- Да, ради этого всё и делается. Не рисуется ничего, и машина держит разом больше сеансов, чем экран способен показать.
- Это то же самое, что инкогнито?
- Нет. Инкогнито это видимое окно, забывающее хранилище при закрытии. Здесь окна нет вовсе.
- Можно включить это на один прогон?
- Да. Просьба чужой программы действует только на этот прогон, а профиль сохраняет то, что вы выбрали в его редакторе.
Запустите профиль без окна на экране
Выбор живёт у профиля, поэтому расписание и сценарий чтят его без второй настройки.