bauta문서

페르소나 작동 방식

페르소나는 데이터로 담은 하나의 정체성이며, bauta는 실행 중인 머신 대신 페르소나로 페이지에 답합니다.

페르소나는 하나의 정체성입니다. 기기, 로캘과 시간대, 프록시, 저장소를 각자 가집니다. 페이지가 호출하는 모든 WebAPI는 엔진 안의 한 지점을 거치며, bauta는 실행 중인 머신 대신 페르소나로 그 호출에 답합니다.

데이터로 담은 정체성

페르소나 파일은 기기의 사실을 적은 JSON입니다. OS, 하드웨어, 화면, GPU, 그리고 읽어 내는 값에 더할 노이즈를 담습니다. bauta는 실행할 때 이 파일을 읽어, 사이트가 읽을 수 있는 모든 것으로 컴파일합니다. 모든 요청의 User-Agent와 Client Hints, 페이지와 워커의 navigator, 스크립트와 CSS가 보는 화면, WebGL이 여기에 해당합니다.

페르소나를 바꾸는 데 다시 빌드할 필요는 없습니다. 파일을 고치고 다시 실행하면 됩니다. 모든 필드는 페르소나 파일 형식에 있습니다.

일관성

OS, 플랫폼, User-Agent, User-Agent Client Hints, GPU, CPU, 메모리, 화면은 함께 바뀌므로 서로 어긋나지 않습니다. Windows User-Agent 옆에 Linux GPU가 놓이는 일은 없으며, HTTP 헤더와 페이지와 워커가 모두 같은 기기를 보고합니다.

스스로 모순되는 페르소나는 거부됩니다. 그러면 페이지에는 실제 머신이 보이고, bauta가 그 이유를 stderr에 출력합니다. 어떤 모순이 있는지는 거부되는 페르소나에 있습니다.

변하지 않는 핑거프린트

페르소나의 노이즈는 페르소나 이름과 라이선스의 비밀값에서 만들어집니다. 같은 페르소나는 다시 실행해도, 내 다른 머신에서도 바이트 단위까지 똑같이 읽힙니다. 다른 페르소나나, 다른 라이선스 아래의 같은 페르소나는 다르게 읽힙니다.

로그인하거나 로그아웃하면 머신의 페르소나가 새 핑거프린트를 받을 수 있습니다. 머신에 페르소나가 있으면 bauta login과 bauta logout은 진행하기 전에 확인을 받습니다. 무료 세션에서 새 계정으로 가입하면 핑거프린트가 그대로 유지됩니다.

페르소나가 없을 때

페르소나를 불러오지 않으면 bauta는 자신의 Chromium이 답하는 그대로 답하며, 아무것도 지어내지 않습니다.

주입하는 JavaScript 없음

답은 엔진의 바인딩 계층 안에서 바뀌므로, 페이지는 여전히 Chromium 고유의 네이티브 getter와 함수를 봅니다. 함께 제공되는 모든 페르소나는 navigator.webdriver에 false로 답하므로, 자동화로 실행해도 그 사실이 드러나지 않습니다.

글꼴

페르소나는 브라우저가 어느 OS에서 실행되든 자기 OS의 글꼴 세트를 보여 줍니다. Linux나 macOS 위의 Windows 페르소나, Windows 위의 Linux나 macOS 페르소나, macOS 위의 Windows나 Linux 페르소나가 그렇습니다.

브라우저를 직접 실행할 때는 페르소나에 맞는 글꼴 환경을 함께 지정하세요. Linux에서는 FONTCONFIG_FILE로 지정하며, 예를 들어 Windows 페르소나에는 personas/fonts/win.conf를 씁니다.

내장 페르소나

bauta에는 페르소나 파일 대신 이름으로 지정할 수 있는 내장 페르소나가 있습니다. Windows용 win-intel과 win-nvidia, mac-arm(Apple M2의 macOS 15), 그리고 Linux 하드웨어 전용인 linux-intel, linux-nvidia, linux-amd입니다.

bauta persona new shop --from win-intel

브라우저를 직접 실행할 때는 BAUTA_ROTATE=<name>으로 하나를 고릅니다. Python과 Node.js 패키지는 bauta의 내장 풀에서 데스크톱 기기를 하나 뽑아 쓸 수도 있습니다. 패키지를 참고하세요.

bauta-browser 저장소의 personas/win-intel.json은 페르소나 파일의 완전한 예시입니다. Intel UHD 630 그래픽을 단 Windows 11 노트북입니다.

페르소나 만들기

bauta persona new는 내장 페르소나의 이름이나 페르소나 파일로 페르소나를 만들고, 그 디렉터리 ~/.bauta/personas/<name>을 출력합니다.

bauta persona new shop --from win-intel                  # 내장 페르소나
bauta persona new crawl --from personas/win-intel.json   # 페르소나 파일
bauta persona ls                                         # 이 머신의 페르소나
bauta persona rm crawl

bauta persona set <name> --from ...은 프로필은 그대로 두고 페르소나의 설정을 새로 정합니다. 그 페르소나를 실행 중인 브라우저는 닫힐 때까지 이전 설정을 유지합니다. 페르소나는 페이지가 열려 있는 동안 바뀌지 않습니다.

저장소

페르소나는 자기 프로필을 가지므로, 다음에 연결할 때도 쿠키와 저장소가 그대로 있습니다. 쓰이지 않는 동안에는 프로필을 기록해 두고 내려 둡니다. "ephemeral": true인 페르소나는 세션 사이에 아무것도 남기지 않습니다.

머신 간 페르소나 옮기기

쿠키와 비밀번호처럼 페르소나의 프로필이 보관하는 것은 머신의 키가 아니라 라이선스의 키로 암호화됩니다. ~/.bauta/personas/<name>을 내 다른 머신으로 복사하면, OS와 상관없이 프로필이 보관한 그대로 열립니다. 다른 라이선스의 브라우저는 열 수 없습니다.

고정된 정체성

게이트웨이를 거칠 때, 클라이언트가 User-Agent, 뷰포트, 로캘, 시간대를 직접 설정하면 설정된 것처럼 응답을 받지만 페이지는 페르소나의 값을 그대로 유지합니다.

네이티브 플러그인

페르소나 파일이 선언하는 것을 넘어, 네이티브 플러그인은 어떤 호출이든 네이티브 속도로 바꿔 쓸 수 있습니다. C 헤더 하나에 맞춰 빌드한 라이브러리이며, Linux, Windows, macOS에서 샌드박스를 켠 채로 동작합니다. 페르소나가 게이트웨이나 패키지를 통해 플러그인을 지정합니다. 플러그인을 참고하세요.

다음 단계

이 페이지 내용