Перехитривая обнаружение бота Акамаи с помощью Ja3proxy

Перехитривая обнаружение бота Акамаи с помощью Ja3proxy

19 июля 2025 г.

Manager Akamai Bot-одно из наиболее распространенных анти-ботовых решений на рынке. Он используется многими громкими веб-сайтами, начиная от сайтов электронной коммерции до посещения сайтов, и, в зависимости от его конфигурации, может быть сложной задачей для обхода.

Основываясь на моем опыте, типичный шаблон, с которым я сталкиваюсь, когда веб -сайт активирует защиту Akamai Bot Manager, заключается в том, что скребок (обычно скрара в моем стеке) висит и время от первого запроса.

Но что такое Manager Akamai Bot, и как я могу увидеть, использует ли его веб -сайт?

Обзор менеджера бота акамай

Обнаружение бота Акамаи, как и любое другое современное программное обеспечение для защиты от ботов, работает на нескольких уровнях.

Сетевая снятие отпечатков пальцевявляется одним из первых: Akamai анализирует детали рукопожатия TLS и детали подключения (отпечатки пальцев JA3 TLS, Sipher Suites, TLS -версия и т. Д.), Чтобы увидеть, соответствуют ли они реальному браузеру или известному инструменту автоматизации. Каждый браузер (Chrome, Firefox, Safari и т. Д.) имеет характерный отпечаток TLS, и если клиент вашего клиента Hello не соответствует ни одному общему браузеру, Akamai знает, что что -то является рыбным.

Это также осматриваетHTTP/2 Использование и заказ заголовка- Настоящие браузеры почти всегда используют HTTP/2+ в эти дни, и они отправляют заголовки HTTP в определенном порядке и формате. Если клиент все еще использует http/1.1 или имеет заголовки в не браузерном порядке, это красный флаг. Кроме того, Akamai ищет заголовки или значения, специфичные для браузера, или ценности, которые могут пропустить скребки; Обеспечение ваших заголовков (пользовательский агент, на языке принятия и т. Д.)и их приказЗеркало настоящего браузера имеет решающее значение.

Другой слой естьРепутация IP и анализПолем Akamai проверяет, является ли IP клиента из жилой сети, мобильной сети или обработки данных. Жилые и мобильные IPS (у добрых реальных пользователей) набрали высокие оценки доверия, тогда как известные диапазоны DataCenter IP автоматически подозреваются. Запросы с высоким объемом с одного IP-адреса или IP-подсеть также снизят трастовую оценку. Вот почему успешное скрезование часто требует вращенияжилые прокси-Всегда для того, чтобы выглядеть из разных мест реального пользователя, а не фермы облачных серверов.

Окончательно,Акамай работаетПоведенческий анализИспользование сценариев на стороне клиента и моделей искусственного интеллектаПолем Датчик JavaScript на веб -странице собирает множество точек данных о среде и взаимодействиях клиента (таких как время, движения мыши или их отсутствие, необычные свойства в объекте браузера и т. Д.). AKAMAI Models Crunch эти данные, чтобы назначить оценку вероятности бота на каждую сессию. Этот аспект является наиболее сложным для обхода и часто требует запуска безголового браузера или репликации логики датчика. (Это за пределами нашей области-наша фокус будет проходить проверки на уровне сети, что является наиболее распространенным случаем для веб-сайтов электронной коммерции, по моему опыту.)

Но как мы можем обнаружить, что веб -сайт использует Manager Akamai BOT?

Кромеобычное расширение браузера Wappalyzer, если вы заметили_abckиAK_BMSCКуки, используемые на веб -сайте, это самый явный признак того, что он использует Akamai для защиты.

Учитывая эту защиту, многие пользователи скрещивания обратились кscrapy-impersonateЗагрузите обработчик, чтобы обойти Akamai. Этот плагин интегрируетcurl_cffiБиблиотека, чтобы выдать себя за сетевые подписи реальных браузеров.

На практике Scrapy Adendon делает запросы вашего Scrapy Spider «выглядеть», как хром или Firefox: он предлагает TLS-отпечатки пальцев (JA3), которые соответствуют этим браузерам, используют HTTP/2 и даже регулируют HTTP/2 заголовки кадров низкого уровня, чтобы имитировать схемы браузера. Таким образом, он решает проблему TLS и HTTP/2 отпечатков пальцев-паук скребки с этим обработчиком может руководить с сервером, защищенным Akamai, таким образом, который почти неразличим от нормального браузера Chrome.

Ограничения скраски поддаются

В то время как скрара подражана мощным инструментом, он поставляется с определенными ограничениями:

  • Заперт на скрапу:Scrapy Advendate разработана как обработчик загрузки скраски, что означает, что он работает только в асинхронной структуре Scrapy. Если ваш проект не использует Scrapy или вы хотите переключиться на другую структуру (например, простой сценарий сrequests/httpxИли асинсио -трубопровод), вы не можете напрямую перенести его возможности. Миграция от скраски часто означаетПолное переписываниеиз вашей логики HTTP, и вы потеряете встроенную поддельную TLS, если вы не реализуете новое решение с нуля.

  • Прокси -ротация Проблемы:Использование скрещивания, подготовленная наряду с прокси -ротацией, может быть сложным. Под капюшоном он заменяет загрузку Scrapy по умолчанию на основе на основеcurl_cffi, который не плавно интегрируется с промежуточным программным обеспечением Scrapy. Ранние последователи обнаружили, что поддержка прокси HTTPS была нарушена, потому что код обработки прокси был обойден. Несмотря на то, что исправления и обходные пути (например, отключение встроенной обработки и настройки прокси с Scrapycurl_cffiнепосредственно) существует, сложнее вращать прокси или обрабатывать аутентификацию прокси с этой настройкой. Надежная обработка ошибок для прокси -сборов (например, обнаружение мертвого прокси и повторения) не так просто, как при стандартном загрузке Scrapy, потому что ошибки пузырят изcurlслой и не может вызвать обычную логику повторения скраски.

  • Техническое обслуживание и гибкость:Скрара, выдавая себя за себя, в настоящее время поддерживает конечный список отпечатков пальцев браузеров (Chrome, Edge, Safari и т. Д., До определенных версий). Этот список может отставать за последними выпусками браузера. Вы можете застрять, выдавая себя за более старую версию браузера, которая может быть проблемой, если целевой сайт специально требует нюансов более нового рукопожатия TLS (некоторые продвинутые WAF фактически проверяют мелкие детали, которые меняются между хромированными версиями).

  • Не серебряная пуля:Возможно, самое главное, даже с надлежащим TLS и HTTP/2 подражание,Менеджер бота Akamai все еще может обнаружить и заблокировать васПолем Для веб-сайтов, которые внедрили более высокий уровень защиты, проверяя также отпечатки пальцев браузера, любая конфигурация без браузера, включая скрапу, не достаточна для Akamai или аналогичной защиты бота высшего уровня. Вы можете преодолеть рукопожатие TLS, но потерпели неудачу по другим сигналам (например, отсутствие ожидаемых данных датчика или тонкие расхождения в заголовках/файлах cookie). Другими словами, это кусок головоломки, а не полное решение.

Решение, которое мы увидим сегодня, помогает в решении первых двух моментов: мы будем цепляться вместеJa3proxy, для оптимального отпечатка пальца TLS и вращающегося жилого прокси, чтобы повернуть наши IPS и иметь более высокие оценки репутации.

Понимание отпечатков пальцев TLS и JA3

Прежде чем погрузиться в решение, важно понять, что именно мы подделываем. Каждый клиент HTTPS представляет уникальныйОтпечаток пальца TLSВо время рукопожатия. Этот отпечаток пальца представляет собой комбинацию версии протокола TLS и куча вариантов, которые, как говорит клиент, поддерживает его - подумайте об этом как о «диалекте» клиента речь. Ключевые компоненты включают:

  • Поддерживаемая версия TLS:например TLS 1.2 против TLS 1.3. Современные браузеры будут предлагать 1,3 (все еще позволяя 1,2 для совместимости). Пожилые клиенты или некоторые библиотеки могут сделать только 1.2.

  • Шифрные люксы:Список криптографических алгоритмов, которые клиент может использовать, в предпочтительном порядке. Браузеры, как правило, имеют длинные списки, включая шифры, такие как AES-GCM, Chacha20 и т. Д., Плюс некоторые значения смазки (рандомизированные), чтобы предотвратить снятие спечатков пальцев.

  • Расширения:Дополнительные функции в TLS, такие как индикация имени сервера (SNI), поддерживаемые группы (эллиптические кривые), ALPN (который используется для переговоров HTTP/2) и т. Д. Как наличие определенных расширений, так и их порядок.

КонцепцияJA3 отпечатков пальцевэто стандартизированный способ записать эти подробности Hello Client TLS. JA3, названный в честь инициалов его создателей, составляет строку отпечатков пальцев, объединяя вышеуказанные поля в определенном порядке:

JA3_string = TLSVersion,CipherSuiteIDs,ExtensionIDs,EllipticCurveIDs,EllipticCurveFormatIDs

К каждому списку (шифры, расширения и т. Д.) присоединяется-И разделы,Полем Например, браузер Chrome может производить струну JA3, подобную:

771,4866-4867-4865-....-47-255,0-11-10-16-23-...-21,29-23-30-25-24,0-1-2

Это представляет TLS 1.2 (771 IS 0x0303), конкретный набор комплексов шифров, расширений, поддерживаемых кривых и форматов кривой (числа являются стандартизированными идентификаторами). Строка JA3 тогдаMD5 HashedЧтобы создать компактное значение отпечатков пальцев с 32 символом. Инструменты безопасности часто регистрируют или сравнивают хэш MD5 (поскольку с ней легче обрабатывать, чем длинная строка чисел).

Почему это имеет значение для обнаружения ботов? Потому чтоСтеки браузера TLS довольно однородныеПолем Chrome версия X в Windows будетвсегдаПредставьте тот же отпечаток пальца JA3 до списка заказа. Firefox будет иметь свой собственный JA3.

Библиотека запросов Python (которая использует OpenSSL под капотом) имеет JA3, который полностью отличается от любого основного браузера, поэтому он легко обнаруживается.

Анти-ботские услуги, такие как Akamai, поддерживают базы данных хэшей JA3: если ваш JA3 не входит в список «известных хороших» (общие браузеры) или если он находится в известном списке автоматизации, вы получите помечение. Фактически, JA3 был первоначально создан для отслеживания вредоносных программ и ботов благодаря рукопожатию TLS, и он также стал удобным инструментом для борьбы с разжиганием.

Таким образом, чтобы пройти проверки на давление отпечатков пальцев Akamai,Нам нужен JA3 нашего клиента, чтобы соответствовать популярному браузеруПолем

Обычно это означает имитировать последний отпечаток хрома или Firefox (так как это наиболее распространенные законные пользователи в Интернете).

Простое изменение строки пользователя-агента недостаточно-мы должны изменить рукопожатие TLS низкого уровня. Скрара подражает, делает это внутренне черезcurl_cffi(Что само по себе использует специальную сборку библиотек сгиба и TLS для имитации браузеров). Но внешняя скрара нам нужен другой способ достичь того же эффекта.

TLS Impersonation Proxy + жилой прокси -сеть

Наше решение -Цепочка две проксиЧтобы сделать наш скребок практически неразличимым от реального пользователя браузера:

  1. Ja3proxy для подражания TLS:JA3Proxy-это инструмент с открытым исходным кодом, который действует как прокси-сервер HTTP (S), который воспроизводит трафик с помощью выбранного отпечатка пальца TLS. Другими словами, вы запускаете JA3Proxy локально, настраиваете его, чтобы имитировать рукопожатие TLS конкретного браузера, а затем направлять трафик скрещивания через него. JA3Proxy прекратит ваше соединение TLS и инициирует новое рукопожатие TLS на целевой сайт, используя отпечаток острадания. С точки зрения целевого сайта, он выглядит, скажем, браузер Chrome. Прелесть этого подхода в том, чтоЭто клиент-агностик- Вы можете использовать PythonrequestsВhttpx, curl, или что -то еще, просто указав его на Ja3proxy. Вы больше не заблокированы в скраске или какой-либо конкретной библиотеке, чтобы получить TLS, похожий на браузер; Прокси позаботится об этом.

    Под капотом JA3Proxy используетUtls(Усовершенствованная библиотека TLS в Go), чтобы настроить клиента Hello. Он поддерживает различные профили клиентов (Chrome, Firefox, Safari и т. Д., В разных версиях). Например, вы можете настроить его, чтобы имитировать последние браузеры, доступные в библиотеке. Для наших потребностей мы выбираем последний доступный отпечаток хромированного пальца, Chrome 133. Что касается скраски-импульса, интеграция последних браузеров в библиотеке может занять некоторое время, но до тех пор, пока это не будет регулярно обновляться, это не проблема.

    Одна вещь, чтобы отметить: JA3Proxy фокусируется на отпечатках пальцев TLS (часть JA3). Он по своей природе не модифицирует заголовки HTTP (кроме тех, которые относятся к TLS, например, ALPN для HTTP/2) или обрабатывают поведение браузера более высокого уровня.
    Это проведет нас мимо сетевой снятия пальцев, что является самым трудным в изменении, но мы все равно должны убедиться, что наши заголовки HTTP и шаблоны использования являются правильными. К счастью, мы можем вручную установить заголовки в нашем HTTP-клиенте для имитации браузера (пользовательского агента и т. Д.), И HTTP/2 может быть достигнут до тех пор, пока допускает переговоры TLS (клиент Chrome будет рекламировать поддержку ALPN для H2, поэтому, если сайт поддержит его, JA3Proxy будет обсуждать HTTP/2).

  2. Жилой прокси для вращения IP:Вторая часть цепи - восходящая по течениюжилой проксиПолем Это позаботится о репутации и распространении IP.

    Комбинированный эффект является мощным: для Акамай, ваш скребок теперь выглядит как Chrome 133, работающий на жилом IP. Руководство TLS соответствует Chrome's JA3, HTTP/2 и заголовкам может быть скорректирована в соответствии с Chrome, а источник IP - обычная домохозяйство. Это касается основных векторов отпечатков пальцев на сетевом уровне.

    Он сам по себе не решает задачи Akamai на основе JavaScript, но этого должно быть достаточно, чтобы обойти большинство веб-сайтов, с которыми вы столкнетесь.

Руководство по настройке для ja3proxy

Давайте создадим JA3Proxy и поместите его жилым прокси. Следующие шаги приведут вас к запуску.

Установите ja3proxy

Ja3proxy написан в Go. У вас есть два простых параметра: составьте из источника или используйте контейнер Docker. Чтобы построить из источника, вам нужно будет установить. Бегать:

git clone https://github.com/LyleMi/ja3proxy.git
cd ja3proxy
make

Это должно создатьja3proxyисполняемый файл в папке. (В качестве альтернативы вы можете бежатьgo buildВручную, так как проект основан на GO.)

Если вы предпочитаете Docker, в реестре контейнеров Github есть предварительно построенное изображение. Например:

docker pull ghcr.io/lylemi/ja3proxy:latest

Принесет последнее изображение. Затем вы можете запустить его сdocker run(Мы покажем команду RUN через мгновение.) Docker удобен, потому что он упаковывает все без необходимости местной среды GO.

По моему личному опыту, установка была чем -то вроде кошмара. Я не смог сделать изображение Docker работать, так как я постоянно получал ошибки при попытке подключиться к нему, поскольку браузер не был распознан. Затем я решил построить вручную на моем Mac, и я столкнулся с теми же ошибками. Однако после нескольких часов отладки я обнаружил, что мне нужно обновить некоторые зависимости, особенно UTLS; В версиях библиотек были конфликты, и все это вызывало проблемы. В любом случае, мне удалось установить его, поэтому, если сначала вы получите некоторые ошибки, не сдавайтесь.

Получить или создать сертификаты TLS

JA3Proxy может выступать в качестве прокси HTTPS, что означает, что он перехватывает TLS и представляет свой собственный сертификат вашему клиенту.

По умолчанию, он ищетcert.pemиkey.pemфайлы для сертификата для использования. Если вы не предоставите его, вы можете запустить его в режиме открытого текста (как обычный HTTP -прокси) и просто игнорировать проверку сертификата у вашего клиента (не рекомендуется для производства, но приемлемо для тестирования).

Лучшая практика заключается в создании самопоглощенного корневого сертификата и ключа и настроить ваш скребок, чтобы доверять этому сертификату, чтобы вы могли перехватить трафик без предупреждений о безопасности. Например, вы можете генерировать один, используя OpenSSL:

openssl req -x509 -newkey rsa:2048 -sha256 -days 365 -nodes -keyout key.pem -out cert.pem -subj "/CN=JA3Proxy"

Это создаетcert.pem/key.pemПара действительна в течение года. (Для использования в производстве вы можете даже использовать законную внутреннюю CA, если у вас есть эта установка, но для большинства целей соскоб, самореагированный в порядке, если ваш клиент знает, что доверяет ей.)

Запустить ja3proxy с хромированным отпечатками пальцев

Теперь мы запускаем прокси. При использовании двоичного файла выполните такую команду:

./ja3proxy -port 8080 -client Chrome -version 131 -cert cert.pem -key key.pem -upstream YOURPROXYIP:PORT

Давайте разберем эту команду:

  • -port 8080Подсказывает ему прослушивание на порту 8080 (вы можете выбрать другой порт, если это необходимо).
  • -client Chrome -version 131Выбирает профиль отпечатков пальцев. В этом примере он использует встроенный профиль для Chrome 131. Вы бы заменили их на профиль, соответствующий браузеру/версии, который вы хотите,-например, если Chrome 130 поддерживается в последней версии, вы можете использовать-client Chrome -version 130Полем (Вы можете найти список доступных отпечатков пальцев, проверив документацию JA3Proxy илиuTLSбиблиотека, которую он использует. Профили включают различные хромированные, версии Firefox, сафари, края и т. Д.)
  • -certи-keyУкажите файлы сертификата TLS, которые мы сгенерировали на шаге 2.
  • -upstream 123.45.67.89:1080это адрес восходящего прокси. Это должно быть заменено вашей конечной точкой прокси -прокси.Важный:Ja3proxy ожидает, что это будет прокси -адрес Socks5github.com__. Если ваш провайдер дал вам что -то вродеproxy.provider.com:8000С помощью имени пользователя/пароля вы можете попробовать форматusername:password@proxy.provider.com:8000Полем (Ja3proxy будет проанализировать строку и должен обрабатывать аутентификацию для Socks5, если указано вuser:pass@host:portформа. Если это не сработает, вы можете настроить свой жилой прокси на IP-позор или использовать функцию IP Whitelist, чтобы избежать AUTH, или запустить локальный прокси-сервер Dante Nops, который направляется в аутентифицированный HTTP-прокси и т. Д.-это варианты обходного пути.).

Если использовать Docker, эквивалент будет:

docker run -p 8080:8080 \
    -v $(pwd)/cert.pem:/app/cert.pem -v $(pwd)/key.pem:/app/key.pem \
    ghcr.io/lylemi/ja3proxy:latest \
    -client Chrome -version 133 -cert /app/cert.pem -key /app/key.pem \
    -upstream YOURPROXYIP:PORT

Мы установим сертификат и ключ в контейнер и разоблачаем порт 8080. Отрегулируйте команду, чтобы включить ваши фактические учетные данные/хост прокси. Как только это будет запущено, JA3Proxy будет слушатьlocalhost:8080(или какой -либо хост/порт, который вы указали).

Обратный вариант использования - mrporter.com

Mrporter.com-это веб-сайт электронной коммерции моды, который вместе со многими другими в отрасли защищают себя с помощью менеджера бота Akamai.

С помощью простого запроса Python, как указано в файлеsimple_request.pyВ репозитории я столкнулся с ошибкой тайм -аута, как и ожидалось.

import requests

URL = "https://www.mrporter.com/en-gb/mens/product/loewe/clothing/casual-shorts/plus-paula-s-ibiza-wide-leg-printed-cotton-blend-terry-jacquard-shorts/46376663162864673"

headers = {
    "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
    "accept-language": "en-US,en;q=0.5",
    "priority": "u=0, i",
    "sec-ch-ua": "\"Brave\";v=\"135\", \"Not-A.Brand\";v=\"8\", \"Chromium\";v=\"135\"",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "\"macOS\"",
    "sec-fetch-dest": "document",
    "sec-fetch-mode": "navigate",
    "sec-fetch-site": "none",
    "sec-fetch-user": "?1",
    "sec-gpc": "1",
    "service-worker-navigation-preload": "true",
    "upgrade-insecure-requests": "1",
    "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36"
  }

def main():
    try:
        response = requests.get(URL, headers=headers, timeout=10)
        response.raise_for_status()
        print(response.text)
    except requests.RequestException as e:
        print(f"Error fetching the page: {e}")

if __name__ == "__main__":
    main() 

Результат:

Error fetching the page: HTTPSConnectionPool(host='www.mrporter.com', port=443): Read timed out. (read timeout=10)

С помощьюИнструмент Scrapfly TLS отпечатка пальцевВМы можем просмотреть результатынашей просьбы на этом URL. Тем не менее, я не смог найти базу данных, которая указывает на запросы Python, обычно используют этот отпечаток пальца. Конечно, он отличается от отпечатков пальцев, который я получил, используя храброго браузера, с теми же заголовками и пользовательским агентом.

Порядок шифровых люксов отличается, и поэтому отпечаток пальца также будет отличаться.

Теперь давайте начнем JA3Proxy Docker, не прилагая жилого прокси и посмотрим, что произойдет.

docker run -p 8080:8080 \
    -v $(pwd)/cert.pem:/app/cert.pem -v $(pwd)/key.pem:/app/key.pem \
    ghcr.io/lylemi/ja3proxy:latest \
    -client Chrome -version 131 -cert /app/cert.pem -key /app/key.pem

Мы получили сообщение

HTTP Proxy Server listen at :8080, with tls fingerprint 131 Chrome

Таким образом, мы можем использовать Localhost: 8080 в качестве прокси в нашем сценарии запроса Python.

Другая причина ошибок в моей настройке заключалась в том, что я попытался использовать запросы Python для подключения к JA3Proxy. После некоторого копания я обнаружил, что проблема заключалась в том, что библиотека запросов не поддерживает HTTP/2, тогда как JA3Proxy делает при использовании современной версии Chrome.

Для моих тестов мне нужно использовать HTTPX, как показано в файлеrequest_with_proxies.pyПолем

В этом случае, если я снова позвоню в API Scrapfly TLS, первую часть строки JA3 (порядок шифрования)идентична моему браузеруПолем

В качестве окончательного теста, если мы используем этот скрипт для запроса страницы Mrporter, мы можем загрузить его без каких -либо проблем.

Цепочка жилого прокси -сервера

Теперь, когда мы решили обзор отпечатков пальцев TLS, нам просто нужно повернуть IP -адрес, который будет увидеть целевой веб -сайт.

У JA3Proxy есть вариант, который помогает нам в этом, Call Upstream.

Запустив команду JA3Proxy следующим образом,

./ja3proxy -addr 127.0.0.1 -client Chrome -version 131 -cert cert.pem -key key.pem -upstream socks5h://USER:PASS@PROVIDER:PORT -debug

Мы можем туннель, используя наш предпочтительный поставщик прокси.

Обратите внимание, что вам нужно подключиться через Socks5, поэтому убедитесь, что ваш провайдер поддерживает эту функцию.

Проверяя IP после этого, я вижу, что мои вращающиеся IPS на месте, и я могу продолжать загружать страницы Mrporter без проблем.

pierluigivinciguerra@Mac 85.AKAMAI-JA3PROXY % python3.10 request_with_proxies.py
200 {"ip":"5.49.222.37"}
pierluigivinciguerra@Mac 85.AKAMAI-JA3PROXY % python3.10 request_with_proxies.py
200 {"ip":"197.244.237.29"}
pierluigivinciguerra@Mac 85.AKAMAI-JA3PROXY % python3.10 request_with_proxies.py
200 {"ip":"41.193.144.67"}
pierluigivinciguerra@Mac 85.AKAMAI-JA3PROXY % python3.10 request_with_proxies.py
200 {"ip":"102.217.240.216"}
pierluigivinciguerra@Mac 85.AKAMAI-JA3PROXY % python3.10 request_with_proxies.py

Выводы

В этом посте мы видели, как обойти менеджера бота Akamai на веб -сайте Mrporter. Уровень защиты веб -сайта является средним, поэтому не существует сложной проблемы с отпечатком пальцев браузера, но, по моему опыту, это самый распространенный случай использования, когда встречается с Акамай на нашей дороге.

Я предпочитаю следовать подходу JA3Proxy к его обходу, чтобы это решение было использовано в различных рамках. Если вы используете Scrapy, вы всегда можете полагаться на скрапу подражайте, несмотря на ее ограничения, или вы можете попытаться установить шифры в правильном порядке вручную.


Статья является частью«Лаборатория»серияПьерлуиджи ВинсгуерраПолем Проверьте егоПодмазочныйСтраница для получения дополнительных знаний о скребке.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE