Обход TLS/Akamai Fingerprint Shield
Обход TLS/Akamai Fingerprint Shield

1. Предисловие

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

Тестируйте сайты, блокирующие отпечатки пальцев:https://ascii2d.net

Недавно я прочитал статью Мастера《обойти Cloudflare Щит от отпечатков пальцев》,Очень трогательно,Я чувствую, что это проблема, с которой я сталкивался раньше; когда я писал рептилию, я столкнулся с чем-то вроде этого Щит отпечатков пальцев (механизм предотвращения восхождения),Еще они пытаются имитировать браузер через селен.,На этот раз я могу увидеть мир,Узнал что-то новое.

Этот контент в основном разделен на две части: 1 — для обхода распознавания отпечатков пальцев TLS, 2 — для обхода распознавания отпечатков пальцев Akamai (отпечатков HTTP/2).

2. Связанный с отпечатком TLS

2.1. Что такое отпечаток TLS?

Снятие отпечатков пальцев TLS — это технология, используемая для идентификации и аутентификации соединений TLS (Transport Layer Security).

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

Отпечатки TLS можно использовать для обнаружения угроз безопасности, таких как сетевой спуфинг, атаки «человек посередине» и шпионаж, а также для идентификации устройств и приложений и управления ими.

Отпечаток Принцип идентификации TLS (алгоритм ja3):https://github.com/salesforce/ja3

алгоритм ja3
алгоритм ja3

2.2. Проверка отпечатка TLS.

Проверьте различия отпечатков пальцев между разными клиентами (ja3_hash)

Для углубленного анализа вы можете использовать Wireshark для захвата пакетов TLS для сравнительного анализа.

Тестовый сайт:https://tls.browserleaks.com/json

  • CURL v7.79.1

curl v7.79.1
curl v7.79.1

  • CURL 7.68.0

CURL 7.68.0
CURL 7.68.0

  • Chrome 112.0.5615.137 (официальная версия) (x86_64)

Chrome 112.0.5615.137 (официальная версия) (x86_64)
Chrome 112.0.5615.137 (официальная версия) (x86_64)

  • Burp Chromium 103.0.5060.114 (официальная версия) (x86_64)

Burp Chromium
Burp Chromium

  • Python 2.11.1

Python 2.11.1
Python 2.11.1

Видно, что между разными клиентами существуют различия. Давайте кратко объясним последний файл ja3_text в Python.

  • первое значение 771:выражать JA3 версия, которая используется для генерации отпечатков пальцев JA3 Версия скрипта.
  • второе значение 4866-4867-4865-49196-49200-49195-49199-163-159-162-158-49327-49325-49188-49192-49162-49172-49315-49311-107-106-57-56-49326-49324-49187-49191-49161-49171-49314-49310-103-64-51-50-52393-52392-49245-49249-49244-49248-49267-49271-49266-49270-52394-49239-49235-49238-49234-196-195-190-189-136-135-69-68-157-156-49313-49309-49312-49308-61-60-53-47-49233-49232-192-186-132-65-255:выражать加密套件,То есть клиент можетк Поддерживаемые алгоритмы шифрования。
  • третье значение 0-11-10-35-22-23-13-43-45-51-21:выражать支持的压缩算法。
  • четвертое значение 29-23-30-25-24:выражать支持的 TLS расширения, такие как SNI。
  • пятое значение 0-1-2:выражать支持的 elliptic кривые, алгоритм эллиптической кривой.

2.3. Обход отпечатков пальцев TLS.

Теперь, когда мы все знаем принцип, обойти его — значит притвориться законным клиентом. Проще говоря, это значит замаскировать значение ja3_text так, чтобы его нельзя было перехватить, и, главным образом, изменить поддерживаемый алгоритм шифрования.

2.3.1. Нулевой метод: использовать встроенную urllib.

Язык кода:python
кодКоличество запусков:0
копировать
импортировать urllib.request
импортировать SSL

URL = 'https://tls.browserleaks.com/json'
req = urllib.request.Request(url)
соотв = urllib.request.urlopen(req)
печать (соответственно.read().декодирование())

# подделка Отпечаток TLS
контекст = ssl.create\_default\_context()
context.set\_ciphers("ECDHE-RSA-AES128-GCM-SHA256 ECDHE AESGCM")

URL = 'https://tls.browserleaks.com/json'
req = urllib.request.Request(url)
resp = urllib.request.urlopen(req, context=context)
печать(соответственно.read().декодирование())

urllib
urllib

2.3.2. Способ 1. Используйте другие зрелые библиотеки.

Можеткпытатьсяcurl\_cffiЭта библиотека,Главное – имитировать различные отпечатки пальцев.

Python binding for curl-impersonate via cffi. A http client that can impersonate browser tls/ja3/http2 fingerprints.

В дополнение к этому вы также можете попробовать pyhttpx, pycurl

Язык кода:shell
копировать
pip install --upgrade curl\_cffi

Тестовый код:

Язык кода:python
кодКоличество запусков:0
копировать
from curl\_cffi import requests

print("edge99:", requests.get("https://tls.browserleaks.com/json", impersonate="edge99").json().get("ja3\_hash"))
print("chrome110:", requests.get("https://tls.browserleaks.com/json", impersonate="chrome110").json().get("ja3\_hash"))
print("safari15\_3:", requests.get("https://tls.browserleaks.com/json", impersonate="safari15\_3").json().get("ja3\_hash"))

# агент поддержки
proxies = {"https": "http://localhost:7890"}
r = requests.get("https://tls.browserleaks.com/json", impersonate="chrome101", proxies=proxies)
print(r.json().get("ja3\_hash"))

Эффект следующий:

curl_cffi
curl_cffi

Список браузеров, поддерживающих подделку, выглядит следующим образом:

Язык кода:python
кодКоличество запусков:0
копировать
# curl\_cffi.requests.session.BrowserType
class BrowserType(str, Enum):
    edge99 = "edge99"
    edge101 = "edge101"
    chrome99 = "chrome99"
    chrome100 = "chrome100"
    chrome101 = "chrome101"
    chrome104 = "chrome104"
    chrome107 = "chrome107"
    chrome110 = "chrome110"
    chrome99\_android = "chrome99\_android"
    safari15\_3 = "safari15\_3"
    safari15\_5 = "safari15\_5"

2.3.3 Способ 2: Подвесить слой клиентского прокси.

Здесь burp используется для завершения процесса аутентификации TLS при условии, что отпечаток TLS burp не будет перехвачен.

burp
burp

Отпечаток TLS Burp можно изменить следующими способами.

Изменить отпечаток TLS отрыжки
Изменить отпечаток TLS отрыжки

2.3.4 Способ 3: Изменить базовый код запросов.

SSL/TLS-аутентификация библиотеки запросов реализована на основе библиотеки urllib3, поэтому изменение нижнего уровня означает изменение кода urllib3.

Проверятьurllib3Место установки

Язык кода:shell
копировать
python3 -c "import urllib3; print(urllib3.\_\_file\_\_)"

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/urllib3/\_\_init\_\_.py

Изменить связанный SSL-код,Адрес файла обычноsite-packages/urllib3/util/ssl\_.py

Язык кода:python
кодКоличество запусков:0
копировать
DEFAULT\_CIPHERS = ":".join(
    [
        "ECDHE AESGCM",
        "ECDHE CHACHA20",
        "DHE AESGCM",
        "DHE CHACHA20",
        "ECDH AESGCM",
        "DH AESGCM",
        "ECDH AES",
        "DH AES",
        "RSA AESGCM",
        "RSA AES",
        "!aNULL",
        "!eNULL",
        "!MD5",
        "!DSS",
    ]
)

Существует много возможностей для манипуляций, такие как я, обычно сосредотачиваются на удалении и изменении позиций. Сравнение следующее:

vs
vs

3. Связанный с отпечатком пальца Akamai (отпечаток HTTP/2)

3.1. Что такое отпечаток пальца Акамай?

Akamai Fingerprint — это технология, разработанная Akamai Technologies для предотвращения вредоносных роботов и автоматических атак. Она основана на технологии снятия отпечатков пальцев браузера.

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

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


Можно найти в https://tls.peet.ws/api/all Глядя на подробные отпечатки пальцев, основное содержание выглядит следующим образом.

HTTP2
HTTP2

Отпечаток пальца:1:65536,2:0,3:1000,4:6291456,6:262144|15663105|0|m,a,s,p

  1. 1:65536: HEADER\_TABLE\_SIZE,То есть размер таблицы заголовков составляет 64 КБ.,Относится к размеру, используемому для хранения заголовков запросов и ответов.,它是Можеткскорректированный。В этом поле указывается использование64KBРазмер таблицы заголовков。
  2. 2:0: HTTP2\_VERSION,Указывает версию HTTP/2, используемую этим запросом. 0 означает H2,Указывает, что протокол HTTP/2 включен.
  3. 3:1000: MAX\_CONCURRENT\_STREAMS,То есть максимальное количество одновременных потоков,означает, что в любой момент времени,客户端和服务器端Можетк Максимальное количество запросов, отправляемых параллельно。В этом поле указывается максимальное количество одновременных потоков, как1000。
  4. 4:6291456: INITIAL\_WINDOW\_SIZE,То есть начальный размер окна потока,Относится к начальному размеру окна управления потоком.,То есть клиент можетк Максимальное количество отправленных байтов。В этом поле указывается начальный размер окна потока:6MB(Прямо сейчас6291456байт)。
  5. 6:262144|15663105|0|m,a,s,p
Язык кода:txt
копировать
: квертикальная полоса“|”отдельный。Конкретный смысл заключается в следующем:
Язык кода:txt
копировать
- `6:262144`: `max header list size`, который представляет собой размер динамической таблицы, относится к максимальному размеру HTTP-заголовка, который может получить получатель. Это поле указывает, что размер динамической таблицы составляет 256 КБ (т. е. 262 144 байта).
- `15663105`: `WINDOW\_UPDATE`, указывающий, что был получен кадр `WINDOW\_UPDATE` и размер окна увеличился на 15663105 байт.
- `0`: `no compress`, указывая, что сжатие заголовка не включено.
- к `:` начало header В кодировании участвует первый символ, разделенный несколькими запятыми. нравиться `:method`、`:authority`、`:scheme`、`:path` закодировано как `m,a,s,p`

Может在Passive Fingerprinting of HTTP/2 Clients中Проверять详细细节

3.2. Тест отпечатка пальца Акамай.

Тестовый сайт:https://tls.browserleaks.com/json

  • CURL

curl
curl

  • Chrome

chrome
chrome

  • Python

python
python

Вы можете видеть, что запросы Python прямо пусты, и мальчик-сканер напрямую перехватывается.

3.3. Обход отпечатка пальца Akamai.

Просто подделайте определенные поля в отпечатке пальца.

3.3.1. Способ 1. Используйте другие зрелые библиотеки.

Прямо сейчасcurl\_cffiЭта библиотека,因为Эта библиотека Главное – имитировать различные отпечатки пальцев.

Python binding for curl-impersonate via cffi. A http client that can impersonate browser tls/ja3/http2 fingerprints.

Язык кода:shell
копировать
pip install --upgrade curl\_cffi

Тестовый код:

Язык кода:python
кодКоличество запусков:0
копировать
from curl\_cffi import requests

print("edge99:", requests.get("https://tls.browserleaks.com/json", impersonate="edge99").json().get("akamai\_hash"))
print("chrome110:", requests.get("https://tls.browserleaks.com/json", impersonate="chrome110").json().get("akamai\_hash"))
print("safari15\_3:", requests.get("https://tls.browserleaks.com/json", impersonate="safari15\_3").json().get("akamai\_hash"))

Эффект следующий:

akamai
akamai

Список браузеров, поддерживающих подделку, выглядит следующим образом:

Язык кода:python
кодКоличество запусков:0
копировать
# curl\_cffi.requests.session.BrowserType
class BrowserType(str, Enum):
    edge99 = "edge99"
    edge101 = "edge101"
    chrome99 = "chrome99"
    chrome100 = "chrome100"
    chrome101 = "chrome101"
    chrome104 = "chrome104"
    chrome107 = "chrome107"
    chrome110 = "chrome110"
    chrome99\_android = "chrome99\_android"
    safari15\_3 = "safari15\_3"
    safari15\_5 = "safari15\_5"

4. Конечный эффект

https://ascii2d.net Существует защита от отпечатков пальцев CloudFlare, которая отклоняет сканеры, поэтому проверьте ее.

Прямой CURL, перехваченный

banned
banned

обойти

Язык кода:python
кодКоличество запусков:0
копировать
from curl\_cffi import requests

req = requests.get("https://ascii2d.net", impersonate="chrome110")
print(req.text)

Страницу можно получить обычным способом

normal
normal

5. Справочник

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose