browser-automation — Chrome 자동화 세션 / 사용자 로그인 프로필
목적: Playwright MCP 기반 Chrome 자동화로 로그인이 필요한 웹 작업(pfs·네이버 메일 등)을 코디가 수행. 사이트별 로그인 상태·방법을 여기서 관리. 앞으로 계속 업데이트되는 살아있는 문서. (pfs 앱 자체 작업은
projects/pfs/— 여긴 브라우저 자동화/로그인 인프라 전용.)
✅ 26.9.7 — missav-fav 「선택항목 본편 연속재생」 + SNI 차단우회 트랜스포트
페페 「즐겨찾기 페이지를 발전시켜 선택 항목 연속재생」 → 열어보니 사이트 자체가 한국 ISP SNI 차단으로 죽어 있었다
(missav01.com TLS 즉시 RST · 미러 4종 동일). 목록·해제까지 이미 불능.
⛒요청 통로를 NordVPN 확장이 붙은 CDP 크롬 9346(프로필 missav-vpn) 안의 fetch() 로 교체 —
같은 오리진이라 쿠키·XSRF·CF 통과가 공짜, OS 네트워크 무영향. 🔴출구는 미국 고정(서울 출구 = 사이트가 451).
본편은 surrit.com(차단 아님)인데 Referer 요구 + CORS 없음 → 서버가 /hls/<uuid>/… 로 중계(시청엔 VPN 불필요).
uuid 는 영상 페이지 packer 언팩으로 뽑아 meta.json hls 키에 캐시.
검증 = 실브라우저 재생·자동 다음 1/2→2/2 · 중계 체인 200 · 목록 683건/40초(중간 페이지 1개 실패로 167에서
조용히 잘리던 버그 수정) · 13px 미만 폰트 0.
상세 = 세션문서 · 함정 = rules.md ·
페이지 = C:\dev\devplan\missav-fav-player.html · 코드 = C:\dev\tools\missav-fav\.
⏳남은 것 = 폰(갤럭시 S25) 실기 재생 확인(Wi-Fi·모바일데이터 각각).
⏳ 미결 — 루트 HANDOFF 에서 이관 (2026-09-07)
루트
HANDOFF.md는 포인트만 남기는 방식으로 바뀌었다(페페 지시 26.9.7). 실물 미결은 여기 있다.
- 🔴CDP 9336 중복 —
tools\claude-design\launch.sh가 whymycat 과 같은 포트를 쓴다(그게 먼저 뜨면 쇼츠가 남의 크롬에 붙는다) - 9338·9339 는 런처가 없어
cdp.ensure불가 ·pepecards web_publish(9340/9341)는ensure미적용 - 지도·절차 정본 =
C:\dev\tools\cdp-profiles\PORTS.md「알려진 문제」 절 · 경위 =projects/browser-automation/archive.md
기본 규칙 (항상 적용)
- 신규 사이트 자동화 요청 시: ① 해당 로그인 페이지를 열어 자동완성된 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). ⚠[코디] 26.9.23 세션 만료 → 재로그인 시 영수증 이미지 캡차가 뜸(자격=.secrets\.env POIN_MAIL_ID/PW, 로그인 폼 선택자 #log.login·#keep 사라짐 → role 기준). 캡차에서 멈추고 페페에게 넘김. ✅해결 = 순수 크롬을 schtasks /IT 로 Session1(--user-data-dir=C:\dev\pw-chrome-profile --use-mock-keychain --remote-debugging-port=9348) → 페페 로그인·캡차 → 코디 connect_over_cdp 로 주소록 작업(검색 API POST contact.naver.com/v2/api/contacts/search, 수정=상세보기→수정 폼, 이메일 + 는 좌표로 행 판별). MCP 크롬은 Session0 라 페페 화면에 안 뜬다. |
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)