
Product
Introducing Socket Scanning for OpenVSX Extensions
Socket now scans OpenVSX extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.
github.com/vitaliitsarov/fingerprint-injector-go
Advanced tools
Библиотека для инжектирования и модификации browser fingerprint при использовании chromedp в Golang. Аналог популярных Node.js решений типа fingerprint-injector.
go get github.com/vitaliitsarov/fingerprint-injector-go
package main
import (
"context"
"log"
"github.com/chromedp/chromedp"
fp "github.com/vitaliitsarov/fingerprint-injector-go"
)
func main() {
ctx, cancel := chromedp.NewContext(context.Background())
defer cancel()
// Используем готовый preset
fingerprint := fp.NewChrome119Windows11()
// Создаем инжектор
injector := fp.NewInjector(fingerprint)
// Применяем fingerprint
err := chromedp.Run(ctx,
injector.ApplyAll(ctx),
chromedp.Navigate("https://example.com"),
)
if err != nil {
log.Fatal(err)
}
}
fingerprint := &fp.Fingerprint{
UserAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
Platform: "Win32",
Vendor: "Google Inc.",
Language: "ru-RU",
Languages: []string{"ru-RU", "ru", "en"},
Screen: &fp.Screen{
Width: 1920,
Height: 1080,
ColorDepth: 24,
DevicePixelRatio: 1.0,
},
Timezone: &fp.Timezone{
ID: "Europe/Moscow",
Offset: -180,
},
WebGL: &fp.WebGL{
Vendor: "Google Inc. (NVIDIA)",
Renderer: "ANGLE (NVIDIA GeForce RTX 3080)",
},
Canvas: &fp.Canvas{
Noise: 0.02, // Уровень шума
},
WebRTC: &fp.WebRTC{
Disable: true, // Отключить WebRTC
},
HardwareConcurrency: 16,
DeviceMemory: 32,
}
injector := fp.NewInjector(fingerprint)
Библиотека включает готовые пресеты для разных платформ:
NewChrome119Windows11() - Chrome 119 на Windows 11NewChrome119MacOS() - Chrome 119 на MacOSNewChrome119Linux() - Chrome 119 на LinuxNewChrome119Android() - Chrome 119 на Android| Параметр | Описание |
|---|---|
UserAgent | User-Agent строка |
Platform | Платформа (Win32, MacIntel, Linux x86_64) |
Vendor | Производитель браузера |
Language | Основной язык |
Languages | Список языков |
HardwareConcurrency | Количество процессорных ядер |
DeviceMemory | Объем памяти устройства (GB) |
Screen: &fp.Screen{
Width: 1920,
Height: 1080,
AvailWidth: 1920,
AvailHeight: 1040,
ColorDepth: 24,
PixelDepth: 24,
DevicePixelRatio: 1.0,
}
WebGL: &fp.WebGL{
Vendor: "Google Inc. (NVIDIA)",
Renderer: "ANGLE (NVIDIA GeForce RTX 3080)",
UnmaskedVendor: "NVIDIA Corporation",
UnmaskedRenderer: "NVIDIA GeForce RTX 3080",
}
Canvas: &fp.Canvas{
Noise: 0.02, // 0.0 - 1.0, уровень шума для защиты от fingerprinting
}
WebRTC: &fp.WebRTC{
Disable: true, // Полностью отключить
PublicIP: "8.8.8.8", // Подменить публичный IP
LocalIP: "192.168.1.100", // Подменить локальный IP
}
Timezone: &fp.Timezone{
ID: "Europe/Moscow", // IANA timezone ID
Offset: -180, // Смещение в минутах
}
Battery: &fp.Battery{
Charging: false,
ChargingTime: 0,
DischargingTime: 18000,
Level: 0.75,
}
Для максимальной защиты от детекции используйте следующие настройки chromedp:
opts := append(chromedp.DefaultExecAllocatorOptions[:],
chromedp.Flag("headless", false),
chromedp.Flag("disable-blink-features", "AutomationControlled"),
chromedp.Flag("exclude-switches", "enable-automation"),
chromedp.Flag("disable-extensions", false),
chromedp.Flag("disable-dev-shm-usage", true),
chromedp.UserDataDir("./chrome-data"),
)
allocCtx, cancel := chromedp.NewExecAllocator(context.Background(), opts...)
defer cancel()
ctx, cancel := chromedp.NewContext(allocCtx)
defer cancel()
// Используем fingerprint с отключенным WebRTC и повышенным шумом
fingerprint := fp.NewChrome119Windows11()
fingerprint.WebRTC.Disable = true
fingerprint.Canvas.Noise = 0.05
injector := fp.NewInjector(fingerprint)
В папке examples/ вы найдете полные примеры использования:
examples/basic/ - Базовое использование с presetexamples/custom/ - Использование кастомного fingerprintexamples/stealth/ - Максимальная защита от детекцииЗапуск примеров:
cd examples/basic
go run main.go
Проверить качество fingerprint можно на следующих сайтах:
func NewInjector(fingerprint *Fingerprint) *Injector
ApplyAll(ctx context.Context) - Применить все настройки fingerprintInject(ctx context.Context) - Инжектировать JavaScript кодSetUserAgentOverride(ctx context.Context) - Установить User-Agent через CDPSetTimezoneOverride(ctx context.Context) - Установить Timezone через CDPGetInjectionScript() - Получить JavaScript код для инжектирования// Из preset
fp := fp.NewChrome119Windows11()
// Дефолтный
fp := fp.NewDefaultFingerprint()
// Кастомный
fp := &fp.Fingerprint{ /* ... */ }
Пул реквесты приветствуются! Для крупных изменений, пожалуйста, сначала откройте issue для обсуждения.
MIT
Этот инструмент предназначен только для легитимных целей, таких как:
Не используйте для обхода систем защиты или других незаконных действий.
Вдохновлено проектами:
Made with ❤️ for the Go community
FAQs
Unknown package
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket now scans OpenVSX extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.

Product
Bringing supply chain security to the next generation of JavaScript package managers

Product
A safer, faster way to eliminate vulnerabilities without updating dependencies