Сеть и состояние запроса
Управление данными cookie и создание строки User-Agent с точной областью действия, последовательными изменениями и проверяемыми примерами.
Четыре функции cookie изменяют состояние текущей сетевой сессии и влияют на следующие запросы. GENERATEUSERAGENT действует иначе: она только возвращает строку и сама не записывает её в заголовок запроса. Все вызовы используют .
Что выбрать
Получить строку User-Agent
GENERATEUSERAGENT выбирает совместимое сочетание из действующего набора и возвращает готовую строку для поля User-Agent.
Управление прокси находится отдельно: меняют другой участок состояния проекта.
Где хранятся изменения cookie
Функции работают со списком имя=значение текущего сетевого исполнителя. Изменение не переписывает уже выполненный ответ, но используется при построении последующих HTTP-запросов; определение |COOKIES| показывает сохранённый список.
Изменение доступно следующим действиям той же сетевой сессии. Оно не является локальной переменной Скрипт-бокса.
Студия может перенести cookie из предыдущей проверки этого проекта, поэтому начальное состояние не всегда пустое.
Сброс и загрузка другого проекта удаляют сохранённую отладочную сессию вместе с перенесёнными cookie.
Правила переноса между проверками описаны в .
Функции хранят только плоскую пару имя=значение
Здесь нельзя задать Domain, Path, Expires, Max-Age, Secure, HttpOnly или SameSite. Не вставляйте строку Set-Cookie целиком: служебные части будут приняты за фрагмент значения, а не за свойства cookie. После ручного изменения исполнитель помечает сведения о браузерных свойствах как неполные.
Полное хранилище браузера различает область действия и защитные свойства. Их назначение определено в ; четыре функции этой страницы намеренно работают с более узкой плоской формой.
Форма входных строк
Для добавления, замены и полной установки передавайте по одной записи на строку:
- Первое
=отделяет имя от значения, поэтому последующие знаки=остаются частью значения:token=abc==допустима. - Пробелы в начале и конце всей строки, имени и значения удаляются; пустые строки пропускаются.
- Имя и значение должны быть непустыми. Хотя сетевой стандарт допускает некоторые пустые значения, эти функции их отвергают.
- Не добавляйте
Cookie:, точки с запятой и свойства из ответаSet-Cookie: вход уже считается готовым набором плоских пар.
DELETECOOKIES принимает только имена по одному на строку. Запись session=любое_значение также удалит session, потому что часть после первого = при удалении не используется.
Четыре операции с cookie
Возвращаемая строка сообщает о вызове, но не содержит новый список. Не присваивайте её переменной как значение cookie; нужное состояние уже изменено побочным действием.
Изменения при ошибке
Обработка не является единым неделимым действием. Строки применяются сверху вниз, а ошибка на поздней строке не отменяет уже сделанное.
Здесь прежний список уже очищен, session=7f3a2c уже добавлена, а затем функция возвращает обычный текст ошибки о форме второй строки. Исключение не возникает и сделанное не отменяется. ADDCOOKIES и REPLACECOOKIES так же сохраняют успешные ранние изменения. Поэтому сначала проверьте весь подготовленный список и только после этого вызывайте функцию, особенно SETCOOKIES.
ADDCOOKIES допускает одинаковые имена
Две записи с одним именем могут по-разному пониматься сервером, а порядок не должен определять смысл. Если задача требует одного значения на имя, применяйте REPLACECOOKIES к чистому списку или сформируйте окончательный список и передайте его в SETCOOKIES.
GENERATEUSERAGENT
Функция принимает объект JSON, выбирает совместимое сочетание браузера, операционной системы, движка и вида устройства, затем подставляет значения в строку User-Agent. Пустой объект разрешён и означает полностью случайный совместимый выбор.
|DV|[UserAgent] получит готовую строку. Чтобы она повлияла на запрос, укажите |DV|[UserAgent] в поле заголовка User-Agent; сам вызов заголовок не меняет. Назначение этого поля определено в .
Поля входного объекта
Название браузера и необязательная версия. Если версия задана, она вставляется буквально и не сверяется со списком версий выбранного браузера.
Операционная система и необязательная версия. Заданная версия принимается буквально, после чего каждый знак _ в итоговом значении заменяется точкой.
Движок и необязательная версия. Движок участвует в проверке совместимости, а явно заданная версия — нет.
Один из dtDesktop, dtLaptop, dtTablet, dtMobile, dtSmartTV, dtConsole. Отсутствие поля означает «не ограничивать»; явная строка dtUnknown не принимается.
Точное название известной модели. Выбор пройдёт только при совместимости модели с операционной системой и видом устройства.
Версия Chrome внутри строк браузеров на основе Chromium. Явное значение вставляется буквально; при отсутствии для Edge, Opera, Samsung Internet, Vivaldi и YaBrowser выбирается версия Chrome.
Массив названий браузеров, которые нельзя выбирать. Каждый элемент должен быть непустой строкой и существовать в действующем наборе.
Массив исключённых операционных систем с теми же требованиями к элементам.
Массив исключённых движков. После всех ограничений должно остаться хотя бы одно совместимое сочетание.
Свой шаблон итоговой строки. Если поле отсутствует, берётся шаблон выбранной пары «браузер + операционная система».
Все одиночные поля должны быть строками, а три поля exclude_* — массивами строк. Регистр известных названий не важен: исполнитель находит каноническое написание в действующем наборе.
Как выбирается совместимое сочетание
Действующий набор совместимости приходит вместе с данными авторизации и может обновляться без изменения проекта. Сначала функция отбирает сочетания по заданным полям и исключениям, затем случайно выбирает одно из оставшихся; пропущенные версии и модель тоже выбираются из совместимых значений.
Повторные вызовы могут дать разные браузеры, системы, версии и модели. Сравнивать результат с одной ожидаемой строкой нельзя.
В поставляемом наборе встречаются 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 распознаётся как название вида устройства, но в поставляемом наборе для него нет совместимого сочетания.
Свой шаблон
Доступны подстановки {browser}, {browser_version}, {os}, {os_version}, {platform}, {engine}, {engine_version}, {trident_version}, {device_model} и {chrome_version}. Неизвестная подстановка удаляется целиком, после чего повторные пробелы сворачиваются в один и края строки обрезаются.
Опечатка в названии свойства не вызывает ошибку
Неизвестные свойства объекта сейчас игнорируются. Например, {"browzer":"Chrome"} не ограничит выбор и может вернуть любой браузер. Пользуйтесь только полями из списка выше и внимательно сверяйте их написание.
Ошибки
Ошибка выполнения возникает, если вход не является объектом JSON, одно из известных свойств имеет неверный вид, объект содержит повторное имя свойства, массив исключений содержит не строку или пустую строку, название отсутствует в действующем наборе либо после ограничений не осталось совместимого сочетания.
GENERATEUSERAGENT не превращает такую ошибку в обычный результат: выполнение получает сообщение вида Ошибка: <причина> и отдельную рекомендацию изменить параметры или набор совместимости. Поэтому невозможное сочетание вроде Safari + Windows следует исправлять в исходном объекте, а не обрабатывать как допустимую строку User-Agent.
Один вызов — одна строка
Если несколько запросов должны иметь одинаковые сведения о браузере, вызовите функцию один раз, сохраните результат в динамической переменной и повторно используйте эту переменную. Новый вызов заново выполняет случайный выбор.