CDP 게이트웨이
bauta serve는 페르소나마다 자기 CDP 엔드포인트를 두므로, 스크립트는 코드를 그대로 두고 연결 방식만 바꿉니다.
bauta serve는 게이트웨이입니다. 페르소나마다 자기 CDP 엔드포인트를 둡니다. 스크립트는 코드를 그대로 두고 연결 방식만
바꾸면 됩니다.
게이트웨이 시작
bauta setup # 처음 한 번: 무료 세션을 바로 받고, 계정(GitHub)을 안내
bauta geo update # 프록시 출구 위치를 찾는 데이터베이스
bauta persona new shop --from win-intel
bauta serve페르소나마다 하나의 엔드포인트
페르소나마다 127.0.0.1:9222에 엔드포인트가 있습니다.
| 클라이언트 | 엔드포인트 |
|---|---|
Playwright (connect_over_cdp) | http://127.0.0.1:9222/persona/<name> |
Puppeteer (browserWSEndpoint) | ws://127.0.0.1:9222/persona/<name> |
browser = playwright.chromium.connect_over_cdp("http://127.0.0.1:9222/persona/shop")const browser = await puppeteer.connect({ browserWSEndpoint: "ws://127.0.0.1:9222/persona/shop" });클라이언트는 브라우저가 자기 것인 것처럼 자기 페르소나의 페이지만 봅니다.
브라우저 공유
페르소나는 글꼴, 로캘, 화면 배율이 같은 페르소나끼리 브라우저를 공유하며, 브라우저 하나에 최대 --per-browser(8)개가
들어갑니다. 덕분에 페르소나당 메모리를 훨씬 적게 씁니다. 각 페르소나는 여전히 자기 User-Agent, Client Hints, 시간대,
프록시를 비롯한 페르소나의 나머지를 그대로 가지며, 엔드포인트도 같습니다.
페르소나마다 브라우저를 따로 두려면 다음과 같이 실행합니다.
bauta serve --per-browser 1압축을 푼 확장 프로그램을 불러오는 페르소나(Python 패키지의 extension_paths, Node.js 패키지의 extensionPaths)도
브라우저를 따로 가집니다.
공유 브라우저가 비정상 종료되면 그 브라우저의 페르소나만 함께 종료되고, 다른 페르소나는 영향을 받지 않습니다. 각 페르소나는 다음 연결 때 다시 시작됩니다.
저장소
페르소나는 자기 프로필을 가지므로, 다음에 연결할 때도 쿠키와 저장소가 그대로 있습니다. 쓰이지 않는 동안에는 프로필을
기록해 두고 내려 둡니다. "ephemeral": true인 페르소나는 세션 사이에 아무것도 남기지 않습니다.
브라우저가 닫힐 때
페르소나의 브라우저는 마지막 클라이언트가 떠나고 --idle초 뒤에 닫힙니다. 기본값은 30초입니다.
bauta serve --idle 120헤드리스가 아닌 창
브라우저마다 페르소나의 화면 크기에 맞춘 창을 엽니다. 디스플레이가 없는 머신에서는 Xvfb를 설치하면 bauta serve가
자체 가상 디스플레이에 창을 엽니다.
apt install xvfbXvfb가 없으면 Chrome의 헤드리스 모드로 대신 실행하고, 그렇다고 알려 줍니다. 헤드리스 모드는 페이지가 구별할 수 있습니다.
bauta serve --hidden은 데스크톱에서도 아무도 보지 못하는 곳에 창을 둡니다.
| OS | 창이 놓이는 곳 |
|---|---|
| Linux | DISPLAY 값과 상관없이 가상 디스플레이 |
| Windows | 게이트웨이 전용 데스크톱. 페이지가 보이고 포커스를 가지며, 여느 데스크톱처럼 WebGL이 GPU에서 실행됩니다 |
| macOS | Chrome의 헤드리스 모드 |
패키지의 headless 옵션은 기본으로 켜져 있으며, 패키지가 게이트웨이를 시작할 때 이 방식을 요청합니다.
주소와 포트
게이트웨이는 127.0.0.1의 9222 포트에서 대기합니다. --port로 포트를 바꿉니다. --listen 0.0.0.0을 쓰면 다른
머신도 들어올 수 있고, 포트에 닿는 누구나 페르소나를 조종할 수 있습니다.
포트에는 비밀번호가 없습니다. 루프백에 두거나, 직접 마련한 접근 제어 뒤에 두세요.
패키지는 gateway 옵션이나 BAUTA_GATEWAY로, 컨테이너 안처럼 다른 곳에서 실행되는 게이트웨이에 연결합니다. 그
게이트웨이의 페르소나는 그쪽에서 만듭니다.
라이선스
게이트웨이는 실행되는 동안 --heartbeat초마다 서버(--server 또는 BAUTA_SERVER)에서 라이선스를 갱신합니다.
서버가 이 머신에 있는 경우가 아니면 최소 60초입니다. 게이트웨이는 활성 페르소나를 라이선스와 대조해 셉니다.
세션과 라이선스를 참고하세요.
실행 설정
페르소나 파일은 브라우저 실행 방식도 정할 수 있습니다. 시간대와 로캘, 프록시, humanize, 서드파티 쿠키,
ephemeral, 요청 차단이 그렇습니다. 프록시가 있고 시간대와 로캘을 둘 다 정하지 않았다면, 둘은 프록시의 출구 위치를
따르며, 그 위치는 bauta geo update의 데이터베이스로 찾습니다.
실행 설정과 프록시를 참고하세요.
스크립트와 사용자 활성화
직접 실행하는 스크립트는 사람이 아니라 페이지의 것입니다. page.evaluate 같은 호출은 페이지에 사용자 활성화(user
activation)를 주지 않습니다. 사용자 활성화는 사람의 클릭이나 키 입력으로, Chrome은 팝업을 열거나 전체 화면으로
바꾸거나 클립보드에 쓸 때 이를 요구합니다. 스크립트가 이를 준다면, 페이지는 아무 입력도 없었는데 활성화가 일어난 것을
보게 됩니다. 사람이 필요한 동작에는 클릭(page.click, humanize)을 쓰세요.
페르소나 살펴보기
| 명령 | 하는 일 |
|---|---|
bauta stats | 게이트웨이의 활성 페르소나와 대기 중인 페르소나를 라이선스 기준으로 보여 줍니다 |
bauta inspect <name> | 게이트웨이가 실행 중인 페르소나의 페이지마다 DevTools 링크를 출력합니다 |
bauta traffic <name> | 페르소나의 페이지가 가져온 것, 차단된 것, 캐시에서 찾은 것을 종류별로 보여 줍니다 |
bauta open <name> | 직접 로그인할 수 있도록 페르소나의 브라우저를 창으로 엽니다 |
게이트웨이가 다른 포트에서 실행 중이면 bauta stats와 bauta inspect에 --port를 줍니다.
다음 단계
- 세션과 라이선스: 활성화할 수 있는 페르소나 수와, 한도를 넘었을 때 일어나는 일.
bauta serve: 모든 플래그와 그 기본값.- Playwright와 Puppeteer: 스크립트 연결.