---
# System prepended metadata

title: Методика тестирования

---

# Методика тестирования

### Подготовка
0. При тестировании не обязательно использовать прокси/сокс, достаточно будет PPTP/VPN/WireGuard. 
1. Запускаем Google Chrome, переходим по `chrome://settings/help`, обновляем до последней версии если это нужно. Обязательно отключаем все расширения (extensions). Записываем версию в таблицу.
2. Открываем антидетект, создаем три профиля под ту систему на которой запущен антинтидетект. Если антидетект запущен на Windows - создаем профили под Windows, если на MacOs - создаем профили под MacOs.
3. Для каждого параметра который в профиле можно рандомизировать или подменить - включаем/выставляем подмену. 
Если в браузер устанавливаются какие-либо расширения - то отключаем их. Также переходим по `chrome://settings/help` и записываем версию в таблицу.
4. Запускаем все три созданных профиля.
5. Копируем ссылку на тест и открываем ссылку во всех бразерах по очереди, в начале в Google Chrome, затем в каждом из трех созданных браузеров.
6. Результаты тестов записываем в таблицу.
7. Для того чтоб быстро найти хеш на странице - копируешь отсюда название хеша (оно выделено в тексте `вот так`), затем нажимаешь в браузере горячие клавиши поиска по странице Control + F (Command + F для Macos) и ищешь по названию хеша.

### Тесты
---

1. Antibot,
https://bot.sannysoft.com/ 
    - это самый простой тест на бота который используют крупные сайты для защиты от парсеров, скраперов, авторегистраторов и тп
    - если при прохождении теста все полученные данные подсвечены зеленым цветом - записываем в таблицу `passed`
    - если что-то будет подсвечено красным - записываем `NOT PASSED`
    
    Все параметры подсвечены зеленым, записываем в таблицу passed
    ![bot.sannysoft.com_](https://hackmd.io/_uploads/Hy5vGjft1g.png)

---

2. CreepJS,  
https://abrahamjuliot.github.io/creepjs/
    - CreepJS - очень известная библиотека для тестирования браузеров и обнаружения ботов с огромным набором тестов на javascript
    - нам интересен только параметр `trust score` который у реального Google Chrome будет 65-70%
    - записываем этот процент в таблицу
   
    Trust Score у браузера Google Chrome:
    ![creepjs_chrome](https://hackmd.io/_uploads/rkex5xX50.png)
    
    Trust Score не у Google Chrome, но который притворяется что он Google Chrome:
    ![cheepjs_not_chrome](https://hackmd.io/_uploads/SJzVceQqC.png)

---

3. WebRTC,
https://privacycheck.sec.lrz.de/active/fp_wrtc/fp_webrtc.html
    - WebRTC - технология позволяющая сайтам и приложениям захватывать аудио и видео с браузера пользователя, идентификаторы установленных и подключенных медиаустройств (микрофоны, динамики, вебкамеры) совместно с включенными и поддерживаемыми функциями WebRTC формируют уникальный отпечаток браузера
    - нам интересен хеш для `WebRTC Fingerprint without permissions`
    - записываем этот хеш в таблицу

    ![webrtc](https://hackmd.io/_uploads/B1DxN-m5C.png)


---

4. WebGL 
    - WebGL- набор методов для отрисовки 3d графики, анимации и сложных визуальных эффектов прямо в браузере (например в онлайн играх) без использования стороннего софта или плагинов. WebGL задействует в свой работе видеокарту (GPU) в отличии от Canvas который чаще использует процессор (CPU)
    - нас интересует какой будет хеш без включения в него информации о видеокарте (Unmasked Renderer и Unmasked Vendor) которые подменяются в большинстве антидетектов
    - первый тест проводим тут https://privacycheck.sec.lrz.de/active/fp_wg/fp_webgl.html
    - ищем хеш для `Your WebGL Image Fingerprint`, записываем в таблицу

    ![webgl](https://hackmd.io/_uploads/SkK5tZdqR.png)

---

    
5. WebGPU,
https://browserleaks.com/webgpu
    - WebGPU - технология возникшая в процессе эволюции WebGL, позволяет создавать в браузере еще более сложную графику чем WebGL используя видеокарты. По сути это улучшенная версия WebGL - более производительная, с использованием асинхронности (параллельных вычислений), использует максимально современные графические API (Direct3D 12, Metal, Vulkan), и, как следствие, требует от разработчиков больших усилий, сложных настроек и сложного програмного кода.
    - нас интересует `WebGPU Report Hash`, записываем в таблицу
  
  ![webgpu](https://hackmd.io/_uploads/Skzjgfd9R.png)


---

6. ClientRects,
https://privacycheck.sec.lrz.de/active/fp_gcr/fp_getclientrects.html
    - getClientRects - это функция в Javascript для получения информации о расположении и размерах различных элементов на странице, по сути способ узнать где именно на дисплее находится элемент и сколько места он занимает. Отпечаток getClientRects - хешированная информация о множестве различных элементов на странице с различными трансформациями и преобразованиями в ходе которых используются мощности GPU
    - находим `Your getClientRects Fingerprint`, записываем в таблицу

    ![getClientRect](https://hackmd.io/_uploads/HJffEGu9A.png)

---

7. Canvas Fonts, 
https://privacycheck.sec.lrz.de/active/fp_cf/fp_canvas_font.html
    - Canvas Fonts - метод обнаружения поддерживаемых браузером шрифтов, но с использованием Canvas. Через Canvas API методом measureText вызывается несуществующий фейковый шрифт которого точно нет в системе и далее с ним сравниваются существующие в системе шрифты. Метод аналогичен отпечатку Canvas, но при этом более скрытен - он не извлекает данные отрисовываемые с помощью Canvas, а это означает что подмена или блокирование Canvas не может изменить отпечаток полученный методом Canvas Fonts. От обнаружения спасает только полное отключение Canvas API или глубокая модификация метода measureText из этого API
    - нас интересует хеш из `Your canvas font fingerprint`, записываем в таблицу

    ![canvasFont](https://hackmd.io/_uploads/BykskXu9R.png)



---

8. AudioContext,
https://privacycheck.sec.lrz.de/active/fp_ac/fp_audiocontext.html
    - этим методом анализируется обработка и экранирование аудиосигналов браузером и системой пользователя, одна и та же система будет обрабатывать аудио одинаково
    - ищем на странице кнопку `Click here to start the Test`
    - нас интересует `Overall AudioContext Fingerprint`, записываем в таблицу

    ![audioContext](https://hackmd.io/_uploads/H1xdKQucR.png)

---

9. Feature Detection,
https://privacycheck.sec.lrz.de/active/fp_fd/fp_feature_detection.html
    - обнаружение функций браузера предназначеных для разработчиков сайтов и web приложений и нужных для определения возможностей браузера. В различных браузерах доступный функционал реализован по разному, в каких-то есть по умолчанию, в каких-то вобще не поддерживается, а в каких-то нужны дополнительные расширения или плагины. На основе обнаружения функций браузера можно точно определить название и версию браузера, его настройки, установленные расширения и плагины. В предложеном тесте определяется функционал по 298 параметрам, но на данный момент общее количество функционала браузера, который может быть определен с помощью js, в разы больше
    - нас интересует `Feature Support Hash`, записываем в таблицу
 
 ![feature](https://hackmd.io/_uploads/Sk-U1kYq0.png)
---

10. MIME Types canPlayType,
https://privacycheck.sec.lrz.de/active/fp_cpt/fp_can_play_type.html
    - метод HTMLMediaElement.canPlayType определяет возможно ли воспроизвести указаный медифайл и создается ли для него буфер в браузере. Предложенный тест определяет какие типы медиафайлов и кодеков поддерживает браузер и может их воспроизвести, при тонкой настройке теста можно точно определять название и версию браузера. Тест делает проверку поддержки 797 типов медиафайлов, но на данный момент их общее количество в разы больше
    - нас интересует `Your canPlayType Fingerprint`, записываем в таблицу
  
  ![canPlay](https://hackmd.io/_uploads/HkX-7kFqA.png)
---
    
11. Emoji,
https://privacycheck.sec.lrz.de/active/fp_e/fp_emoji.html
    - эмоджи по разному отрисовываются в различных браузерах, часть эмоджи тот или иной браузер вобще не сможет отрисовать, наглядно это можно увидеть на следующей странице https://unicode.org/emoji/charts/full-emoji-list.html
    - в предложеном тесте используется хешированая информация об отображении 2575 эмоджи, сейчас же их "введено в эксплуатацию" намного больше - 3790 эмоджи, вот весь список https://unicode.org/emoji/charts/emoji-counts.html
    - нас интересует `Your Emoji Fingerprint`, записываем в таблицу
    
    ![emoji](https://hackmd.io/_uploads/SJ1EIiMKye.png)

---

12. TLS и HTTP/2 (JA fingerprints),
https://tls.peet.ws/api/clean
	- JA fingerprinting - это набор методов позволяющий идентифицировать клиентов (браузеры, приложения, программы) анализируя параметры передаваемые в ходе установки защищённых соединений. Для большинства браузеров и програм эти фингерпринты уже собраны, изучены и известны, крупные сервисы собирают хеши отпечатков в бд и затем сравнением хешей можно определить - у клиента браузер Chrome, Firefox, Safari, тд или он использует клиенты по типу curl, wget, тд
    - Для примера для протокола TCP:
	JA4 отпечаток у Chrome/Chromium всегда ...\_8daaf6152771_...
	JA4 отпечаток у Firefox всегда ...\_5b57614c22b0_...
	JA4 отпечаток у Safari всегда ...\_a09f3c656075_...

	- Все четыре типа отпечатков (JA3, JA4, Peetprint, Akamai) – формируются на основе параметров протоколов TLS и HTTP/2, которые отправляются именно браузером/клиентом/программой
	- Тип соединения (PPTP/OpenVPN/WireGuard/SOCKS5) никак не влияет на эти отпечатки, при условии что прокси не вмешивается в модификацию пакетов. В обычных реализациях VPN‑сервисы (PPTP, OpenVPN, WireGuard) и SOCKS5 просто инкапсулируют трафик и не меняют содержимое TLS или HTTP/2, а значит никак не влияют на итоговый фингерпринт
	
	- JA3 фингерпринт получается из анализа TLS соединения отправляемого клиентом (браузером, приложением или программой), он позволяет идентифицировать клиента по тому какая библиотека или версия TLS используется.
	- JA4 фингерпринт получается из анализа параметров которые передаются при использовании протокола HTTP/2, он позволяет идентифицировать клиента по тому как реализован HTTP/2 у клиента - какая используется версия, какой происходит порядок и набор передаваемых параметров
	- Peetprint фингерпринт - более продвинутая и расширеная версия JA3
	- Akamai фингерпринт - использует HTTP/2 и некоторые настройки для TLS

	- нас интересуют следующие хеши, внимательно их ищем  и записываем в таблицу
	`ja3_hash`
	`ja4`
	`akamai_hash`
	`peetprint_hash`