브라우저가 아니라 컨텍스트마다 페르소나 하나
bauta의 게이트웨이가 여러 페르소나를 브라우저 하나에 담으면서도, 각자의 정체성과 프록시와 저장소를 지키는 방식.
흔히는 정체성마다 브라우저를 하나씩 띄웁니다. 세션마다 프로세스 트리와 창과 메모리 몫이 따로 듭니다. bauta의 게이트웨이는 대신 페르소나마다 엔드포인트를 하나씩 주고, 페르소나들이 브라우저를 나눠 쓰게 합니다.
페르소나마다 엔드포인트 하나
bauta serve는 페르소나마다 CDP 엔드포인트를 따로 엽니다. 스크립트는 코드를 그대로 두고 연결하는 방법만 바꿉니다.
browser = playwright.chromium.connect_over_cdp("http://127.0.0.1:9222/persona/shop")나눠 쓰는 것과 따로 쓰는 것
페르소나들은 글꼴, 로캘, 화면 배율이 같으면 브라우저 하나를 최대 --per-browser(8)개까지 나눠 씁니다. 그래도
각자의 User-Agent, Client Hints, 시간대, 프록시, 그리고 나머지 페르소나 설정이 따로 있습니다. 클라이언트는 마치
브라우저가 자기 것인 것처럼 자기 페르소나의 페이지만 보고, 어느 브라우저가 맡든 엔드포인트는 같습니다.
저장소
페르소나는 자기 프로필을 가지므로 다음 연결 때도 쿠키와 저장소가 그대로 있습니다. 연결이 없는 동안에는 프로필을
디스크에 쓰고 내려놓습니다. "ephemeral": true인 페르소나는 세션 사이에 아무것도 남기지 않습니다.
장애는 그 안에서 끝납니다
공유 브라우저가 멈추면 그 안의 페르소나만 함께 멈추고, 다른 페르소나는 영향을 받지 않습니다. 각자 다음 연결 때 다시 시작합니다.
왜 중요한가
같은 세션을 더 적은 브라우저로 돌리면 메모리가 덜 듭니다. 한 머신에서 페르소나 8개를 브라우저 하나에 담았더니, 세션마다 창 하나에 브라우저를 하나씩 띄운 기본 Playwright보다 메모리를 28% 덜 썼습니다 (측정 결과).
게이트웨이에서 플래그를 다룹니다. --per-browser 1을 주면 페르소나마다 브라우저를 따로
씁니다.