Главное
Выбор профиля браузера теперь настраивается для каждого request отдельно. Укажите нужный браузер и OS, и fingerprint вместе с headers будут полностью им соответствовать. На этой неделе Single научился проходить еще две проверки (вычислительные проверки SiteGround и eBay) без запуска Browser. А в разделе Activity в Dashboard теперь отображается то, что вы запросили, а не внутренние технические процессы.
Что нового
Выбор профиля браузера для каждого request
Ранее unblocker: true использовал одну сигнатуру (наш текущий дефолтный вариант), и изменить это было нельзя. Теперь вы можете указать конкретную сигнатуру:
{ "url": "https://example.com", "unblocker": true, "profile": "firefox147" }
или запросите пару из браузера и ОС:
{ "url": "https://example.com", "unblocker": true, "browser": "Chrome", "os": "Windows 10" }
API отклоняет неизвестные комбинации по имени и выводит список того, что действительно доступно, поэтому опечатка не приведет к тихой отправке сигнатуры, которую вы не запрашивали.
Полный каталог доступен по адресу GET /api/profiles. Он публичный (ключ не требуется), так как это список возможностей, а не секрет. На момент написания доступно 79 пресетов для Chrome, Firefox, Edge, Safari и Tor на Windows, macOS, Android и iOS. Playground считывает тот же список, поэтому в выпадающем меню всегда отображается именно то, что может запросить ваш код.
Почему это важно: если ваш целевой ресурс профилирует запросы по ОС или ваша команда проводит A/B-тестирование того, какой стек проходит конкретную защиту, теперь вы можете зафиксировать эту переменную, меняя остальные параметры.
Single выполняет вычислительные проверки SiteGround и eBay
Две системы защиты, которые раньше требовали перенаправления через Browser, теперь проходят в Single. eBay использует собственный proof-of-work (пазл на базе Argon2), а SiteGround запускает собственную проверку на части своего виртуального хостинга. Обе задачи решаются без рендеринга, что означает возврат ответа в виде одного HTTP-запроса и соответствующую тарификацию.
Сигнал защиты в ответах также расширился. Ответы Browser теперь содержат defenses: { present, cleared }, что позволяет увидеть, какой вендор стоял перед страницей и удалось ли его пройти. Биллинг подчиняется тому же правилу: учитывается любой пройденный вендор, независимо от бренда. До этого обновления только один сервис проверки тарифицировался как интерактивная страница. Теперь к нему добавились еще три.
Обновлен раздел Activity в Dashboard
Две колонки в списке Activity в Dashboard отображали некорректные данные. HTTP-метод всегда показывал POST в каждой строке (все наши endpoints работают через POST, поэтому колонка была константой и не несла полезной информации). А IP-адрес клиента для вызовов из Playground фиксировал адрес, с которого отправлялся запрос Playground, а не адрес пользователя, нажавшего Run.
Обе проблемы исправлены. Колонка метода теперь отображает глагол, переданный внутри тела запроса. IP клиента в строках Playground теперь отображает IP браузера авторизованного пользователя, передаваемый внутри подписанного токена Playground, что исключает его подделку API-клиентом.
Заодно мы переработали и остальную часть интерфейса. Таблица помещается на экране ноутбука без скрытия колонок, колонка продукта интегрирована в строку запроса, а в панели деталей появились вкладки, разделяющие прокрутку для запроса, ответа и сводки по защите.
Биллинг: 3D Secure при смене тарифа
Если эмитент вашей карты требовал подтверждение 3DS при смене тарифа (а не только при первичной подписке), этот шаг не срабатывал, и изменения незаметно отменялись. Теперь он срабатывает. Если вы пытались сменить тариф за последний месяц и ничего не происходило, причина была в этом.
Под капотом
Playground блокирует сборку заголовка ответа из данных полученного сайта (класс ошибок header-injection, который мы устранили на раннем этапе). Endpoint биллинга в Dashboard проверяет принадлежность ресурса вызывающему пользователю перед ответом, что закрывает вектор IDOR.
Сам пайплайн развертывания получил солидную порцию исправлений за неделю после сбоя 6-го числа, когда диск хоста сборки переполнился прямо во время билда. Теперь каждый сервис отказывается собираться при нехватке места на диске, развертывания сериализуются вместо состояния гонки, шлюз продолжает работать при флаппинге бэкенда, а сервисы корректно завершают работу по SIGTERM, а не зависают на тридцать секунд до принудительного завершения.
Долгое время выбор браузерного отпечатка оставался решением, которое мы принимали за вас. Больше в этом нет необходимости.