auth-manager
npx skills add https://github.com/aaaaqwq/claude-code-skills --skill auth-manager
Agent 安装分布
Skill 文档
Auth Manager v3.1 â å¹³å°ç»å½æç®¡ç
åºäº fast-browser-use (fbu)ï¼ä½¿ç¨
--user-data-dirä¿å宿´ Chrome profileï¼cookies + localStorage + IndexedDBï¼ã
ç¯å¢é ç½®ï¼å¿ é¡»ï¼
fbu äºè¿å¶å¨ ~/.cargo/bin/ï¼æ¯æ¬¡æ§è¡åå¿
须设置ï¼
export PATH="$HOME/.cargo/bin:$PATH"
export CHROME_PATH=/usr/bin/google-chrome
export DISPLAY=:1 # æ¡é¢æ¾ç¤ºï¼headless false æ¶å¿
é¡»
æ ¸å¿èè´£
èè´£ 1: æ£æ¥å·²ä¿å profile å¯ç¨æ§
宿坹 auth-platforms.json 䏿æ enabled: true 平尿§è¡ snapshot æ£æ¥ï¼
# å¿
é¡»ç¨ timeout å
裹ï¼é²æ¢ Chrome æ®ç
timeout --kill-after=5 60 fast-browser-use snapshot \
--url "<check_url>" \
--user-data-dir ~/.openclaw/chrome-profiles/<platform> || true
pkill -f "chrome.*--remote-debugging" 2>/dev/null || true
å¤å®é»è¾ï¼
- DOM å
å«
logged_in_indicatorså ³é®è¯ â âactive - DOM å
å«
login_page_indicatorså ³é®è¯ â âexpired - é½ä¸å¹é
â â ï¸
uncertain - å½ä»¤å¤±è´¥ â ð´
error
Cloudflare ç«ç¹ï¼å¦ linux.doï¼headless 模å¼ä¼è¢«æ¦æªï¼éå --headless falseï¼
timeout --kill-after=5 90 fast-browser-use snapshot \
--url "https://linux.do" \
--user-data-dir ~/.openclaw/chrome-profiles/linuxdo \
--headless false || true
pkill -f "chrome.*--remote-debugging" 2>/dev/null || true
ç»æåå
¥ ~/.openclaw/auth-session-state.jsonï¼è¿æ/å¼å¸¸æ¶æ¨éåè¦ã
èè´£ 2: æ°å¹³å°ææ â èªå¨ä¿å profile
å½ç¨æ·ä½¿ç¨ fbu æææ°å¹³å°æ¶ï¼æ§è¡ä»¥ä¸å®æ´æµç¨ï¼
æ¥éª¤ 1: å建 profile ç®å½
mkdir -p ~/.openclaw/chrome-profiles/<platform>
æ¥éª¤ 2: æå¼æ¡é¢æµè§å¨è®©ç¨æ·ç»å½
fast-browser-use login \
--url "https://platform.com/login" \
--headless false \
--user-data-dir ~/.openclaw/chrome-profiles/<platform> \
--save-session ~/.openclaw/chrome-profiles/<platform>-session.json
å ³é®åæ°è¯´æï¼
--headless falseâ å¿ é¡»ï¼å¨æ¡é¢æå¼å¯è§ Chrome çªå£--save-sessionâ å¿ å¡«åæ°ï¼fbu login è¦æ±ï¼ï¼å³ä½¿ä¸»è¦é user-data-dir ä¿åç¶æ--user-data-dirâ ä¿å宿´ Chrome profile- æµè§å¨æå¼åç»ç«¯æ¾ç¤º “Press Enter after you have logged in…”
- ç¨æ·ç»å½å®æåï¼agent åè¿ç¨åå ¥æ¢è¡ç¬¦ï¼Enterï¼è§¦åä¿å
æ¥éª¤ 3: ç¨æ·ç¡®è®¤ç»å½ååé Enter
# ä½¿ç¨ process write å fbu è¿ç¨åé Enter
process.write(sessionId, "\n")
æ¥éª¤ 4: éªè¯ç»å½æ
fast-browser-use snapshot \
--url "<check_url>" \
--user-data-dir ~/.openclaw/chrome-profiles/<platform>
æ£æ¥ DOM è¾åºæ¯å¦å å«ç»å½æå ³é®è¯ï¼ç¨æ·åãä½é¢ãdashboard çï¼ã
æ¥éª¤ 5: æ´æ°é ç½®æä»¶
å°æ°å¹³å°æ·»å å° auth-platforms.jsonï¼å
æ¬ check_urlãlogin_urlãindicators çã
æ¥éª¤ 6: æ´æ°ç¶ææä»¶
åå
¥ auth-session-state.jsonã
æä»¶ç»æ
~/.openclaw/chrome-profiles/<platform>/ # fbu Chrome profileï¼å®æ´ç¶æï¼
~/.openclaw/auth-platforms.json # å¹³å°é
ç½®
~/.openclaw/auth-session-state.json # æ£æ¥ç»æç¶æ
å¹³å°é ç½®æ ¼å¼
~/.openclaw/auth-platforms.json:
{
"platforms": {
"platform_id": {
"name": "æ¾ç¤ºåç§°",
"profile_dir": "~/.openclaw/chrome-profiles/platform_id",
"check_url": "https://example.com/dashboard",
"login_url": "https://example.com/login",
"logged_in_indicators": ["å
³é®è¯1", "å
³é®è¯2"],
"login_page_indicators": ["ç»å½", "Sign in"],
"enabled": true,
"credentials": {
"username": "user@example.com",
"password": "xxx"
},
"login_method": "github_oauth"
}
}
}
å¯éåæ®µè¯´æ
- credentialsï¼æè´¦å¯çå¹³å°å¯åå¨åæ®ï¼profile è¿ææ¶ agent å¯ç¨ fbu navigate èªå¨å¡«å表åéæ°ç»å½
- login_methodï¼ç»å½æ¹å¼è¯´æï¼å¦
github_oauthãqrcodeãpasswordï¼ï¼å¸®å© agent 夿æ¯å¦è½èªå¨ç»å½
æ¹éæ£æ¥
éåææ enabled å¹³å°ï¼ç¨ grep å¹é å ³é®è¯å¿«éå¤å®ï¼
# æ¹éæ£æ¥ç¤ºä¾ï¼ç¨ grep å¹é
å
³é®è¯ï¼
for platform in polymarket aixn xingjiabiapi github douyin xiaohongshu linuxdo; do
echo "=== $platform ==="
fast-browser-use snapshot \
--url "$(jq -r ".platforms.$platform.check_url" ~/.openclaw/auth-platforms.json)" \
--user-data-dir ~/.openclaw/chrome-profiles/$platform 2>&1 \
| grep -E "å
³é®è¯" | head -5
done
å·²ç¥å¹³å°ç¹æ§
| å¹³å° | ç»å½æ¹å¼ | Headless | 夿³¨ |
|---|---|---|---|
| Polymarket | é±å /OAuth | â | æ£æ¥”èµäº§ç»å”å ³é®è¯ |
| AIXN (XAPI) | è´¦å¯ | â | æ credentialsï¼å¯èªå¨ç»å½ |
| æ§ä»·æ¯API | GitHub OAuth | â | éå æ GitHub ç»å½æ |
| GitHub | è´¦å¯ | â | æ£æ¥ Settings é¡µé¢ |
| æé³åä½è | æ«ç | â | å¿ é¡»ç¨æ·æå¨æ«ç |
| å°çº¢ä¹¦åä½è | æ«ç | â | å¿ é¡»ç¨æ·æå¨æ«ç |
| Linux Do | è´¦å¯/OAuth | â é headless false | Cloudflare æ¦æª headless |
| X (Twitter) | è´¦å¯ | â | å¯è½æéªè¯ç |
ç¶ææä»¶æ ¼å¼
~/.openclaw/auth-session-state.json:
{
"platforms": {
"polymarket": {
"status": "active",
"message": "ç»å½æ£å¸¸ â
(åç°: èµäº§ç»å $6.02)",
"checkedAt": 1740000000
}
},
"lastCheck": 1740000000
}
status å¼: active | expired | uncertain | error
Cron ä»»å¡
å·²é
ç½®å®æèªå¨æ£æ¥ï¼cron id: 1f2eb5a5-5c2e-4556-b006-e29325f41609ï¼ï¼è¿æåæ¨éåè¦ã
注æäºé¡¹
- fbu login å¿
å¡«åæ°ï¼
--urlã--headlessã--user-data-dirã--save-sessionå个缺ä¸ä¸å¯ - Profile éï¼
--user-data-dirä¼éå® profileï¼åä¸ profile ä¸è½è¢«å¤ä¸ª Chrome å®ä¾åæ¶ä½¿ç¨ - Cloudflare ç«ç¹ï¼headless è¢«æ¦æªæ¶ç¨
--headless falseï¼ä½ snapshot ç--headlessåæ°éè¦æ¾å¼ä¼false - OAuth ç»å½ï¼GitHub OAuth çï¼ï¼æ° profile éæ²¡æç¬¬ä¸æ¹ç»å½æï¼éè¦ç¨æ·å¨å¼¹åºé¡µé¢ç»å½ç¬¬ä¸æ¹è´¦å·
- æ«ç ç»å½ï¼æé³ãå°çº¢ä¹¦ï¼ï¼å¿ é¡»ç¨æ·æå¨æä½ï¼agent æ æ³èªå¨å®æ
- snapshot éªè¯ï¼æ°å¹³å°ææåå¡å¿ snapshot éªè¯ä¸æ¬¡ï¼ç¡®è®¤ profile å·²æ£ç¡®ä¿å
- è¶ æ¶è®¾ç½®ï¼fbu login å¯è½éè¦è¾é¿æ¶é´ï¼ç¨æ·æä½ï¼ï¼exec timeout 建议 ⥠300s