110 lines
4.0 KiB
Bash
Executable File
110 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# Browser Setup for James
|
|
# Chrome for logins → Headless Chromium for automation
|
|
|
|
CHROME_PROFILE="/tmp/james-chrome"
|
|
HEADLESS_PROFILE="/tmp/james-headless"
|
|
HEADED_PORT=9222
|
|
HEADLESS_PORT=9223
|
|
CHROMIUM_BIN="/home/johan/.cache/ms-playwright/chromium-1208/chrome-linux64/chrome"
|
|
|
|
case "$1" in
|
|
start-login)
|
|
# Start headed Chrome for manual login
|
|
echo "Starting Chrome for login on port $HEADED_PORT..."
|
|
rm -f "$CHROME_PROFILE/Singleton"*
|
|
google-chrome \
|
|
--remote-debugging-port=$HEADED_PORT \
|
|
--user-data-dir="$CHROME_PROFILE" \
|
|
--no-first-run \
|
|
--password-store=basic \
|
|
about:blank &
|
|
echo "Chrome started. Log into the sites you need, then run: $0 sync"
|
|
;;
|
|
|
|
sync)
|
|
# Sync cookies from headed Chrome to headless profile
|
|
# IMPORTANT: Chrome must be CLOSED first!
|
|
|
|
if pgrep -f "remote-debugging-port=$HEADED_PORT" > /dev/null; then
|
|
echo "⚠️ Chrome is still running on port $HEADED_PORT!"
|
|
echo "Close Chrome first (Ctrl+Q or close the window), then run sync again."
|
|
echo "Copying a live profile will invalidate sessions!"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Syncing profile from Chrome to headless..."
|
|
|
|
# Kill any existing headless browser
|
|
pkill -f "remote-debugging-port=$HEADLESS_PORT" 2>/dev/null
|
|
sleep 1
|
|
|
|
# Copy the profile
|
|
rm -rf "$HEADLESS_PROFILE"
|
|
cp -r "$CHROME_PROFILE" "$HEADLESS_PROFILE"
|
|
rm -f "$HEADLESS_PROFILE/Singleton"*
|
|
|
|
echo "✓ Profile synced! Run: $0 start-headless"
|
|
;;
|
|
|
|
start-headless)
|
|
# Start headless Chromium with synced profile
|
|
echo "Starting headless Chromium on port $HEADLESS_PORT..."
|
|
|
|
pkill -f "remote-debugging-port=$HEADLESS_PORT" 2>/dev/null
|
|
sleep 1
|
|
rm -f "$HEADLESS_PROFILE/Singleton"*
|
|
|
|
"$CHROMIUM_BIN" \
|
|
--headless=new \
|
|
--no-sandbox \
|
|
--disable-gpu \
|
|
--disable-dev-shm-usage \
|
|
--remote-debugging-port=$HEADLESS_PORT \
|
|
--user-data-dir="$HEADLESS_PROFILE" \
|
|
--password-store=basic \
|
|
--no-first-run \
|
|
about:blank &
|
|
|
|
sleep 2
|
|
echo "Headless Chromium started on port $HEADLESS_PORT"
|
|
echo "Use: browser(profile='fast') or browser(controlUrl='http://localhost:$HEADLESS_PORT')"
|
|
;;
|
|
|
|
stop)
|
|
echo "Stopping browsers..."
|
|
pkill -f "remote-debugging-port=$HEADED_PORT" 2>/dev/null
|
|
pkill -f "remote-debugging-port=$HEADLESS_PORT" 2>/dev/null
|
|
echo "Done."
|
|
;;
|
|
|
|
status)
|
|
echo "=== Browser Status ==="
|
|
echo ""
|
|
echo "Headed Chrome (port $HEADED_PORT):"
|
|
pgrep -f "remote-debugging-port=$HEADED_PORT" > /dev/null && echo " ✓ Running" || echo " ✗ Not running"
|
|
|
|
echo ""
|
|
echo "Headless Chromium (port $HEADLESS_PORT):"
|
|
pgrep -f "remote-debugging-port=$HEADLESS_PORT" > /dev/null && echo " ✓ Running" || echo " ✗ Not running"
|
|
|
|
echo ""
|
|
echo "Profiles:"
|
|
[ -d "$CHROME_PROFILE" ] && echo " Chrome: $CHROME_PROFILE (exists)" || echo " Chrome: $CHROME_PROFILE (not created)"
|
|
[ -d "$HEADLESS_PROFILE" ] && echo " Headless: $HEADLESS_PROFILE (exists)" || echo " Headless: $HEADLESS_PROFILE (not created)"
|
|
;;
|
|
|
|
*)
|
|
echo "Usage: $0 {start-login|sync|start-headless|stop|status}"
|
|
echo ""
|
|
echo "Workflow:"
|
|
echo " 1. $0 start-login - Opens Chrome, log into sites"
|
|
echo " 2. $0 sync - Copy cookies to headless profile"
|
|
echo " 3. $0 start-headless - Start headless browser for automation"
|
|
echo ""
|
|
echo " $0 status - Check what's running"
|
|
echo " $0 stop - Stop all browsers"
|
|
exit 1
|
|
;;
|
|
esac
|