browser-automation — Chrome 자동화 세션 / 사용자 로그인 프로필
목적: Playwright MCP 기반 Chrome 자동화로 로그인이 필요한 웹 작업(pfs·네이버 메일 등)을 코디가 수행. 사이트별 로그인 상태·방법을 여기서 관리. 앞으로 계속 업데이트되는 살아있는 문서. (pfs 앱 자체 작업은
projects/pfs/— 여긴 브라우저 자동화/로그인 인프라 전용.)
기본 규칙 (항상 적용)
- 신규 사이트 자동화 요청 시: ① 해당 로그인 페이지를 열어 자동완성된 ID/PW로 로그인 시도(폼 값이 채워지면 로그인 버튼 클릭) → ② 자동완성이 안 되거나 로그인 실패(캡차·2차인증·본인인증·비번 미저장 등)면 그 지점에서 멈추고 사용자에게 보고하고 지시 대기(사용자가 직접 로그인 또는 자격증명 전달).
- 비밀번호 값은 시드·로그·알림·커밋 어디에도 기록 금지(ID만 기록). 계정 ID 레퍼런스 = 에이전트 메모리
accounts-reference. - 쓰기·전송·결제·삭제·운영배포 등 외부 영향 작업은 사용자 승인 후. 조회/읽기 자동화는 자유.
자동화 환경 (확정 2026-06-13)
- Playwright MCP(@playwright/mcp) + 전용 Chrome 프로필
C:\dev\pw-chrome-profile(실제 Chrome 149 채널). 설정 = 플러그인.mcp.jsonargs["@playwright/mcp@latest","--browser","chrome","--user-data-dir","C:\\dev\\pw-chrome-profile"]. 변경 시 Claude Code/MCP 재시작 필요. 복구노트 =C:\dev\backup_startup\playwright_mcp_profile_change.txt(플러그인 업데이트가 .mcp.json 덮으면 args 재적용). - 일상 Chrome(원본
User Data)과 별도 dir라 동시 사용 무충돌. - 제약: Playwright가
--use-mock-keychain으로 Chrome을 띄워서, 회원 원본 프로필에서 복사해온 암호화 쿠키·저장비번은 복호 불가. → 각 사이트는 이 자동화 프로필에서 1회 로그인해야 이후 비번 자동완성됨(그 후엔 mock 키체인으로 저장돼 재시작에도 자동완성 유지). 지속(persistent)쿠키 사이트는 로그인 상태도 유지될 수 있으나, 세션쿠키 사이트는 브라우저 닫으면 로그아웃 → 새 세션마다 자동완성+클릭으로 재로그인. - 현재 작업 위치 확인 =
tailscale status(poin-local=집 PC=자동화 실행기 100.108.234.45 · poinimos01=사무실 100.101.40.17). 자동화 Chrome 창은 집 PC GUI에 뜸 → 사용자가 원격이면 직접 타이핑 불가, 코디가 자동완성+클릭으로 처리.
ChatGPT Plus 브리지 — gpt-consult 무과금 백엔드 (확정 2026-06-21)
"GPT와 의논"(consult_gpt MCP)을 OpenAI 종량 API 대신 결제된 ChatGPT Plus 웹UI로 돌리는 Playwright 브리지.
- 위치: C:\dev\tools\agent-dialogue-hub. .env GPT_BACKEND=browser·CHATGPT_CHANNEL=chrome. 데몬 포트 8781(hub/chatgpt_bridge.py), 어댑터 hub/adapters/gpt_browser.py. 로그인 프로필 .chatgpt-profile(구글 SSO 1회 완료).
- 기동=온디맨드(상시 스케줄러 없음 — 자주 안 쓰는 기능, 페페 지시). 사용자 지시로 의논할 때만:
① powershell -NoProfile -ExecutionPolicy Bypass -File C:\dev\tools\agent-dialogue-hub\bridge_ctl.ps1 start
② consult_gpt 호출(또는 POST http://127.0.0.1:8781/ask) — 응답 model=chatgpt-plus(ui)면 정상·과금0
③ ... bridge_ctl.ps1 stop
- 제약: 헤드풀 필수(헤드리스는 Cloudflare 차단). 코디 Bash=비대화형이라 start는 일회용 InteractiveToken 작업으로 사용자 세션에 띄움(실행 후 작업정의 즉시 삭제 → 상시등록 0). 읽기전용 도구 없음 → 자료는 context 인자로 첨부. 셀렉터 깨지면 .env SEL_*. 상세=README_chatgpt_bridge.md, 메모리 chatgpt-plus-bridge. 자격증명 자동완성은 위험항목(텔레그램 승인)=[[login-credential-autofill-risk]].
사이트별 로그인 상태 (계속 추가)
| 사이트 | ID | 로그인 방법 | 영속성 | 검증/비고 |
|---|---|---|---|---|
pfs 운영 pfs.poin.co.kr / 테스트 pfs-test.poin.co.kr |
poin01 | 자동완성 → 로그인 버튼 클릭 | 세션쿠키(상태 영속 X)·비번 저장됨 → 새 세션마다 자동 로그인 | 본인인증 등록 완료. /field/list 진입·재시작 2회 검증 PASS (2026-06-13). 총관리자. |
네이버 메일 mail.naver.com |
poin912 | 자동완성 → "로그인 상태 유지" ON → 로그인 버튼 | 지속쿠키(재접속 유지 가능성↑)·비번 저장됨 | 캡차/2차인증 없이 메일함 진입 검증 (2026-06-13). |
MissAV missav01.com |
delix0731@gmail.com | POST /api/login(서버측, Playwright 아님) |
remember_web 지속쿠키 | 전용 워커로 즐겨찾기 다중해제. 아래 참조. |
MissAV 즐겨찾기 다중편집 워커 (2026-07-07)
저장(saved) 목록 다중 즐겨찾기 해제 도구. 사이트는 1개씩만 해제 가능 → 배치 워커.
- 위치 C:\dev\tools\missav-fav\missav_fav.py(의존성0, stdlib). 실행 start.bat. 접속 http://100.108.234.45:8790/ (Tailscale IP 전용 바인딩·localhost도 거부).
- 로그인 POST /api/login(Laravel, XSRF쿠키→헤더; 쿠키시드는 /saved GET). 목록 /saved?page=N pager max까지, slug=fourhoi커버URL. 해제 DELETE api/items/{shortid}/save(shortid는 각 영상페이지에만, 204성공). 썸네일/미리보기는 no-referrer로 fourhoi 403 우회. 실측 654~657개.
- 해제 UX(2026-07-07): 클릭 즉시 UI서 카드 사라짐(optimistic)+서버 캐시 즉시제거→/api/unsave는 큐잉만 하고 202 즉시응답. 실제 DELETE는 백그라운드 워커, /api/status 폴링으로 진행표시. 첫 로드만 전체스크래핑(~50초), 이후 캐시. 사이트엔 +0초 반영(단 다른탭 열었으면 F5 필요).
- 세션 견고성: 스크래핑 로그인벽 감지 재로그인 + DELETE 실패시 재로그인 1회 재시도(자가복구 검증됨). 같은계정 동시로그인만 세션 무효화→실사용(브라우저1개)은 재발 0.
- 메타/정렬/필터(2026-07-07): 태그·발행일·메이커·女優 수집(조회수는 사이트 미노출=불가). meta.json 증분캐시(최초 전체~15분, 이후 새것만), 백그라운드 수집. UI=태그칩 필터·발행일/재생시간/제목 정렬·제목/女優/메이커 검색. 언어 영어 기본(/en/ 로케일, env MISSAV_LOCALE).
- 계정 ID만 기록(비번 금지). 메모리 missav-fav-bulk-worker.
최종 갱신: 2026-07-07 (KST)