162 lines
7.2 KiB
Go
162 lines
7.2 KiB
Go
package client
|
|
|
|
import (
|
|
"math/rand"
|
|
|
|
"github.com/bogdanfinn/tls-client/profiles"
|
|
)
|
|
|
|
// ============================================================
|
|
// 浏览器指纹配置文件
|
|
// 整合 tls-client 高成功率指纹
|
|
// ============================================================
|
|
|
|
// BrowserFingerprint 浏览器指纹完整配置
|
|
type BrowserFingerprint struct {
|
|
Browser string
|
|
Version string
|
|
Platform string
|
|
Mobile bool
|
|
TLSProfile profiles.ClientProfile
|
|
}
|
|
|
|
// ============================================================
|
|
// Firefox 指纹池 (100% 成功率)
|
|
// ============================================================
|
|
|
|
var firefoxFingerprints = []BrowserFingerprint{
|
|
// 最新版本
|
|
{Browser: "firefox", Version: "135", Platform: "Windows", TLSProfile: profiles.Firefox_135},
|
|
{Browser: "firefox", Version: "135", Platform: "macOS", TLSProfile: profiles.Firefox_135},
|
|
{Browser: "firefox", Version: "135", Platform: "Linux", TLSProfile: profiles.Firefox_135},
|
|
{Browser: "firefox", Version: "133", Platform: "Windows", TLSProfile: profiles.Firefox_133},
|
|
{Browser: "firefox", Version: "133", Platform: "macOS", TLSProfile: profiles.Firefox_133},
|
|
{Browser: "firefox", Version: "133", Platform: "Linux", TLSProfile: profiles.Firefox_133},
|
|
{Browser: "firefox", Version: "132", Platform: "Windows", TLSProfile: profiles.Firefox_132},
|
|
{Browser: "firefox", Version: "132", Platform: "macOS", TLSProfile: profiles.Firefox_132},
|
|
{Browser: "firefox", Version: "123", Platform: "Windows", TLSProfile: profiles.Firefox_123},
|
|
{Browser: "firefox", Version: "120", Platform: "Windows", TLSProfile: profiles.Firefox_120},
|
|
{Browser: "firefox", Version: "120", Platform: "macOS", TLSProfile: profiles.Firefox_120},
|
|
{Browser: "firefox", Version: "117", Platform: "Windows", TLSProfile: profiles.Firefox_117},
|
|
{Browser: "firefox", Version: "110", Platform: "Windows", TLSProfile: profiles.Firefox_110},
|
|
{Browser: "firefox", Version: "108", Platform: "Windows", TLSProfile: profiles.Firefox_108},
|
|
{Browser: "firefox", Version: "106", Platform: "Windows", TLSProfile: profiles.Firefox_106},
|
|
{Browser: "firefox", Version: "105", Platform: "Windows", TLSProfile: profiles.Firefox_105},
|
|
{Browser: "firefox", Version: "104", Platform: "Windows", TLSProfile: profiles.Firefox_104},
|
|
{Browser: "firefox", Version: "102", Platform: "Windows", TLSProfile: profiles.Firefox_102},
|
|
}
|
|
|
|
// ============================================================
|
|
// Safari 指纹池 (100% 成功率)
|
|
// ============================================================
|
|
|
|
var safariFingerprints = []BrowserFingerprint{
|
|
// macOS Safari
|
|
{Browser: "safari", Version: "16.0", Platform: "macOS", TLSProfile: profiles.Safari_16_0},
|
|
{Browser: "safari", Version: "15.6.1", Platform: "macOS", TLSProfile: profiles.Safari_15_6_1},
|
|
// iOS Safari
|
|
{Browser: "safari", Version: "18.5", Platform: "iOS", Mobile: true, TLSProfile: profiles.Safari_IOS_18_5},
|
|
{Browser: "safari", Version: "18.0", Platform: "iOS", Mobile: true, TLSProfile: profiles.Safari_IOS_18_0},
|
|
{Browser: "safari", Version: "17.0", Platform: "iOS", Mobile: true, TLSProfile: profiles.Safari_IOS_17_0},
|
|
{Browser: "safari", Version: "16.0", Platform: "iOS", Mobile: true, TLSProfile: profiles.Safari_IOS_16_0},
|
|
{Browser: "safari", Version: "15.6", Platform: "iOS", Mobile: true, TLSProfile: profiles.Safari_IOS_15_6},
|
|
{Browser: "safari", Version: "15.5", Platform: "iOS", Mobile: true, TLSProfile: profiles.Safari_IOS_15_5},
|
|
// iPadOS Safari
|
|
{Browser: "safari", Version: "15.6", Platform: "iPadOS", Mobile: true, TLSProfile: profiles.Safari_Ipad_15_6},
|
|
}
|
|
|
|
// ============================================================
|
|
// Opera 指纹池 (高成功率)
|
|
// ============================================================
|
|
|
|
var operaFingerprints = []BrowserFingerprint{
|
|
{Browser: "opera", Version: "91", Platform: "Windows", TLSProfile: profiles.Opera_91},
|
|
{Browser: "opera", Version: "90", Platform: "Windows", TLSProfile: profiles.Opera_90},
|
|
{Browser: "opera", Version: "89", Platform: "Windows", TLSProfile: profiles.Opera_89},
|
|
}
|
|
|
|
// ============================================================
|
|
// OkHttp 指纹池 (100% 成功率 - Android 原生)
|
|
// ============================================================
|
|
|
|
var okhttpFingerprints = []BrowserFingerprint{
|
|
{Browser: "okhttp", Version: "13", Platform: "Android", Mobile: true, TLSProfile: profiles.Okhttp4Android13},
|
|
{Browser: "okhttp", Version: "12", Platform: "Android", Mobile: true, TLSProfile: profiles.Okhttp4Android12},
|
|
{Browser: "okhttp", Version: "11", Platform: "Android", Mobile: true, TLSProfile: profiles.Okhttp4Android11},
|
|
{Browser: "okhttp", Version: "10", Platform: "Android", Mobile: true, TLSProfile: profiles.Okhttp4Android10},
|
|
{Browser: "okhttp", Version: "9", Platform: "Android", Mobile: true, TLSProfile: profiles.Okhttp4Android9},
|
|
{Browser: "okhttp", Version: "8", Platform: "Android", Mobile: true, TLSProfile: profiles.Okhttp4Android8},
|
|
{Browser: "okhttp", Version: "7", Platform: "Android", Mobile: true, TLSProfile: profiles.Okhttp4Android7},
|
|
}
|
|
|
|
// ============================================================
|
|
// Chrome 指纹池 (测试通过的版本)
|
|
// 注意: 新版 Chrome (120+) 在 tls-client 中被检测,只保留旧版本
|
|
// ============================================================
|
|
|
|
var chromeFingerprints = []BrowserFingerprint{
|
|
// 只保留测试通过的旧版本
|
|
{Browser: "chrome", Version: "112", Platform: "Windows", TLSProfile: profiles.Chrome_112},
|
|
{Browser: "chrome", Version: "111", Platform: "Windows", TLSProfile: profiles.Chrome_111},
|
|
}
|
|
|
|
// ============================================================
|
|
// 合并所有指纹
|
|
// ============================================================
|
|
|
|
var allFingerprints []BrowserFingerprint
|
|
|
|
func init() {
|
|
allFingerprints = make([]BrowserFingerprint, 0, 100)
|
|
|
|
// Firefox (高优先级,多份)
|
|
allFingerprints = append(allFingerprints, firefoxFingerprints...)
|
|
allFingerprints = append(allFingerprints, firefoxFingerprints...)
|
|
|
|
// Safari (高成功率)
|
|
allFingerprints = append(allFingerprints, safariFingerprints...)
|
|
|
|
// Opera
|
|
allFingerprints = append(allFingerprints, operaFingerprints...)
|
|
|
|
// OkHttp (Android)
|
|
allFingerprints = append(allFingerprints, okhttpFingerprints...)
|
|
|
|
// Chrome (低优先级)
|
|
allFingerprints = append(allFingerprints, chromeFingerprints...)
|
|
}
|
|
|
|
// GetRandomFingerprint 获取随机指纹
|
|
func GetRandomFingerprint() BrowserFingerprint {
|
|
return allFingerprints[rand.Intn(len(allFingerprints))]
|
|
}
|
|
|
|
// GetRandomDesktopFingerprint 获取随机桌面端指纹
|
|
func GetRandomDesktopFingerprint() BrowserFingerprint {
|
|
desktopFps := make([]BrowserFingerprint, 0)
|
|
for _, fp := range allFingerprints {
|
|
if !fp.Mobile {
|
|
desktopFps = append(desktopFps, fp)
|
|
}
|
|
}
|
|
if len(desktopFps) == 0 {
|
|
return allFingerprints[rand.Intn(len(allFingerprints))]
|
|
}
|
|
return desktopFps[rand.Intn(len(desktopFps))]
|
|
}
|
|
|
|
// GetTotalFingerprintCount 获取总指纹数量
|
|
func GetTotalFingerprintCount() int {
|
|
return len(allFingerprints)
|
|
}
|
|
|
|
// GetUniqueFingerprintCount 获取去重后的指纹数量
|
|
func GetUniqueFingerprintCount() int {
|
|
unique := make(map[string]bool)
|
|
for _, fp := range allFingerprints {
|
|
key := fp.Browser + fp.Version + fp.Platform
|
|
unique[key] = true
|
|
}
|
|
return len(unique)
|
|
}
|