Private KeeperPrivate Keeper
in-Line Kit/Функции in-Line Kit

Сеть и состояние запроса

Управление данными cookie и создание строки User-Agent с точной областью действия, последовательными изменениями и проверяемыми примерами.

Четыре функции cookie изменяют состояние текущей сетевой сессии и влияют на следующие запросы. GENERATEUSERAGENT действует иначе: она только возвращает строку и сама не записывает её в заголовок запроса. Все вызовы используют общую запись функций in-Line.

Что выбрать

Добавить, не проверяя прежнее значение

ADDCOOKIES дописывает строки в конец списка. Если имя уже существует, появится ещё одно вхождение с тем же именем.

Заменить известное имя

REPLACECOOKIES меняет первое найденное значение, а при отсутствии имени добавляет новую запись.

Удалить по имени

DELETECOOKIES удаляет первое найденное вхождение каждого указанного имени и спокойно пропускает отсутствующие имена.

Задать весь список заново

SETCOOKIES сначала очищает список, затем последовательно добавляет переданные записи. Пустой вход полностью очищает данные cookie.

Получить строку User-Agent

GENERATEUSERAGENT выбирает совместимое сочетание из действующего набора и возвращает готовую строку для поля User-Agent.

Управление прокси находится отдельно: четыре функции прокси меняют другой участок состояния проекта.

Функции работают со списком имя=значение текущего сетевого исполнителя. Изменение не переписывает уже выполненный ответ, но используется при построении последующих HTTP-запросов; определение |COOKIES| показывает сохранённый список.

Текущий запуск

Изменение доступно следующим действиям той же сетевой сессии. Оно не является локальной переменной Скрипт-бокса.

Проверка с выбранного действия

Студия может перенести cookie из предыдущей проверки этого проекта, поэтому начальное состояние не всегда пустое.

Новый или сброшенный проект

Сброс и загрузка другого проекта удаляют сохранённую отладочную сессию вместе с перенесёнными cookie.

Правила переноса между проверками описаны в обзоре in-Line Kit.

Полное хранилище браузера различает область действия и защитные свойства. Их назначение определено в описании механизма cookie HTTP; четыре функции этой страницы намеренно работают с более узкой плоской формой.

Для добавления, замены и полной установки передавайте по одной записи на строку:

session=7f3a2c
theme=dark
token=abc==
  • Первое = отделяет имя от значения, поэтому последующие знаки = остаются частью значения: token=abc== допустима.
  • Пробелы в начале и конце всей строки, имени и значения удаляются; пустые строки пропускаются.
  • Имя и значение должны быть непустыми. Хотя сетевой стандарт допускает некоторые пустые значения, эти функции их отвергают.
  • Не добавляйте Cookie:, точки с запятой и свойства из ответа Set-Cookie: вход уже считается готовым набором плоских пар.

DELETECOOKIES принимает только имена по одному на строку. Запись session=любое_значение также удалит session, потому что часть после первого = при удалении не используется.

Возвращаемая строка сообщает о вызове, но не содержит новый список. Не присваивайте её переменной как значение cookie; нужное состояние уже изменено побочным действием.

Обработка не является единым неделимым действием. Строки применяются сверху вниз, а ошибка на поздней строке не отменяет уже сделанное.

(|SETCOOKIES|session=7f3a2c
неверная строка|SETCOOKIES|)

Здесь прежний список уже очищен, session=7f3a2c уже добавлена, а затем функция возвращает обычный текст ошибки о форме второй строки. Исключение не возникает и сделанное не отменяется. ADDCOOKIES и REPLACECOOKIES так же сохраняют успешные ранние изменения. Поэтому сначала проверьте весь подготовленный список и только после этого вызывайте функцию, особенно SETCOOKIES.

GENERATEUSERAGENT

Функция принимает объект JSON, выбирает совместимое сочетание браузера, операционной системы, движка и вида устройства, затем подставляет значения в строку User-Agent. Пустой объект разрешён и означает полностью случайный совместимый выбор.

|DV|[UserAgent]=(|GENERATEUSERAGENT|{}|GENERATEUSERAGENT|)

|DV|[UserAgent] получит готовую строку. Чтобы она повлияла на запрос, укажите |DV|[UserAgent] в поле заголовка User-Agent; сам вызов заголовок не меняет. Назначение этого поля определено в описании HTTP.

Поля входного объекта

browser и browser_version

Название браузера и необязательная версия. Если версия задана, она вставляется буквально и не сверяется со списком версий выбранного браузера.

os и os_version

Операционная система и необязательная версия. Заданная версия принимается буквально, после чего каждый знак _ в итоговом значении заменяется точкой.

engine и engine_version

Движок и необязательная версия. Движок участвует в проверке совместимости, а явно заданная версия — нет.

device_type

Один из dtDesktop, dtLaptop, dtTablet, dtMobile, dtSmartTV, dtConsole. Отсутствие поля означает «не ограничивать»; явная строка dtUnknown не принимается.

device_model

Точное название известной модели. Выбор пройдёт только при совместимости модели с операционной системой и видом устройства.

chrome_version

Версия Chrome внутри строк браузеров на основе Chromium. Явное значение вставляется буквально; при отсутствии для Edge, Opera, Samsung Internet, Vivaldi и YaBrowser выбирается версия Chrome.

exclude_browsers

Массив названий браузеров, которые нельзя выбирать. Каждый элемент должен быть непустой строкой и существовать в действующем наборе.

exclude_os

Массив исключённых операционных систем с теми же требованиями к элементам.

exclude_engines

Массив исключённых движков. После всех ограничений должно остаться хотя бы одно совместимое сочетание.

user_agent_template

Свой шаблон итоговой строки. Если поле отсутствует, берётся шаблон выбранной пары «браузер + операционная система».

Все одиночные поля должны быть строками, а три поля exclude_* — массивами строк. Регистр известных названий не важен: исполнитель находит каноническое написание в действующем наборе.

Как выбирается совместимое сочетание

Действующий набор совместимости приходит вместе с данными авторизации и может обновляться без изменения проекта. Сначала функция отбирает сочетания по заданным полям и исключениям, затем случайно выбирает одно из оставшихся; пропущенные версии и модель тоже выбираются из совместимых значений.

(|GENERATEUSERAGENT|{}|GENERATEUSERAGENT|)

Повторные вызовы могут дать разные браузеры, системы, версии и модели. Сравнивать результат с одной ожидаемой строкой нельзя.

В поставляемом наборе встречаются Chrome, Firefox, Safari, Edge, Opera, Samsung Internet, UC Browser, Vivaldi, YaBrowser и Internet Explorer; Windows, macOS, Linux, Android, iOS и Tizen; Blink, Gecko, WebKit, EdgeHTML и Trident. Это не вечный перечень: источником истины остаётся набор, полученный текущим выпуском программы при авторизации. dtConsole распознаётся как название вида устройства, но в поставляемом наборе для него нет совместимого сочетания.

Свой шаблон

(|GENERATEUSERAGENT|{
  "browser":"Firefox",
  "os":"Linux",
  "user_agent_template":"{browser}/{browser_version} ({platform}; {engine}/{engine_version})"
}|GENERATEUSERAGENT|)

Доступны подстановки {browser}, {browser_version}, {os}, {os_version}, {platform}, {engine}, {engine_version}, {trident_version}, {device_model} и {chrome_version}. Неизвестная подстановка удаляется целиком, после чего повторные пробелы сворачиваются в один и края строки обрезаются.

Опечатка в названии свойства не вызывает ошибку

Неизвестные свойства объекта сейчас игнорируются. Например, {"browzer":"Chrome"} не ограничит выбор и может вернуть любой браузер. Пользуйтесь только полями из списка выше и внимательно сверяйте их написание.

Ошибки

Ошибка выполнения возникает, если вход не является объектом JSON, одно из известных свойств имеет неверный вид, объект содержит повторное имя свойства, массив исключений содержит не строку или пустую строку, название отсутствует в действующем наборе либо после ограничений не осталось совместимого сочетания.

GENERATEUSERAGENT не превращает такую ошибку в обычный результат: выполнение получает сообщение вида Ошибка: <причина> и отдельную рекомендацию изменить параметры или набор совместимости. Поэтому невозможное сочетание вроде Safari + Windows следует исправлять в исходном объекте, а не обрабатывать как допустимую строку User-Agent.

Один вызов — одна строка

Если несколько запросов должны иметь одинаковые сведения о браузере, вызовите функцию один раз, сохраните результат в динамической переменной и повторно используйте эту переменную. Новый вызов заново выполняет случайный выбор.