polish: cookie header string parsing + Cookie-Editor guide + server user path
Key improvements: - twitter-cookies now accepts BOTH formats: 1. Full cookie header string from Cookie-Editor export 2. Two separate values (auth_token ct0) Automatically detects which format was pasted. - New docs/cookie-export.md guide for server users Recommends Cookie-Editor Chrome extension (one-click export) Fallback: manual F12 → Network → Cookie header - Install guide now has two clear paths: Path A (local): --from-browser chrome (one command, all cookies) Path B (server): Cookie-Editor extension export (30 sec per site) - Better error messages with accepted format examples
This commit is contained in:
parent
b264070a8d
commit
89b3eaf5da
3 changed files with 125 additions and 42 deletions
|
|
@ -309,11 +309,28 @@ def _cmd_configure(args):
|
|||
print(f"❌ Failed: {e}")
|
||||
|
||||
elif args.key == "twitter-cookies":
|
||||
# Expect: auth_token ct0
|
||||
parts = value.split()
|
||||
if len(parts) == 2:
|
||||
config.set("twitter_auth_token", parts[0])
|
||||
config.set("twitter_ct0", parts[1])
|
||||
# Accept two formats:
|
||||
# 1. auth_token ct0 (two separate values)
|
||||
# 2. Full cookie header string: "auth_token=xxx; ct0=yyy; ..."
|
||||
auth_token = None
|
||||
ct0 = None
|
||||
|
||||
if "auth_token=" in value and "ct0=" in value:
|
||||
# Full cookie string — parse it
|
||||
for part in value.replace(";", " ").split():
|
||||
if part.startswith("auth_token="):
|
||||
auth_token = part.split("=", 1)[1]
|
||||
elif part.startswith("ct0="):
|
||||
ct0 = part.split("=", 1)[1]
|
||||
elif len(value.split()) == 2 and "=" not in value:
|
||||
# Two separate values: AUTH_TOKEN CT0
|
||||
parts = value.split()
|
||||
auth_token = parts[0]
|
||||
ct0 = parts[1]
|
||||
|
||||
if auth_token and ct0:
|
||||
config.set("twitter_auth_token", auth_token)
|
||||
config.set("twitter_ct0", ct0)
|
||||
print(f"✅ Twitter cookies configured!")
|
||||
|
||||
print("Testing Twitter access...", end=" ")
|
||||
|
|
@ -321,7 +338,7 @@ def _cmd_configure(args):
|
|||
import subprocess
|
||||
result = subprocess.run(
|
||||
["birdx", "search", "test", "-n", "1",
|
||||
"--auth-token", parts[0], "--ct0", parts[1]],
|
||||
"--auth-token", auth_token, "--ct0", ct0],
|
||||
capture_output=True, text=True, timeout=15,
|
||||
)
|
||||
if result.returncode == 0 and result.stdout.strip():
|
||||
|
|
@ -333,8 +350,10 @@ def _cmd_configure(args):
|
|||
except Exception as e:
|
||||
print(f"❌ Failed: {e}")
|
||||
else:
|
||||
print("❌ Usage: agent-eyes configure twitter-cookies AUTH_TOKEN CT0")
|
||||
print(" (two values separated by space)")
|
||||
print("❌ Could not find auth_token and ct0 in your input.")
|
||||
print(" Accepted formats:")
|
||||
print(" 1. agent-eyes configure twitter-cookies AUTH_TOKEN CT0")
|
||||
print(' 2. agent-eyes configure twitter-cookies "auth_token=xxx; ct0=yyy; ..."')
|
||||
|
||||
elif args.key == "xhs-cookie":
|
||||
config.set("xhs_cookie", value)
|
||||
|
|
|
|||
42
docs/cookie-export.md
Normal file
42
docs/cookie-export.md
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
# Cookie Export Guide — For Server Users
|
||||
|
||||
Your Agent is on a server and can't access your browser directly.
|
||||
Here's how to export cookies from your local computer — **fastest method first**.
|
||||
|
||||
## Method 1: Cookie-Editor Extension (Recommended — 30 seconds per site)
|
||||
|
||||
1. Install **Cookie-Editor** for Chrome: https://chromewebstore.google.com/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm
|
||||
(Also available for Firefox, Edge)
|
||||
|
||||
2. Go to the website (e.g. https://x.com) and make sure you're logged in
|
||||
|
||||
3. Click the Cookie-Editor icon in your toolbar
|
||||
|
||||
4. Click **Export** → **Header String**
|
||||
|
||||
5. Paste the result to your Agent
|
||||
|
||||
That's it! Your Agent will run:
|
||||
```bash
|
||||
agent-eyes configure twitter-cookies <your_pasted_string>
|
||||
```
|
||||
|
||||
### Sites to export:
|
||||
|
||||
| Site | URL to visit | What to tell Agent |
|
||||
|------|-------------|-------------------|
|
||||
| Twitter/X | https://x.com | "Here are my Twitter cookies: [paste]" |
|
||||
| XiaoHongShu | https://www.xiaohongshu.com | "Here are my XHS cookies: [paste]" |
|
||||
| Bilibili | https://www.bilibili.com | "Here are my Bilibili cookies: [paste]" |
|
||||
|
||||
## Method 2: Manual (No extension needed)
|
||||
|
||||
1. Open the site in Chrome, make sure you're logged in
|
||||
2. Press **F12** (or right-click → Inspect)
|
||||
3. Click the **Network** tab
|
||||
4. Refresh the page (F5)
|
||||
5. Click any request in the list
|
||||
6. In the right panel, scroll to **Request Headers**
|
||||
7. Find the line starting with `Cookie:`
|
||||
8. Copy the entire value after `Cookie: `
|
||||
9. Paste to your Agent
|
||||
|
|
@ -12,56 +12,80 @@ Install Agent Eyes: https://raw.githubusercontent.com/Panniantong/agent-eyes/mai
|
|||
|
||||
## For AI Agents
|
||||
|
||||
Install Agent Eyes and set it up with minimal user effort.
|
||||
Install Agent Eyes with minimal user effort. Goal: fewest questions, fewest steps.
|
||||
|
||||
### Step 1: Install and check
|
||||
### Step 1: Install and detect
|
||||
|
||||
```bash
|
||||
pip install git+https://github.com/Panniantong/agent-eyes.git || pip3 install git+https://github.com/Panniantong/agent-eyes.git
|
||||
agent-eyes install --env=auto
|
||||
```
|
||||
|
||||
### Step 2: One-click cookie import (LOCAL COMPUTERS ONLY)
|
||||
Read the output. It tells you the detected environment (local/server) and what's already working.
|
||||
|
||||
If the environment was detected as **local**, offer to grab all cookies at once:
|
||||
### Step 2: Set up cookies (the approach depends on environment)
|
||||
|
||||
> "I can automatically import your cookies from Chrome to unlock Twitter, XiaoHongShu, and Bilibili — all at once, one command. Want me to do that?
|
||||
> (Make sure Chrome is closed first)"
|
||||
#### Path A: Local computer (auto-detected)
|
||||
|
||||
If yes:
|
||||
Offer one-click import:
|
||||
|
||||
> "I can grab your browser cookies automatically to unlock Twitter, XiaoHongShu, and Bilibili — all at once. Just close Chrome first, then say 'go'."
|
||||
|
||||
If user agrees:
|
||||
```bash
|
||||
pip install browser-cookie3
|
||||
agent-eyes configure --from-browser chrome
|
||||
pip install browser-cookie3 2>/dev/null; agent-eyes configure --from-browser chrome
|
||||
```
|
||||
|
||||
This extracts cookies for ALL supported platforms in one shot. No F12, no manual copying.
|
||||
If user uses another browser: replace `chrome` with `firefox`, `edge`, `brave`, or `opera`.
|
||||
|
||||
If user uses a different browser:
|
||||
If it fails or user declines, fall through to Path B.
|
||||
|
||||
#### Path B: Server, or auto-import didn't work
|
||||
|
||||
Tell the user the easiest manual method:
|
||||
|
||||
> "I need cookies from your browser to unlock some platforms. Here's the fastest way (30 seconds per site):
|
||||
>
|
||||
> 1. Install the **Cookie-Editor** Chrome extension: https://chromewebstore.google.com/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm
|
||||
> 2. Go to the site (e.g. x.com) — make sure you're logged in
|
||||
> 3. Click the Cookie-Editor icon → **Export** → **Header String**
|
||||
> 4. Paste the result to me
|
||||
>
|
||||
> Which platforms do you use? I'll tell you which ones to export."
|
||||
|
||||
For each platform the user wants:
|
||||
|
||||
**Twitter/X** — export from https://x.com :
|
||||
```bash
|
||||
agent-eyes configure --from-browser firefox # or edge, brave, opera
|
||||
agent-eyes configure twitter-cookies "PASTED_COOKIE_STRING"
|
||||
```
|
||||
(Accepts both: full cookie string OR just `auth_token ct0` as two values)
|
||||
|
||||
**XiaoHongShu** — export from https://www.xiaohongshu.com :
|
||||
```bash
|
||||
agent-eyes configure xhs-cookie "PASTED_COOKIE_STRING"
|
||||
```
|
||||
|
||||
If the environment is **server** or the user declines, skip to Step 3.
|
||||
**Bilibili** — export from https://www.bilibili.com :
|
||||
(On local computers Bilibili already works without cookies. On servers it needs a proxy — see Step 4.)
|
||||
|
||||
### Step 3: Offer search upgrade
|
||||
### Step 3: Set up search
|
||||
|
||||
> "Want to unlock web search? One free API key lets me search the entire web, Reddit, and Twitter.
|
||||
> → Go to https://exa.ai → sign up (free) → send me the API key.
|
||||
> Or say 'skip'."
|
||||
> "Want to unlock web search? One free API key lets me search the web, Reddit, and Twitter.
|
||||
> Go to https://exa.ai → sign up (free, 1000 searches/month) → send me the key.
|
||||
> Or say 'skip' — everything else still works."
|
||||
|
||||
If user provides key:
|
||||
```bash
|
||||
agent-eyes configure exa-key THE_KEY
|
||||
```
|
||||
|
||||
### Step 4: Server-only — offer proxy
|
||||
### Step 4: Server-only — proxy for Reddit/Bilibili
|
||||
|
||||
Only if auto-detected as server:
|
||||
Only mention if environment was detected as server:
|
||||
|
||||
> "Reddit and Bilibili block server IPs. Reddit search still works free via Exa, but for full access you'd need a cheap proxy ($1/month).
|
||||
> → Get one at https://webshare.io if interested. Or skip — search still works!"
|
||||
> "On servers, Reddit and Bilibili block direct access. Reddit *search* still works via Exa (free), but for reading full Reddit posts or using Bilibili, you'd need a residential proxy (~$1/month).
|
||||
> Get one at https://webshare.io if you want. Or skip — not required."
|
||||
|
||||
If user provides proxy:
|
||||
```bash
|
||||
agent-eyes configure proxy http://user:pass@ip:port
|
||||
```
|
||||
|
|
@ -72,24 +96,22 @@ agent-eyes configure proxy http://user:pass@ip:port
|
|||
agent-eyes doctor
|
||||
```
|
||||
|
||||
> "✅ All set! [list what's active]. Try asking me to search or read something!"
|
||||
> "✅ All set! [list active channels]. Try: 'search Reddit for ...' or 'read this URL'"
|
||||
|
||||
**Users can always configure more later** by saying things like "set up Twitter for Agent Eyes" or "add my XiaoHongShu cookies".
|
||||
Users can configure more channels anytime — just say "set up Twitter" or "add proxy".
|
||||
|
||||
---
|
||||
|
||||
## Manual configure (one channel at a time)
|
||||
|
||||
These commands are for manual setup or adding individual channels later:
|
||||
## Quick Reference
|
||||
|
||||
| Command | What it does |
|
||||
|---------|-------------|
|
||||
| `agent-eyes configure --from-browser chrome` | Import ALL cookies at once |
|
||||
| `agent-eyes configure --from-browser chrome` | Auto-import ALL cookies at once (local only) |
|
||||
| `agent-eyes configure exa-key KEY` | Unlock search (web + Reddit + Twitter) |
|
||||
| `agent-eyes configure twitter-cookies TOKEN CT0` | Twitter deep search (manual) |
|
||||
| `agent-eyes configure xhs-cookie COOKIE` | XiaoHongShu (manual) |
|
||||
| `agent-eyes configure youtube-cookies chrome` | Age-restricted YouTube |
|
||||
| `agent-eyes configure proxy URL` | Reddit + Bilibili on servers |
|
||||
| `agent-eyes doctor` | Show all channels and status |
|
||||
| `agent-eyes configure twitter-cookies "COOKIE_STRING"` | Unlock Twitter (cookie string or auth_token + ct0) |
|
||||
| `agent-eyes configure xhs-cookie "COOKIE_STRING"` | Unlock XiaoHongShu |
|
||||
| `agent-eyes configure youtube-cookies chrome` | Unlock age-restricted YouTube |
|
||||
| `agent-eyes configure proxy URL` | Unlock Reddit reader + Bilibili (server) |
|
||||
| `agent-eyes doctor` | Show all channels and their status |
|
||||
| `agent-eyes read URL` | Read any URL |
|
||||
| `agent-eyes search "query"` | Search the web |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue