Safe Profile Identification
Relevant source files
The following files were used as context for generating this wiki page:GeekezBrowser employs a "Safe Identification" strategy to display the current profile's name within the browser instance. This method is designed to be stealthy and avoid common detection vectors used by anti-fraud systems. Instead of relying on easily detectable JavaScript injections to modify the document or window title, GeekezBrowser utilizes the browser's native Bookmarks Bar.
This approach aligns with the project's core philosophy of "Native Consistency," ensuring that the browser environment appears as standard as possible to bypass advanced detectors. The profile name is made visible to the user for management purposes without introducing automation-related red flags.
Sources: README.md, README_zh.md
The Problem with document.title Injection
Many multi-account browsers identify profiles by dynamically changing the browser window's title using JavaScript (e.g., document.title = 'Profile-1'). This practice is considered dangerous for several reasons:
- High Detectability: Websites can easily monitor changes to
document.title. Frequent or unusual modifications are a strong indicator of an automated or manipulated browser environment. - Automation Fingerprint: This technique is a well-known characteristic of automation tools and is actively flagged by systems like Cloudflare.
- Inconsistency: The injected title may not match the title set by the webpage, creating a discrepancy that can be used for fingerprinting.
GeekezBrowser explicitly avoids this method to maintain a lower risk profile.
Sources: README.md, README_zh.md
The Bookmarks Bar Solution
To safely display the profile name, GeekezBrowser programmatically creates a bookmark on the Bookmarks Bar for each launched profile. This is a native browser feature and is not considered an anomaly by detection systems.
Backend Implementation
The core logic resides in the launch-profile IPC handler within main.js. When a profile is launched, the system performs two key actions to set up the identification marker.
Sources: main.js:470-589
1. Bookmarks File Generation
A Bookmarks file is created or overwritten in the profile's Default directory. This JSON file contains a predefined structure that adds a single bookmark to the bookmark bar. The name of this bookmark is set to 🔍 {profile.name}.
The following diagram illustrates the data structure written to the Bookmarks file.
This diagram shows the JSON structure for the generated bookmark.
The code responsible for creating this structure is:
// main.js:510-512
const bookmarkData = { "checksum": "0", "roots": { "bookmark_bar": { "children": [{ "date_added": "13245678900000000", "guid": uuidv4(), "id": "1", "name": `🔍 ${profile.name}`, "type": "url", "url": "chrome://newtab/" }], "date_added": "13245678900000000", "date_modified": "0", "id": "1", "name": "Bookmarks Bar", "type": "folder" }, /* ... other roots ... */ }, "version": 1 };
await fs.writeJson(bookmarksPath, bookmarkData);
Sources: main.js:510-513
2. Ensuring Bookmark Bar Visibility
To ensure the bookmark is always visible, the system also modifies the Preferences file within the profile's Default directory. It sets the bookmark_bar.show_on_all_tabs property to true.
// main.js:501-502
if (!preferences.bookmark_bar) preferences.bookmark_bar = {};
preferences.bookmark_bar.show_on_all_tabs = true;
Sources: main.js:501-502
Profile Launch and Identification Flow
The sequence diagram below details the steps taken from the moment a user clicks "Launch" to the browser opening with the safe profile identifier.
This diagram shows the sequence of events for launching a profile and displaying its name in the bookmark bar.
Sources: main.js:470-589, renderer.js:614-618
Comparison of Identification Methods
The table below contrasts the traditional, unsafe method with GeekezBrowser's safe implementation.
| Feature | Unsafe Method (document.title) | Safe Method (Bookmarks Bar) |
|---|---|---|
| Mechanism | JavaScript injection to modify DOM. | File system operation to create a native bookmark. |
| Detectability | High. Easily detected by monitoring DOM properties. | Very Low. Appears as normal user configuration. |
| Risk Profile | High. A common red flag for anti-fraud systems. | Low. Leverages a standard browser feature. |
| Implementation | document.title = '...'; | Generate Bookmarks and Preferences JSON files. |
| Source | N/A (Method is actively avoided) | main.js:496-513 |
Conclusion
The Safe Profile Identification feature is a critical component of GeekezBrowser's stealth strategy. By leveraging the native Bookmarks Bar instead of detectable JavaScript injections, it allows users to easily identify and manage their profiles without increasing the risk of detection. This "Native Consistency" approach demonstrates a sophisticated understanding of browser fingerprinting and provides a more robust and secure solution for multi-account management.
Sources: README.md, README_zh.md, main.js