Думаю те, кто используют curl в консоли, не раз сталкивались с тем, что не получается что-то скачать через эту утилиту. Копируешь ссылку из браузера, отдаёшь curl, но в итоге грузится либо какая-то заглушка, либо вообще ничего не грузится.
Это возникает из-за того, что утилиту curl легко распознать и заблокировать с её помощью загрузку. Делают это скорее всего для того, чтобы отвадить ботов и другие системы автоматизации, которые используют эту утилиту. Для того, чтобы обходить это ограничение, существует проект curl-impersonate.
Авторы подготовили специальную сборку curl, которая максимально похожа на обычные браузеры: Chrome, Edge, Safari или Firefox. Авторы считают, что чаще всего curl определяется на этапе TLS handshake. Для того, чтобы обойти эти проверки, они собирают curl с TLS библиотеками, которые используют браузеры, а не OpenSSL, как у обычной curl. Также по умолчанию используются шифры и заголовки, такие же, как у браузеров.
Для каждого браузера есть свой набор параметров, поэтому загрузка с помощью модифицированного curl выглядит примерно так:
# curl_chrome110 https://www.wikipedia.org
Под каждый браузер своя сборка.
Для использования достаточно загрузить подготовленные бинарники из репозитория: github.com/lwthike…releases. На стандартном Debian 11 мне больше ничего не пришлось делать. В репе авторы указывают, что нужны некоторые пакеты:
# apt install libnss3 nss-plugin-pem ca-certificates
У меня они уже стояли. Есть и Docker образы.
Проект интересный и полезный. Модифицированную версию curl имеет смысл использовать для мониторинга, если у вас есть возможность выбирать бинарник. Мониторинг будет более достоверен и максимально приближен к реальным браузерам, насколько это возможно для консольной утилиты.
⇨ Исходники
#curl #terminal #linux