reactive-resume
amruthpillai
A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever. Try it out today!
antibrow/dsh-antibrow
DeepSeek Harness plugin: give your agent a browser with a persistent identity - engine-level fingerprint spoofing, unlimited free local profiles, Android device emulation, passkeys that survive, and residential proxy egress.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:antibrow/dsh-antibrow
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
A DeepSeek Harness plugin that gives the agent a browser with an identity.
dsh plugin --profile <name> add dsh-antibrow
Every other browser plugin hands the agent a fresh Chromium. That is fine for reading a public page and useless for anything behind a login: the session dies with the process, the fingerprint is a stock automation build, and the traffic leaves from your machine.
| A plain Playwright plugin | dsh-antibrow | |
|---|---|---|
| Identity between runs | new browser every time | one persistent profile per name |
| Logins | gone when the process ends | cookies and passkeys persist, optionally synced across machines |
| Fingerprint | stock build, patched from page scripts | spoofed inside the engine, before any page script runs |
| Egress | your own IP | residential proxy, with timezone, language and reported connection following its exit |
| Parallel identities | one data directory to share | one isolated profile per agent or per account |
| Tabs | start from nothing | last session restored, so the agent resumes where it stopped |
The difference shows up the first time an agent has to be someone: check a mailbox, watch a dashboard, keep a marketplace account warm. A browser with no memory has to log in again on every run, and logging in again is exactly what a site treats as suspicious.
mcp__antibrow__*, all reachable from Code Mode as ordinary
async calls.deviceType: 'android' - and the agent is a phone: touch points, mobile client hints,
phone viewport, phone GPU. See below.start_live_view streams the agent's browser to a
dashboard, so a long unattended run is something you can look at instead of
guess about.{ "profile": "shop-mobile", "deviceType": "android", "temporary": true }
Android profiles are built from whole captured devices - the screen, the GPU report and the client hints agree with each other because they came off the same physical phone, and the plugin picks a row rather than assembling one. Three of them ship inside the package, so a free-tier agent can create an Android profile with no network round trip at all.
The device type is fixed when the profile is created and never drifts afterwards: a profile that was a phone stays that phone. Android needs engine 151 or newer - if none is available the launch fails rather than quietly handing you a desktop browser that claims to be a phone.
On a macOS host, through a US residential proxy, 2026-08-15, engine 151:
| Check | Result |
|---|---|
| whoer.net disguise | 90% |
| creepjs headless signal | 0% |
| creepjs stealth signal | 0% |
| creepjs platform hints | Arial, "Segoe UI" - no font from the host |
| Reported platform vs user agent | agree (Win32 / Windows) |
| Timezone vs proxy exit | agree (America/Los_Angeles) |
The 10% whoer deducts is WebRTC, which had no route to a STUN server on that
run. Reproduce all of it with tests/smoke - the harness is in this repository,
and it fails loudly rather than printing a number nobody checks.
dsh plugin --profile <name> add dsh-antibrow
export ANTI_DETECT_BROWSER_KEY=<key>
dsh --profile <name>
| Sessions | launch_browser close_browser list_sessions |
| Profiles | list_profiles create_profile delete_profile |
| Proxies | list_proxies claim_proxy |
| Page | navigate click fill evaluate get_content screenshot |
| Live view | start_live_view stop_live_view |
launch_browser takes a profile name and creates it on first use. Pass
temporary: true for automation work: those profiles are local-only and stay
out of the desktop app's list, while still persisting on disk.
launch_browser of a fresh install
pays for that; later ones do not.The bundle inserts one row, mcp-antibrow, configuring the harness's MCP client
against the anti-detect-browser CLI. Override it from your profile's own
cordis.patch.yml by targeting that id - a patch replaces the row's whole
config, so restate every key you keep:
- id: mcp-antibrow
config:
serverName: antibrow
transport: stdio
command: npx
args: ['-y', 'anti-detect-browser@^2.19.1', '--mcp']
env:
ANTI_DETECT_BROWSER_KEY: !!js process.env.MY_OWN_VAR
ANTI_DETECT_BROWSER_CACHE_DIR: /var/lib/antibrow
Turn it off without uninstalling:
- id: mcp-antibrow
disabled: true
To run the SDK from a checkout instead of npm, use the overlay this package ships:
export ANTIBROW_SDK_CLI=<checkout>/dist/cli.js
dsh --profile <name> --patch node_modules/dsh-antibrow/cordis.patch.local.yml
Verified against dsh 0.1.0-rc.6 and anti-detect-browser 2.19.1, 2026-08-15.
DeepSeek Harness is a developer preview and says it will break compatibility;
this line is the claim, and it rots without a re-test.
The SDK version floor is real: 2.19.1 is the first release whose close path ends the browser process instead of only dropping the debugging connection. On an older one a closed session leaves the browser running, which keeps that profile's directory locked - the next launch of it dies before the debugging connection is ready - and holds a concurrency slot for the rest of the run.
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: mcp、mcp-server。