HeadlessChrome101: Jit-Browser가 Chrome을 다기능 브라우저–서버-브라우저 레이어로 전환하는 방법
이것은 Jit-Browser가 헤드리스 Chrome으로 무엇을 하는지, 독점적인 Jit-TR 런타임을 어떻게 사용하는지, 그리고 이것이 단순한 스크립트가 아닌 일류 브라우저 기능이 되기 위해 여전히 필요한 것이 무엇인지에 대한 평이한 언어로 된 설명입니다.
간단한 스크린샷 도구에서 Jit-Browser로
우리는 작은 명령줄 도구로 시작했습니다: getpage https://example.com page.png. Docker 컨테이너에서 Chrome을 실행하고, 페이지에서 렌더링된 example.com의 스크린샷을 찍고 종료했습니다.
유용한 개념 증명. 모든 호출은 콜드 스타트였습니다. 번역, 세션 또는 상태에 대해 아무것도 알지 못했습니다. 그것은 단지 헤드리스 카메라였습니다.
Jit-Browser는 다음 단계입니다. 여전히 실제 Chrome을 사용하지만 이제는:
- 페이지 내부에서 무슨 일이 일어나는지 기록합니다.
- Jit-TR 스크립트를 번역 레이어로 주입합니다.
- 쿠키 배너나 드롭다운과 같은 간단한 흐름을 따를 수 있습니다.
- 단순한 스크린샷이 아닌 완전히 번역된 HTML을 캡처합니다.
이 페이지는 우리가 손을 흔들고 있지 않다는 것을 보여주기 위해 그 파이프라인을 설명합니다. 우리는 브라우저 수준의 다국어 레이어가 실제로 어떻게 작동할 수 있는지를 보여주고 있습니다.
Jit-Browser 파이프라인 6단계
높은 수준에서 모든 캡처는 동일한 순서를 따릅니다.
-
Docker 내부에서 실제 Chrome(헤드리스)을 실행합니다.
우리는 Puppeteer(pptr.dev)를 사용하여 보이는 창 없이 일반 브라우저를 구동하는 동일한 엔진을 시작합니다. 사용자 정의 파서도 없고, 가짜 렌더링도 없습니다. -
쿠키나 로그인 상태를 적용합니다(구성된 경우).
로그인된 세션이 필요한 데모의 경우, 우리는 당신의 쿠키를 재생합니다. 무차별 대입, 비밀번호 추측, 우리가 제어하지 않는 계정 스크래핑은 없습니다. -
사용자처럼 대상 페이지를 정확히 로드합니다.
HTML, CSS, JavaScript, 폰트, 이미지. 우리는networkidle2(https://pptr.dev/api/puppeteer.page.waitfornetworkidle)를 기다려 느린 번들 및 폰트가 로드 완료되도록 합니다. -
Jit-TR 스니펫을 레이어로 주입합니다.
우리는 특허 출원 중인 런타임 코드에 대한 스크립트 태그를 추가합니다 – 예를 들어:. Jit-TR 런타임 모듈은 노출된 DOM(document.head 및 document.body)을 탐색하고, 추출된 페이로드를 우리(또는 다른) 서버로 보내 처리하고, 결과(번역, 향상 또는 새로운 정보)를 수신하고, 보이는 텍스트를 다시 작성하며, 원본 위에 새로운 의미의 레이어를 추가합니다. 존재하는 유일한 제한은 간단합니다: 스크립트는 보강될 수 있지만, 새로운 지침은 사이트의 자체 스크립트에 절대 간섭할 수 없습니다. 이는 일반적으로MutationObserver인스턴스를 사용하여 DOM의 관련 변경 사항을 감시하고, 작은 목표 패치로 업데이트를 적용하며, 기존 애플리케이션 로직이나 이벤트 핸들러를 건드리지 않음으로써 구현됩니다. -
선택적 흐름 실행: 쿠키, 클릭 및 스크롤.
실제 페이지는 종종 한두 가지 작업이 필요합니다: 쿠키 배너 닫기, 메뉴 열기, 더 많은 제안을 로드하기 위해 스크롤하기. Jit-Browser는 이러한 요소가 캡처 전에 보이도록 간단한 흐름 스크립트를 실행할 수 있습니다. -
보강된 출력을 캡처합니다.
우리는 저장합니다:- 호스팅 또는 감사용으로 완전히 수정된 HTML.
- 잠재적 병목 현상을 식별하기 위한 타이밍 추적.
이것이 우리의 HeadlessChrome101의 핵심입니다. 이것은 브라우저가 새로운 또는 기존 데이터를 모든 브라우저 내부의 내장 레이어로 처리할 수 있는 정신 모델입니다.
이것이 단순한 장난감 스크립트가 아닌 이유
Jit-Browser는 브라우저 수준의 레이어가 브라우저 공급업체가 매일 사용하는 동일한 조각으로 구축될 수 있으며, 이 레이어가 외부 서비스와의 전체 클라이언트-서버 상호작용을 안전하게 호스팅할 수 있음을 증명하기 때문에 중요합니다. 여기에는 우리의 Jit-TR 런타임도 포함됩니다. 또한, 우리는 rel="alternate" hreflang="..." 링크 및 강화된 sitemap.xml 항목과 같은 SEO 인식 향상을 추가하는 지점입니다. 실제로, 이는 비파괴적인 HTML 영역 내에서 보강된 정보를 노출할 수 있음을 의미합니다. 예를 들어, 기존 페이지의 왼쪽 또는 오른쪽에 있는 요소 또는 원래 레이아웃이나 스크립트를 방해하지 않고 언어 선택 및 SmartSearch를 추가하는 JavaScript 모달을 사용하여 가능합니다.
-
실제 Chrome 엔진.
모든 것이 Chrome 자체에서 실행됩니다 - 단지 보이는 창이 없을 뿐입니다. 방문자에게 Chrome에서 작동하면 Jit-Browser에서도 작동합니다. -
콘텐츠 보안 정책 인식.
대부분의 사이트는 CSP로 스크립트를 잠급니다. 헤드리스 모드에서 우리는 Chrome의setBypassCSP(true)를 사용할 수 있습니다.(https://pptr.dev/api/puppeteer.page.setbypasscsp) 캡처 환경 내에 Jit-TR을 주입하기 위해. 우리는 어떤 프로덕션 사이트도 보안 정책을 약화시키는 것을 요구하지 않습니다. -
전체 타이밍 및 로깅.
우리는 실행 시간, 페이지 로드 시간, Jit-TR 시작, 흐름 단계 및 캡처를 기록합니다. 밀리초가 어디로 가는지, Jit-TR이 페이지에서 실제로 무엇을 하는지 확인할 수 있습니다. -
스크립트와 레이어의 분리.
오늘날 Jit-TR은 사이트에 추가하는 "단순한 스크립트"일 수 있습니다. Jit-Browser에서는 항상 실행되는 안정적인 계층으로 취급합니다. 이는 브라우저 공급업체가 네이티브로 플러그인할 수 있는 방식과 매우 가깝습니다.
Jit-TR API가 이미 해결한 것
어려운 부분은 헤드리스 크롬이 아닙니다. 어려운 부분은 복잡한 웹 페이지를 안전한 다국어 버전으로 안정적으로 변환하는 것입니다. 우리의 독점 런타임은 api.jit-tr.com에서 이미 그 작업을 합니다.
오늘날, API 런타임은 다음을 처리합니다:
-
언어 선택.
매개변수를 읽습니다.jittr=ES-419, 엣지 케이스를 정규화하고 선택한 언어를 기록합니다. 예를 들어:[Jit-TR] 선택한 언어 → ES-419. -
DOM 추출, 번역 및 의미론적 재작성.
런타임은 실제 Chrome DOM을 탐색하여 보이는 텍스트만 추출하고, 구조화된 번역 페이로드를 생성하여 결과를 페이지에 다시 씁니다. 모든 어려운 엣지 케이스는 자동으로 처리됩니다: 이모지 시퀀스, HTML 엔티티, 구두점 및 간격 규칙, 혼합 언어 문자열, 좌에서 우/우에서 좌로 전환. 또한 언어별 스크립트 블록도 다시 작성합니다 — 포함하여및 기타 구조화된 데이터 태그 — 각 언어가 검색 엔진 및 AI 시스템을 위한 올바르고 독립적인 캐시된 메타데이터를 갖추도록 보장합니다. -
클라이언트 행동.
언어 플래그를 렌더링하고, 안전하지 않은 루트를 존중하며, 단일 페이지 앱과 프레임워크에서 가능한 한 안전하게 작동합니다.
이 모든 것은 이미 오늘날 Jit-TR 사이트에서 실행됩니다. Jit-Browser는 단순히 이를 제어된 헤드리스 환경에서 재사용합니다.
네이티브 브라우저 기능에 아직 필요한 것은 무엇인가요
네이티브 브라우저 기능에 아직 필요한 것은 무엇인가요
Jit-Browser를 내장 브라우저 기능으로 전환하려면 기적이 필요하지 않습니다 - 브라우저 엔진이 이미 이해하는 작고 잘 정의된 변경 사항을 배치할 수 있는 능력만 있으면 됩니다.
Jit=-Browser를 내장 브라우저 기능으로 전환합니다. 이것은 기적이 아니라 브라우저가 이미 이해하는 작은 변경 사항 세트입니다.
-
엔진의 네이티브 훅.
오늘 우리는 헤드리스 크롬에서 스크립트를 주입하여 이를 시뮬레이션합니다. 실제 통합은 Jit-TR에 전용 번역 슬롯을 제공하여 렌더링 파이프라인의 적절한 지점에서 DOM 텍스트를 읽고 쓸 수 있도록 합니다. -
언어 의도를 표현하는 표준적인 방법.
우리는 이미 사용합니다?jittr=LANG그리고 쿠키. 브라우저 수준의 솔루션은 브라우저 언어 설정과 "이 사이트를 항상 ES-419로 번역"과 같은 사용자 선택을 존중할 수 있습니다. -
명확한 안전 및 개인정보 보호 프레임워크.
장치에서 나갈 수 있는 텍스트에 대한 규칙, 캐시될 수 있는 기간, 사이트나 사용자가 선택 해제할 수 있는 방법은 명확하고 문서화되어야 합니다. 브라우저 내부의 네이티브 구현은 실제로 임시방편 스크립트보다 더 안전할 수 있습니다.
예: HarmonyOS in ES-419
여기 파이프라인이 작동하는 구체적인 예가 있습니다.
우리는 다음과 같이 부릅니다:
getpageJtrBrowser \
"https://www.harmonyos.com/" \
"jittr=ES-419" \
null \
"ES-419/index.php"
Jit-Browser:
- Docker 내부에서 헤드리스 Chrome을 실행합니다.
- 로드
https://www.harmonyos.com/. - ES-419 매개변수를 사용하여 Jit-TR 스니펫을 삽입합니다.
- Jit-TR에게 보이는 중국어 텍스트를 스페인어(라틴 아메리카)로 번역하게 하세요.
- 결과를 다음으로 저장합니다
ES-419/인덱스.php.
HarmonyOS 사이트는 변경할 필요가 없습니다. 사용자의 관점에서 보면, 사이트가 단순히 그들의 언어를 지원하는 것처럼 보입니다.
이 페이지가 존재하는 이유
HeadlessChrome101은 다음을 보여주는 요약입니다:
- 우리는 실제 브라우저 엔진과 실제 CSP 규칙을 사용하고 있습니다.
- 우리는 이미 작동하는 독점 번역 런타임을 가지고 있습니다.
- 네이티브 브라우저 기능과의 남은 격차는 작고 명확하게 정의되어 있습니다.
브라우저, 운영 체제 또는 대형 플랫폼을 구축하고 보안 모델을 존중하는 범용 다국어 레이어가 필요하다면, 저희와 대화할 준비가 되어 있습니다. 코드는 이미 존재합니다. 동작은 측정 가능합니다. 다음 단계는 파트너십입니다.