Rebrowser Patches: что меняется после настройки прокси?
Сравнение патчей Rebrowser, исходного Playwright и заданного профиля на собственной странице: поведение библиотеки, результаты рендеринга и маршруты прокси.
BotBrowser Team
Нужна структурированная документация по теме Отпечатки?
Эта статья относится к редакционной библиотеке. Для пошаговой настройки, справки и постоянных обновлений переходите сразу в соответствующий раздел docs.
Работающее соединение через прокси Rebrowser не задаёт результат canvas, шрифты или обработку аудио в браузере. Сначала определите, использует ли приложение открытые патчи библиотек Rebrowser, облачный браузерный сервис или оба варианта. Это разные конфигурации. BotBrowser предоставляет декларативные настройки профиля для доступных браузеру графики, шрифтов и аудио, но не может гарантировать решение сайта назначения или превратить смену прокси в описание полной среды браузера.
TL;DR
- Зафиксированные патчи Rebrowser изменяют код библиотеки автоматизации, включая работу с контекстами выполнения и аргументами запуска. Они не заменяют исполняемый файл Chrome.
- CDP умеет выполнять скрипты и устанавливать их до запуска документа. Если API не входит в область изменений конкретного патча, это не делает его недоступным через CDP.
- На одном собственном fixture в Ubuntu исходный Playwright и библиотека с патчами возвращали одинаковые четыре результата рендеринга в трёх независимых запусках каждой конфигурации. Конфигурация с заданным профилем изменила три наблюдения; результат аудио остался одинаковым.
- Конфигурация профиля использовала другую патч-версию браузера и целевую Windows-среду на Ubuntu. Различия характеризуют эту конфигурацию, а не изолированное влияние уровня реализации.
Содержание
- Разделяйте пакет Rebrowser, прокси и облачный браузер
- Изучите сам патч до определения его границ
- Сравните три конфигурации на одной собственной странице
- Оценивайте canvas, WebGL, шрифты и аудио отдельно
- Воспроизведите наблюдение без проверки стороннего сайта
- Выбирайте следующую проверку по неудачной операции
- Практический вывод
Разделяйте пакет Rebrowser, прокси и облачный браузер
Выражение rebrowser proxy может скрывать три независимых вопроса: какой пакет автоматизации работает, где запущен его браузер и какой маршрут передаёт запрос. Записывайте каждый ответ явно. Установка пакета не доказывает использование прокси. Подключение к удалённому браузеру не доказывает совпадение его файловой системы, профиля или исполняемого файла с локальной установкой. Изменение публичного выхода не устанавливает изменение входных данных рендеринга.
| Конфигурация | Что она определяет | Что по-прежнему требует отдельных свидетельств |
|---|---|---|
| Исходный пакет Playwright | Библиотеку автоматизации и её версию | Исполняемый файл браузера, аргументы запуска и сетевой маршрут |
| Drop-in-пакет Rebrowser | Библиотеку с применёнными патчами проекта | Фактически загруженный пакет, базовый Chrome и выбранные настройки патчей |
| Соединение через прокси | Маршрут назначенного ему трафика | Настройки браузера, сохранённое состояние и интерпретацию сайта назначения |
| Сеанс облачного браузера | Удалённо управляемый браузерный сервис | Специфические настройки сервиса, сохранение состояния и сетевое поведение |
| Заданный профиль браузера | Параметры поддерживаемой среды браузера | Успешную загрузку, фактический результат и совместимость приложения |
Официальный README зафиксированной версии описывает drop-in-пакеты как исходные библиотеки с применёнными патчами и отдельно описывает облачное предложение поставщика. Поэтому локальный эксперимент с пакетом не подтверждает утверждений об идентичности браузеров этого облачного продукта, предоставляемых прокси, ценах или доле успешных действий. В приведённом ниже сравнении не было облачных сеансов Rebrowser.
Если запрос идёт по неверному маршруту, начните с сетевых свидетельств. Собственный наблюдатель должен установить исходящий адрес, а маркер источника показывает, какой запрос дошёл. Значения графических API браузера не показывают, прошла ли аутентификация туннеля. Диагностика маршрута с сохранением контекста рассматривает изменения маршрутизации трафика; процесс работы с Launcher рассматривает запуск настроенных сеансов браузера и управление ими. Ни свидетельства маршрута, ни успешный запуск не заменяют проверку пакета, фактически загруженного приложением.
Не включайте учётные данные прокси в запись сравнения. Имен и версий пакетов, хешей браузеров, метки маршрута и ответа собственного наблюдателя обычно достаточно, чтобы разделить эти вопросы. Если разрешённого наблюдателя нет, пометьте маршрут как непроверенный. Успешно отрисованная страница не устанавливает маршрут её доставки, а отклонённый запрос не указывает, какое свойство браузера учитывал сайт назначения.
Изучите сам патч до определения его границ
Изученный исходный код относится к коммиту патчей Rebrowser 31b51356499600f71126aae532f3d57abdc92272, включая патч для Playwright 1.64.1. При запуске использовались пакеты [email protected] и [email protected]. Версия пакета и целевая upstream-версия патча являются разными идентификаторами; сохраняйте обе, не предполагая обязательного совпадения последних числовых компонентов.
Зафиксированный исходный патч меняет настройку контекста выполнения, имена utility world и другое поведение библиотеки. Изменения аргументов запуска включают настройку Blink, связанную с управлением автоматизацией, и несколько стандартных переключателей. Это более точное описание, чем название проекта набором замен свойств страницы. Одни изменения влияют на взаимодействие библиотеки с Chrome, другие меняют параметры запуска Chrome.
Эти детали также объясняют, почему неизменный результат canvas не доказывает неработоспособность патча. У изменения управления контекстом другая цель, чем у изменения пикселей canvas. Рендерер может выдать одинаковые байты, пока библиотека автоматизации проходит другой путь настройки. И наоборот, другая строка из одного API не доказывает согласованность остальной среды браузера.
Общая граница протокола требует такой же точности. CDP документирует Runtime.evaluate и Page.addScriptToEvaluateOnNewDocument. Клиент протокола может запускать скрипты страницы, в том числе влияющие на доступное JavaScript поведение. Поэтому утверждение «эти зафиксированные патчи не настраивают данный результат рендеринга» относится к реализации. Утверждение «CDP не может влиять на значения API рендеринга» гораздо шире, и документированные средства выполнения скриптов его не подтверждают.
Мир выполнения является ещё одним параметром эксперимента. Скрипт в изолированном мире не разделяет все JavaScript-привязки с главным миром документа. Сравнение, которое одновременно меняет библиотеку и мир считывания значения, может приписать различие неверному параметру. В этом fixture наблюдения выполняет собственный скрипт документа и отправляет их на свой источник. Драйвер выполняет переход и ждёт доставку; он не собирает значения выполнением функции наблюдения в мире, выбранном библиотекой.
Не выводите результат решения сайта назначения из такого изучения исходного кода. Код устанавливает, что меняет конкретная ревизия. Он не устанавливает все последствия для каждой версии Chrome, поведение другого пакета с похожим именем или процесс принятия решений сайтом. Собственные заявления Rebrowser о сторонних сайтах здесь независимо не проверялись и не используются как результат.
Сравните три конфигурации на одной собственной странице
Контролируемый запуск использовал Ubuntu, браузеры с видимым интерфейсом на одном дисплее, запрошенный viewport 1280 × 900 и новые независимые каталоги данных браузера. Каждая конфигурация запускалась три раза, что дало девять задач в одном глобальном пуле. Запрошенный предел пула составлял 20 и был ограничен девятью доступными задачами. Выборки процессов зафиксировали девять одновременно работающих браузерных ветвей, а supervisor подтвердил отсутствие оставшихся процессов этого запуска. Исходная ветвь и ветвь с патчами сообщили 1280 × 900, а конфигурация с профилем сообщила 1288 × 944: наблюдаемый размер viewport не был одинаковым во всех трёх конфигурациях.
| Ветвь | Пакет автоматизации | Фактическая версия исполняемого файла | Профиль |
|---|---|---|---|
| Исходная | [email protected] | Стандартный Chrome 157.0.8103.50 | Без заданного профиля продукта |
| С патчами | [email protected] | Тот же стандартный Chrome 157.0.8103.50 | Без заданного профиля продукта |
| С профилем | [email protected] | BotBrowser 157.0.8103.38 | Целевая Chromium 157 Windows x64 на Ubuntu |
Сравнение исходной библиотеки с версией с патчами сохраняет стандартный исполняемый файл неизменным. Третья ветвь меняет одновременно исполняемый файл и целевую конфигурацию. У всех трёх одинаковая основная версия браузера, но полные версии различаются. Разница в третьем столбце не может однозначно установить влияние профиля, патч-версии исполняемого файла или уровня реализации. Это полезная запись конфигурации с явными ограничениями, а не контролируемое утверждение о превосходстве одного уровня.
Следующая таблица использует префиксы полных значений SHA-256 только ради удобства чтения. Полные значения, алгоритмы, повторные наблюдения и сведения о среде сохранены в выводе исполняемого fixture. Префикс является меткой этого запуска, а не оценкой идентичности.
Записанные наблюдения, локальный скрипт сравнения и исходный код собственной страницы доступны для проверки. Сохраните скрипт с расширением .mjs, а страницу рядом с ним под именем render-fixture.html. Публичный скрипт воспроизводит наблюдения страницы, но не выполняет отдельный аудит загрузки профиля, использованный для принятия контролируемого запуска.
| Наблюдение | Исходная | С патчами | Заданный профиль |
|---|---|---|---|
| Префикс SHA-256 байтов RGBA canvas | 26cd080f5b96 | 26cd080f5b96 | 0119c1c2e040 |
| Renderer WebGL, сокращённо | ANGLE, Vulkan, SwiftShader | ANGLE, Vulkan, SwiftShader | ANGLE, NVIDIA Quadro P1000, Direct3D11 |
| Совпадения кандидатов шрифтов | Arial; Times New Roman; Courier New; DejaVu Sans; Liberation Sans | Те же пять кандидатов | Arial; Times New Roman; Courier New |
| Префикс SHA-256 офлайн-аудиосэмплов | 0d6f33df90bb | 0d6f33df90bb | 0d6f33df90bb |
| Сумма абсолютных значений последних 500 аудиосэмплов | 124.04347776696522 | 124.04347776696522 | 124.04347776696522 |
Эти наблюдения повторились внутри каждой ветви во всех трёх новых запусках. В частности, для данного входа аудиосэмплы в ветви с заданным профилем не изменились. Сравнение должно сохранить это равенство, а не превратить его округлением в утверждение, что конфигурация профиля меняет каждую поверхность отпечатка.
Supervisor принятого запуска сообщил:
"comparisonPermitted": true,
"peakActive": 9,
Это разрешение означает выполнение локальных предпосылок эксперимента. В первых попытках отсутствовали обязательные журнальные свидетельства загрузки профиля, поэтому они не были приняты как результаты трёх ветвей. Финальный запуск сохранил успешное расшифрование и загрузку точного зашифрованного файла, а также заданную Windows-идентичность из того же контекста страницы. Одно лишь имя файла, запущенный процесс или подключённый сеанс CDP не считались доказательством загрузки.
Ни к одному внешнему сайту не обращались ради вердикта детектора. Fixture не использовал прокси, поэтому он не измеряет работу прокси Rebrowser и не сравнивает провайдеров прокси. Результат отвечает на более узкий вопрос: изменились ли эти четыре наблюдения страницы при записанных локальных конфигурациях.
Оценивайте canvas, WebGL, шрифты и аудио отдельно
Для сравнения canvas использовался фиксированный canvas 300 × 80 с заданными фигурами, цветами и текстом. SHA-256 вычислялся по всем 96000 байтам, возвращённым getImageData, до кодирования изображения. Сравнение PNG-файла или data URL добавило бы другой вход сериализации. При повторении измерения сохраняйте текст, запрошенный шрифт, размеры и порядок рисования. Изменившийся хеш указывает на изменившийся результат, но не объясняет, вызван ли он шрифтами, растеризацией, настройками браузера или другим параметром.
Сравнение WebGL записывало renderer, доступный через WEBGL_debug_renderer_info, если расширение присутствовало. Сообщаемый renderer описывает открытое значение, а не проверенный состав физического оборудования. Конфигурация с целевой Windows сообщала renderer Direct3D при работе на Ubuntu, поэтому представлять эту строку как установленный GPU хоста было бы ошибочно. Если расширение или контекст недоступны, нужно записать недоступность, а не молча сравнивать пустую строку renderer как совпадение.
Шрифты намеренно проверялись небольшим экспериментом с кандидатами. Список состоял из Arial, Times New Roman, Courier New, DejaVu Sans, Liberation Sans и Noto Sans. Для каждого fixture сравнивал ширину фиксированного текста с резервными serif, sans-serif и monospace. Совпадение означает, что кандидат изменил измеренную ширину при этом методе. Оно не доказывает наличие точного файла шрифта, не перечисляет все установленные шрифты и не различает каждый псевдоним и замену. Полный вывод сохраняет ширины вместе со списком совпадений, чтобы грубая метка не скрывала исходное наблюдение.
Для офлайн-аудио использовались один канал, 5000 кадров при 44100 Гц, треугольный осциллятор и фиксированная конфигурация компрессора. Вывод содержит хеш байтов Float32-сэмплов и сумму абсолютных значений последних 500 сэмплов. Это офлайн-вычисление, а не запись с микрофона, звуковой карты или динамика. Равные сэмплы устанавливают равенство для данного графа и входа. Они не устанавливают одинаковое поведение каждого аудио-API, устройства или графа обработки.
Совпадение внутри группы также имеет более узкий смысл, чем долгосрочная стабильность. Три новых запуска на одном хосте не устанавливают значение после обновления ОС, смены шрифтов, драйвера GPU или сборки браузера. Аналогично, одно отличающееся наблюдение не раскрывает способ объединения сигналов удалённой системой. Документированные настройки поверхностей браузера указывают настраиваемые области продукта; таблица устанавливает только фактически наблюдавшееся поведение выбранной конфигурации.
Воспроизведите наблюдение без проверки стороннего сайта
Используйте страницу под своим контролем и сохраняйте одинаковым скрипт сбора во всех ветвях. Зафиксируйте оба пакета автоматизации и задайте явные пути к исполняемым файлам. Playwright документирует, что альтернативный путь к исполняемому файлу связан с риском совместимости, поэтому успешную работу с проверенными версиями Chrome нельзя обобщать до обещания для произвольных будущих версий. Записывайте ошибку запуска как сбой подготовки до любого сравнения.
Небольшой локальный пример может отдать страницу и сохранить отправленный ею результат, не предлагая сторонней проверке его интерпретировать. В Node.js часть доставки может выглядеть так:
import http from 'node:http';
import { readFile, writeFile } from 'node:fs/promises';
const page = await readFile('./render-fixture.html');
const server = http.createServer(async (request, response) => {
if (request.method === 'GET' && request.url === '/') {
response.writeHead(200, { 'Content-Type': 'text/html' });
response.end(page);
return;
}
if (request.method === 'POST' && request.url === '/results') {
const chunks = [];
let size = 0;
for await (const chunk of request) {
size += chunk.length;
if (size > 131072) {
response.writeHead(413).end();
return;
}
chunks.push(chunk);
}
const record = JSON.parse(Buffer.concat(chunks).toString('utf8'));
await writeFile('./observation.json', JSON.stringify(record, null, 2));
response.writeHead(200).end('recorded');
return;
}
response.writeHead(404).end();
});
server.listen(0, '127.0.0.1');
Этот пример доставки не является полным supervisor браузера: используйте отдельный файл результата на задачу, задайте общий срок и закройте собственный сервер и контексты браузера после доставки. Полный fixture сравнения разделяет эти задачи и записывает очистку процессов. Фиксированная задержка не служит условием завершения. Он ждёт POST с результатом собственной страницы, а отсутствующее или некорректное наблюдение оставляет задачу неудачной.
Для сравнения только рендеринга используйте новые независимые каталоги данных. Общий записываемый каталог браузера у параллельных процессов создаёт блокировки и взаимное влияние состояния. Если вопрос касается непрерывности сеанса, используйте отдельный тестовый контракт с контролируемыми закрытыми снимками; не добавляйте молча изменения сохранённого состояния к сравнению рендеринга. Аналогично, сохраняйте режим запуска и viewport постоянными, а не меняйте одновременно библиотеку и наличие интерфейса браузера.
Сохраняйте неподдерживаемые результаты. Кандидат шрифта, отсутствующий в обеих стандартных ветвях, недоступное графическое расширение или неизменный аудиорезультат могут быть полезнее аккуратной таблицы, где всё различается. Эти записи показывают, какая часть предположения не оправдалась. Их не нужно превращать в рекомендацию продукта. Более широкое объяснение обязанностей библиотеки и браузера даёт общее сравнение поверхностей патчей; этот привязанный к версиям эксперимент даёт конкретное наблюдение.
Выбирайте следующую проверку по неудачной операции
Если после установки Rebrowser приложение по-прежнему ведёт себя неожиданно, сохраните первую неудачную операцию. Полезный следующий шаг зависит от того, произошла ли ошибка при импорте пакета, запуске Chrome, переходе через прокси, выполнении кода приложения или получении ответа сайта назначения. Изменение настроек браузера до определения этого уровня затрудняет понимание того, какая правка была значима.
| Симптом | Первые свидетельства | Следующее контролируемое действие |
|---|---|---|
| Патч будто не оказывает влияния | Имя, версия и разрешённый путь загруженного пакета | Убедиться, что приложение импортирует ядро с патчами, а не другую установленную копию |
| Браузер не запускается | Версия исполняемого файла, ошибка запуска и выбранная библиотека | Проверить совместимость на известной контролируемой странице |
| Запросы идут неожиданным маршрутом | Результат собственного наблюдателя и конфигурация маршрута | Исправить маршрутизацию отдельно от графических настроек |
| Значение рендеринга остаётся неизменным | Одинаковые вход страницы, исполняемый файл и метод наблюдения | Проверить, меняет ли зафиксированный патч этот параметр |
| Код приложения различается между мирами | Выбранный контекст и доступ к привязкам документа | Проверить требования мира выполнения до изменения значений |
| Сайт назначения отклоняет действие | Фактический ответ и документированная политика оператора | Остановиться на границе разрешённой диагностики, не выводя скрытые правила оценки |
Для импортов одной проверки package.json недостаточно, если рабочая среда содержит несколько деревьев зависимостей или псевдонимов. Записывайте версию, разрешённую из расположения работающего приложения. Зафиксированный README Rebrowser документирует историческую проблему зависимости drop-in/core; это причина проверить фактический пакет, а не утверждение о наличии проблемы в каждой установке. Переустановка несвязанного пакета верхнего уровня не устанавливает, какое ядро загрузило приложение.
Для требований к рендерингу определите нужный результат до выбора настройки. Рабочая нагрузка, которой достаточно успешной отрисовки страницы, требует иной проверки, чем нагрузка с сохранением объявленных графических настроек между сеансами. Справочник BotBrowser по согласованности автоматизации документирует поведение продукта на этой границе, но ни настроенный профиль, ни патч библиотеки не подтверждают классификацию идентичности сайтом назначения.
Вопросы и ответы
Заменяет ли Rebrowser Chrome?
Изученные открытые drop-in-библиотеки изменяют код библиотеки автоматизации и используют отдельно предоставленный или установленный браузер. Облачный сервис относится к другому продукту.
Может ли клиент CDP влиять на значения canvas?
CDP умеет выполнять скрипты страницы. Подтверждаемое утверждение касается фактических изменений конкретной реализации, а не абсолютной неспособности протокола влиять на результат, доступный JavaScript.
Означают ли одинаковые значения, что патч ничего не сделал?
Нет. Fixture измеряет четыре наблюдения рендеринга. Изменения настройки контекста или аргументов запуска в библиотеке могут быть существенными без изменения этих четырёх результатов.
Даёт ли прокси браузеру другой профиль?
Конфигурация прокси выбирает маршрутизацию трафика в своей области действия. Сама по себе она не задаёт шрифты, вход canvas или граф офлайн-аудио.
Источники
- README патчей Rebrowser в изученном коммите
- Исходный патч Rebrowser для Playwright 1.64.1
- CDP Runtime.evaluate
- CDP Page.addScriptToEvaluateOnNewDocument
- Примечание о совместимости executablePath в Playwright
- Обзор поверхностей браузера BotBrowser
- Согласованность автоматизации BotBrowser
Практический вывод
Начните с точного пакета, исполняемого файла и операции, которая не удалась. В этом фиксированном эксперименте патч библиотеки Rebrowser оставил четыре наблюдения рендеринга равными исходному Playwright, тогда как конфигурация с заданным профилем изменила canvas, renderer и наблюдения кандидатов шрифтов, сохранив одинаковое аудио. Результаты отвечают на локальный вопрос конфигурации. Они не ранжируют продукты, не характеризуют облачный сервис и не предсказывают решение сайта назначения. Сохраняйте маршрутизацию, поведение библиотеки автоматизации и заданные настройки браузера как отдельно проверяемые входные параметры.
Эта статья входит в руководство: Что такое отпечаток браузера?
Похожие статьи
Плагины-патчи браузера: что меняют и чего не достигают
Начало работыBotBrowser Launcher: профили, прокси и запуск
ОтпечаткиОтпечаток Canvas: как он работает и что помогает
ОтпечаткиКак читать сигналы отпечатка браузера
ОтпечаткиАудио-отпечатки: как AudioContext отслеживает вас
Начало работыПрокси Playwright: маршруты и аутентификация
Выполните ту же проверку в BotBrowser
Загрузите профиль, сохраните внутри браузера те сигналы, о которых только что прочитали, и подтвердите результат на своей машине до раскатки.