feat: wire V2 architecture into CLI entry point (#540)

* feat: wire V2 architecture into CLI entry point
* fix: warn and exit early when no browsers found
This commit is contained in:
Roger
2026-04-04 14:11:08 +08:00
committed by GitHub
parent 00ad0e0bd4
commit 0ace27ce9a
6 changed files with 515 additions and 365 deletions
+79 -95
View File
@@ -6,113 +6,97 @@ import (
"github.com/moond4rk/hackbrowserdata/types"
)
var (
chromiumList = map[string]struct {
name string
profilePath string
storage string
dataTypes []types.DataType
}{
"chrome": {
name: chromeName,
profilePath: chromeUserDataPath,
dataTypes: types.DefaultChromiumTypes,
func platformBrowsers() []types.BrowserConfig {
return []types.BrowserConfig{
{
Key: "chrome",
Name: chromeName,
Kind: types.KindChromium,
UserDataDir: homeDir + "/AppData/Local/Google/Chrome/User Data",
},
"edge": {
name: edgeName,
profilePath: edgeProfilePath,
dataTypes: types.DefaultChromiumTypes,
{
Key: "edge",
Name: edgeName,
Kind: types.KindChromium,
UserDataDir: homeDir + "/AppData/Local/Microsoft/Edge/User Data",
},
"chromium": {
name: chromiumName,
profilePath: chromiumUserDataPath,
dataTypes: types.DefaultChromiumTypes,
{
Key: "chromium",
Name: chromiumName,
Kind: types.KindChromium,
UserDataDir: homeDir + "/AppData/Local/Chromium/User Data",
},
"chrome-beta": {
name: chromeBetaName,
profilePath: chromeBetaUserDataPath,
dataTypes: types.DefaultChromiumTypes,
{
Key: "chrome-beta",
Name: chromeBetaName,
Kind: types.KindChromium,
UserDataDir: homeDir + "/AppData/Local/Google/Chrome Beta/User Data",
},
"opera": {
name: operaName,
profilePath: operaProfilePath,
dataTypes: types.DefaultChromiumTypes,
{
Key: "opera",
Name: operaName,
Kind: types.KindChromiumOpera,
UserDataDir: homeDir + "/AppData/Roaming/Opera Software/Opera Stable",
},
"opera-gx": {
name: operaGXName,
profilePath: operaGXProfilePath,
dataTypes: types.DefaultChromiumTypes,
{
Key: "opera-gx",
Name: operaGXName,
Kind: types.KindChromiumOpera,
UserDataDir: homeDir + "/AppData/Roaming/Opera Software/Opera GX Stable",
},
"vivaldi": {
name: vivaldiName,
profilePath: vivaldiProfilePath,
dataTypes: types.DefaultChromiumTypes,
{
Key: "vivaldi",
Name: vivaldiName,
Kind: types.KindChromium,
UserDataDir: homeDir + "/AppData/Local/Vivaldi/User Data",
},
"coccoc": {
name: coccocName,
profilePath: coccocProfilePath,
dataTypes: types.DefaultChromiumTypes,
{
Key: "coccoc",
Name: coccocName,
Kind: types.KindChromium,
UserDataDir: homeDir + "/AppData/Local/CocCoc/Browser/User Data",
},
"brave": {
name: braveName,
profilePath: braveProfilePath,
dataTypes: types.DefaultChromiumTypes,
{
Key: "brave",
Name: braveName,
Kind: types.KindChromium,
UserDataDir: homeDir + "/AppData/Local/BraveSoftware/Brave-Browser/User Data",
},
"yandex": {
name: yandexName,
profilePath: yandexProfilePath,
dataTypes: types.DefaultYandexTypes,
{
Key: "yandex",
Name: yandexName,
Kind: types.KindChromiumYandex,
UserDataDir: homeDir + "/AppData/Local/Yandex/YandexBrowser/User Data",
},
"360": {
name: speed360Name,
profilePath: speed360ProfilePath,
dataTypes: types.DefaultChromiumTypes,
{
Key: "360",
Name: speed360Name,
Kind: types.KindChromium,
UserDataDir: homeDir + "/AppData/Local/360chrome/Chrome/User Data",
},
"qq": {
name: qqBrowserName,
profilePath: qqBrowserProfilePath,
dataTypes: types.DefaultChromiumTypes,
{
Key: "qq",
Name: qqBrowserName,
Kind: types.KindChromium,
UserDataDir: homeDir + "/AppData/Local/Tencent/QQBrowser/User Data",
},
"dc": {
name: dcBrowserName,
profilePath: dcBrowserProfilePath,
dataTypes: types.DefaultChromiumTypes,
{
Key: "dc",
Name: dcBrowserName,
Kind: types.KindChromium,
UserDataDir: homeDir + "/AppData/Local/DCBrowser/User Data",
},
"sogou": {
name: sogouName,
profilePath: sogouProfilePath,
dataTypes: types.DefaultChromiumTypes,
{
Key: "sogou",
Name: sogouName,
Kind: types.KindChromium,
UserDataDir: homeDir + "/AppData/Roaming/SogouExplorer/Webkit",
},
{
Key: "firefox",
Name: firefoxName,
Kind: types.KindFirefox,
UserDataDir: homeDir + "/AppData/Roaming/Mozilla/Firefox/Profiles",
},
}
firefoxList = map[string]struct {
name string
storage string
profilePath string
dataTypes []types.DataType
}{
"firefox": {
name: firefoxName,
profilePath: firefoxProfilePath,
dataTypes: types.DefaultFirefoxTypes,
},
}
)
var (
chromeUserDataPath = homeDir + "/AppData/Local/Google/Chrome/User Data/Default/"
chromeBetaUserDataPath = homeDir + "/AppData/Local/Google/Chrome Beta/User Data/Default/"
chromiumUserDataPath = homeDir + "/AppData/Local/Chromium/User Data/Default/"
edgeProfilePath = homeDir + "/AppData/Local/Microsoft/Edge/User Data/Default/"
braveProfilePath = homeDir + "/AppData/Local/BraveSoftware/Brave-Browser/User Data/Default/"
speed360ProfilePath = homeDir + "/AppData/Local/360chrome/Chrome/User Data/Default/"
qqBrowserProfilePath = homeDir + "/AppData/Local/Tencent/QQBrowser/User Data/Default/"
operaProfilePath = homeDir + "/AppData/Roaming/Opera Software/Opera Stable/"
operaGXProfilePath = homeDir + "/AppData/Roaming/Opera Software/Opera GX Stable/"
vivaldiProfilePath = homeDir + "/AppData/Local/Vivaldi/User Data/Default/"
coccocProfilePath = homeDir + "/AppData/Local/CocCoc/Browser/User Data/Default/"
yandexProfilePath = homeDir + "/AppData/Local/Yandex/YandexBrowser/User Data/Default/"
dcBrowserProfilePath = homeDir + "/AppData/Local/DCBrowser/User Data/Default/"
sogouProfilePath = homeDir + "/AppData/Roaming/SogouExplorer/Webkit/Default/"
firefoxProfilePath = homeDir + "/AppData/Roaming/Mozilla/Firefox/Profiles/"
)
}