Главное
Многие сайты отдают главную страницу кому угодно, а все остальное блокируют на один клик глубже. Теперь Auto входит через парадную дверь: берет сессию, которую выдает входная страница, а затем запрашивает нужную вам страницу, передавая эту сессию. На этой неделе Browser получил более сложную задачу. Он проходит проверку Cloudflare с чекбоксом, когда несколько запросов одновременно обращаются к одной и той же странице, а если страница остается закрытой, он сообщает, что увидел, вместо одного сухого слова.
Что нового
Auto открывает страницы, скрытые за сессией
Листинг eBay отклоняет холодный запрос на каждом нашем маршруте. Тот же URL открывается, когда запрос содержит cookie jar, который входная страница eBay выдает любому посетителю. Никакого входа в систему, никаких позаимствованных аккаунтов, ничего такого, что вы не могли бы сделать вручную во вкладке.
Теперь Auto делает это за вас. Когда exit достигает origin и все равно получает отказ на глубокой странице, Auto запрашивает корень сайта через тот же exit, сохраняет все возвращенные cookies и повторяет запрос. Ответ сообщает вам, что это произошло: победная ступень гласит warmup.
Но самое интересное заключается в стоимости. Эта сессия возвращается портативной, поэтому jar не привязан к exit, который ее получил. Последующие чтения повторяются через /api/proxy и попадают на /api/single за 2 кредита. Это та же цепочка escalate-then-replay, о которой мы писали для обхода Cloudflare, где собственные session cookies вендора заменяют cf_clearance.
Ограничено специально: две попытки на запрос на разных exits только после того, как глубокий URL уже выдал ошибку, и только если exit изначально достиг origin. Поэтому сайт, который нас просто блокирует, один раз получает два дополнительных подзапроса, а не цикл. Подробнее о том, как лестница выбирает свои ступени, в статье про Auto.
Browser проходит проверки с чекбоксами при пересечении запросов
Теперь Browser решает виджет с чекбоксом Cloudflare при параллельных запросах к одной и той же странице. Три одновременно на новостном сайте за Turnstile: 5.2s, 5.8s, 9.1s.
Заодно появились два небольших изменения. Нажатие засчитывается только после фактического исчезновения виджета, поскольку Cloudflare выдает свою проверку заново чаще, чем можно было бы ожидать (первое нажатие регулярно не является концом разговора). А страница, которая успешно проходит проверку, сообщает defenseSolved: true в вызове, который ее прошел, и это тот же вызов, за который тарифицируется решение.
Заблокированная страница сообщает, что увидел solver
"Timeout" указывает на задержку. В большинстве случаев задержка не является проблемой, и решение находится в соседнем exit.
Когда Cloudflare отклоняет решение, он повторно выдает проверку и добавляет собственный маркер повторной попытки в jar. Browser читает этот маркер. Вместо того чтобы ждать истечения времени, он отвечает примерно через 17 секунд, указывая вендора, сделанные нажатия и статус прохождения проверки:
Timeout after 12s: the cloudflare challenge did not complete from this exit
(2 checkbox presses, clearance granted, challenge re-issued by the site)
Одна из этих строк указывает отправить запрос другим способом. Другая не говорит ни о чем.
Ошибки на уровне API теперь тоже читаются проще. Запрос, превысивший время ожидания, возвращается как timeout, недоступный сервис возвращается как unavailable, и ни то, ни другое не описывается как проблема proxy, если в запросе вообще не было proxy. timeout_ms при вызове через Browser соблюдается до полных 120 секунд, которые принимает API, поэтому медленный целевой сервер получает заданный вами бюджет времени, и вы видите собственный вердикт движка, а не шлюза. Параметры перечислены в документации API.
Платежные реквизиты и исправление инвойса в месяц его выпуска
В болгарских инвойсах в поле получателя указывается представитель компании (MOL). Раньше система не собирала эту информацию, поэтому эта строка всегда оставалась пустой. Теперь в платежных реквизитах есть это поле.
Таблица инвойсов также предлагает функцию Update details для инвойсов, которые все еще находятся в месяце выпуска и чьи зафиксированные данные отличаются от вашего текущего платежного профиля. Диалоговое окно называет каждое изменяемое поле и его новое значение, ясно сообщает, что номер, даты и суммы остаются прежними, а подтверждение является вашим согласием, которое записывается на нашей стороне. Инвойс в этом окне, в котором нечего менять, отображает "Editable until" и дату, поэтому период редактирования виден сразу, а не выясняется позже.
Под капотом
Каждый скрипт, выполняемый в Dashboard, обслуживается с нашего собственного origin, а авторизация возвращает вас только на путь внутри этого сайта.
Развертывание сервиса рендеринга происходит по одному серверу за раз, и каждый сервер должен отдать реальную страницу, прежде чем мы перейдем к следующему.
На портале статуса endpoint проблем отдает открытые и решенные инциденты через публичный API в полном соответствии с тем, что отображается на странице.
Отказ с явным указанием причины требует одного вызова. Ожидание, заканчивающееся на "Timeout", оставляет вас гадать о дальнейших шагах, но оплачивается по той же цене. Ошибки являются частью продукта, и на этой неделе мы начали относиться к ним соответственно.