- DoWithTLS 签名变更:(bool/profile) → (TLSMode, profile) - 所有调用方传入 account.GetTLSMode() 以支持 node/utls/off 三模式 - gateway_service.go、gemini_messages_compat、forward_as_* 全部更新 - claude_usage_service 的 ClaudeUsageFetchOptions 新增 TLSMode 字段 - 新增 decompressResponseBody(gzip/brotli/deflate)到 http_upstream.go - 新增 antigravity_privacy_service.go(setAntigravityPrivacy) - admin_service 新增 ForceOpenAIPrivacy/EnsureAntigravityPrivacy/ForceAntigravityPrivacy - antigravity.Client 新增 SetUserSettings/FetchUserInfo API
100 lines
3.6 KiB
Bash
Executable File
100 lines
3.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# ─────────────────────────────────────────────────────────────
|
|
# run.sh - One-command capture for Claude Code / Antigravity
|
|
#
|
|
# Usage:
|
|
# ./run.sh # Start both mitmproxy + tshark
|
|
# ./run.sh mitm # mitmproxy only (HTTP layer)
|
|
# ./run.sh tls # tshark only (TLS layer)
|
|
# ./run.sh tls en0 # tshark on specific interface
|
|
# ─────────────────────────────────────────────────────────────
|
|
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")"
|
|
|
|
MODE="${1:-both}"
|
|
IFACE="${2:-en0}"
|
|
|
|
# Check dependencies
|
|
check_dep() {
|
|
if ! command -v "$1" &>/dev/null; then
|
|
echo "ERROR: $1 not found. Install with: $2"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
mkdir -p ./captures
|
|
|
|
case "$MODE" in
|
|
mitm|mitmproxy)
|
|
check_dep mitmproxy "brew install mitmproxy"
|
|
echo ""
|
|
echo "Starting mitmproxy on :8080"
|
|
echo ""
|
|
echo "To capture Claude Code traffic:"
|
|
echo " HTTPS_PROXY=http://127.0.0.1:8080 claude login"
|
|
echo " HTTPS_PROXY=http://127.0.0.1:8080 claude 'hello'"
|
|
echo ""
|
|
echo "To capture VS Code / Antigravity traffic:"
|
|
echo " HTTPS_PROXY=http://127.0.0.1:8080 code ."
|
|
echo ""
|
|
mitmdump -s capture_traffic.py \
|
|
--set stream_large_bodies=10m \
|
|
--set console_eventlog_verbosity=warn \
|
|
-p 8080
|
|
;;
|
|
|
|
tls|tshark)
|
|
check_dep tshark "brew install wireshark"
|
|
echo "Starting TLS capture (requires sudo)..."
|
|
sudo bash ./capture_tls.sh "$IFACE" 120
|
|
;;
|
|
|
|
both)
|
|
check_dep mitmproxy "brew install mitmproxy"
|
|
check_dep tshark "brew install wireshark"
|
|
|
|
echo ""
|
|
echo "═══════════════════════════════════════════════"
|
|
echo " MiniGravity Traffic Capture"
|
|
echo "═══════════════════════════════════════════════"
|
|
echo ""
|
|
echo " Starting two capture layers:"
|
|
echo " 1. mitmproxy (:8080) → HTTP headers/body"
|
|
echo " 2. tshark → TLS fingerprints"
|
|
echo ""
|
|
echo " Step 1: In another terminal, run:"
|
|
echo " HTTPS_PROXY=http://127.0.0.1:8080 claude login"
|
|
echo ""
|
|
echo " Step 2: After login, run:"
|
|
echo " HTTPS_PROXY=http://127.0.0.1:8080 claude 'hello'"
|
|
echo ""
|
|
echo " Step 3: Press Ctrl+C here when done"
|
|
echo "═══════════════════════════════════════════════"
|
|
echo ""
|
|
|
|
# Start tshark in background (needs sudo)
|
|
echo "[*] Starting tshark (may ask for sudo password)..."
|
|
sudo bash ./capture_tls.sh "$IFACE" 300 &
|
|
TSHARK_PID=$!
|
|
|
|
sleep 2
|
|
|
|
# Start mitmproxy in foreground
|
|
echo "[*] Starting mitmproxy..."
|
|
mitmdump -s capture_traffic.py \
|
|
--set stream_large_bodies=10m \
|
|
--set console_eventlog_verbosity=warn \
|
|
-p 8080
|
|
|
|
# Cleanup tshark on exit
|
|
sudo kill "$TSHARK_PID" 2>/dev/null || true
|
|
wait "$TSHARK_PID" 2>/dev/null || true
|
|
;;
|
|
|
|
*)
|
|
echo "Usage: $0 [mitm|tls|both] [interface]"
|
|
exit 1
|
|
;;
|
|
esac
|