fingerserver
Описание
Fingerprint - self-hosted сервис верификации анонимности, написанный на Go. Это TLS/HTTP echo-сервер, который анализирует каждое входящее соединение и показывает посетителю, какую именно информацию о нём можно наблюдать со стороны сети: User-Agent браузера, TLS-отпечаток (JA3/JA4), сырые TCP/IP-параметры первого SYN-пакета и геолокацию по IP.
Проект предназначен для исследований приватности, проверки качества прокси/VPN и тестирования того, насколько сильно личность клиента пробивается через сетевой стек. Веб-панель - это одна страница, которая отображает все собранные данные в отдельных секциях, каждая со своей кнопкой обновления.
Используемые модули
Локальные модули (через replace в go.mod):
- data - генерируется go-bindata. Встраивает ассеты веб-панели (HTML, CSS, JS, шрифты) в виде gzip-сжатых данных в бинарник
- ip2location - чтец бинарных баз IP2Location (.BIN): бинарный поиск по IPv4/IPv6-диапазонам, возвращает страну, регион, город, ISP, координаты и другие поля. Включает подпакет uint128 для 128-битной целочисленной арифметики для IPv6
- useragent - regex-парсер User-Agent (на основе mileusna/useragent): извлекает браузер, ОС, тип устройства и флаги ботов
Внешние зависимости:
- github.com/wi1dcard/fingerproxy v1.2.3 - TLS-фингерпринтинг-прокси: перехватывает сырую ClientHello-запись в метаданные запроса, вычисляет JA3/JA4, предоставляет uTLS-прокси-сервер
- github.com/dreadl0ck/tlsx v1.0.3 - низкоуровневый разбор TLS ClientHello: десериализует сырую запись в структурированные поля
- github.com/refraction-networking/utls v1.8.1 - uTLS, TLS-стек для анализа отпечатков клиентов; предоставляет словарь dicttls с человекочитаемыми названиями шифров, расширений, групп и алгоритмов подписи
- github.com/google/gopacket v1.1.19 - перехват и декодирование пакетов: pcap (libpcap) live-захват, BPF-фильтры, декодирование слоёв IPv4/TCP
Косвенные зависимости: prometheus/client_golang (метрики, подключается через fingerproxy), klauspost/compress, andybalholm/brotli, golang.org/x/{crypto,net,sys,text}, google.golang.org/protobuf.
Технологии
- Go 1.24 - весь сервер
- libpcap / gopacket - перехват пакетов в реальном времени и декодирование IPv4/TCP
- uTLS / fingerproxy / tlsx - перехват TLS ClientHello и вычисление JA3/JA4
- IP2Location BIN - бинарная база геолокации
- go-bindata - встраивание веб-ассетов в бинарник
- Bootstrap 5, jQuery - интерфейс панели
- Leaflet 1.7.1 + OpenStreetMap - карта геолокации
- ua-parser-js - клиентский разбор User-Agent
- TLS 1.0-1.3 - сервис работает со всеми версиями TLS; наборы шифров и версии записей служат справочными данными для анализа отпечатков
- Лицензия GNU AGPL v3 (Affero GPL)