Lightpanda: the headless browser designed for AI and automation
이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.
<p align="center"> <a href="https://lightpanda.io"><img src="https://cdn.lightpanda.io/assets/images/logo/lpd-logo.png" alt="Logo" height=170></a> </p> <h1 align="center">Lightpanda Browser</h1> <p align="center"> <strong>AI 에이전트와 자동화를 위해 처음부터 구축된 헤드리스 브라우저.</strong><br> Chromium 포크도, WebKit 패치도 아닙니다. Zig로 작성된 새로운 브라우저입니다. </p>
</div> <div align="center">
</div> <div align="center">
<img width="350px" src="https://cdn.lightpanda.io/assets/images/github/execution-time-v2.svg">   <img width="350px" src="https://cdn.lightpanda.io/assets/images/github/memory-frame-v2.svg"> </div>
AWS EC2 m5.large 인스턴스에서 네트워크를 통해 933개의 실제 웹 페이지를 요청했습니다. 자세한 내용은 벤치마크 상세를 참조하세요.
| 메트릭 | Lightpanda | Headless Chrome | 차이 | ||
|---|---|---|---|---|---|
| 메모리 (최대, 100페이지) | 123MB | 2GB | 약 16배 적음 | ||
| 실행 시간 (100페이지) | 5초 | 46초 | 약 9배 빠름 |
패키지 관리자
Homebrew에서 최신 nightly 빌드:
brew install lightpanda-io/browser/lightpanda
Arch Linux 사용자 저장소에서 최신 nightly 빌드:
yay -S lightpanda-nightly-bi
nightly 빌드에서 다운로드
Linux 및 MacOS용 x86_64와 aarch64 모두에 대해 nightly 빌드에서 최신 바이너리를 다운로드할 수 있습니다.
Linux의 경우
curl -L -o lightpanda https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-x86_64-linux && \
chmod a+x./lightpanda
실행 전에 바이너리를 확인하세요:
참고: Linux 릴리스 바이너리는 glibc에 링크되어 있습니다. musl 기반 배포판(Alpine 등)에서는 glibc 동적 링커가 없어
cannot execute: required file not found오류가 발생합니다. glibc 기반 베이스 이미지(예:FROM debian:bookworm-slim또는FROM ubuntu:24.04)를 사용하거나 소스에서 빌드하세요.
MacOS의 경우
curl -L -o lightpanda https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-aarch64-macos && \
chmod a+x./lightpanda
Windows + WSL2의 경우
Lightpanda는 네이티브 Windows 바이너리가 없습니다. 위의 Linux 단계에 따라 WSL 내부에 설치하세요.
WSL이 설치되지 않았나요? 관리자 셸에서 wsl --install을 실행하고, 재부팅한 후 wsl을 여세요.
자세한 내용은 Microsoft의 WSL 설치 가이드를 참조하세요.
자동화 클라이언트(Puppeteer, Playwright 등)는 WSL 내부 또는 Windows 호스트에서 실행할 수 있습니다. WSL은 localhost:9222를 자동으로 전달합니다.
Docker에서 설치
Lightpanda는 Linux amd64 및 arm64 아키텍처 모두에 대해 공식 Docker 이미지를 제공합니다.
다음 명령은 Docker 이미지를 가져와 Lightpanda의 CDP 서버를 포트 9222에 노출하는 새 컨테이너를 시작합니다.
docker run -d --name lightpanda -p 127.0.0.1:9222:9222 lightpanda/browser:nightly
--dump markdown을 사용하여 직접 마크다운으로 변환할 수 있습니다.
--wait-until, --wait-ms, --wait-selector 및 --wait-script 옵션을 사용하여 덤프 전 대기 시간을 조정할 수 있습니다.
CDP 서버가 시작되면 browserWSEndpoint를 구성하여 Puppeteer 스크립트를 실행할 수 있습니다.
<details> <summary>Puppeteer 스크립트 예제</summary>
import puppeteer from 'puppeteer-core';
// browserWSEndpoint를 사용하여 Lightpanda의 CDP 서버 주소를 전달합니다.
const browser = await puppeteer.connect({
browserWSEndpoint: "ws://127.0.0.1:9222",
});
// 나머지 스크립트는 동일합니다.
const context = await browser.createBrowserContext();
const frame = await context.newPage();
// 프레임에서 모든 링크를 덤프합니다.
await frame.goto('https://demo-browser.lightpanda.io/amiibo/', {waitUntil: "networkidle0"});
const links = await frame.evaluate(() => {
return Array.from(document.querySelectorAll('a')).map(row => {
return row.getAttribute('href');
});
});
console.log(links);
await frame.close();
await context.close();
await browser.disconnect();
</details>
lightpanda agent를 사용하면 네이티브 에이전트로 브라우저를 제어할 수 있습니다. 일반 영어나 슬래시 명령어로 원하는 작업을 설명하면 에이전트가 브라우저를 제어합니다: 페이지 탐색, 흐름 클릭, 양식 작성, 구조화된 데이터 추출. 대화형 챗봇보다는 웹을 사용하도록 지시하는 로봇이라고 생각하면 됩니다.
에이전트가 브라우저와 동일한 프로세스 내에서 실행되므로 모든 도구 호출이 직접적인 작업이며 Lightpanda의 속도와 메모리 이점을 유지합니다.
에이전트 세션의 출력은 PandaScript입니다: Lightpanda에 내장된 소수의 네이티브 브라우저 프리미티브를 사용하는 일반 JavaScript입니다. 현재 세션에서 /save를 실행하여 내보낸 다음 lightpanda agent <script>.js로 재생할 수 있습니다. 스크립트는 결정적이고 토큰이 필요 없으므로 LLM으로 프로토타입을 만들고 런타임에 모델 없이 출력물을 프로덕션에 배포할 수 있습니다.
Anthropic, OpenAI, Gemini, Hugging Face 및 Ollama를 통한 로컬 모델을 지원합니다. --no-llm을 사용하여 LLM 없이 실행할 수도 있으며, 이 경우 REPL로 들어갑니다. 전체 참조는 에이전트 문서를 참조하세요.
MCP 서버는 stdio를 통해 MCP JSON-RPC 2.0으로 통신합니다.
MCP 구성에 추가:
{
"mcpServers": {
"lightpanda": {
"command": "/path/to/lightpanda",
"args": ["mcp"]
}
}
}
스킬은 lightpanda-io/agent-skill에서 사용할 수 있습니다.
기본적으로 Lightpanda는 사용량 텔레메트리를 수집하여 전송합니다. 환경 변수 LIGHTPANDADISABLETELEMETRY=true를 설정하여 비활성화할 수 있습니다. Lightpanda의 개인정보 보호정책은 다음에서 확인할 수 있습니다: https://lightpanda.io/privacy-policy.
Lightpanda는 베타 버전이며 현재 개발 중입니다. 안정성과 적용 범위가 개선되고 있으며 많은 웹사이트가 현재 작동합니다. 여전히 오류나 충돌이 발생할 수 있습니다. 구체적인 내용이 있으면 이슈를 열어 주세요.
다음은 구현된 주요 기능입니다:
--obey-robots 옵션으로 robots.txt 준수참고: 수백 개의 웹 API가 있습니다. 브라우저(헤드리스 모드만이라도)를 개발하는 것은 엄청난 작업입니다. 적용 범위는 시간이 지남에 따라 증가할 것입니다.
Lightpanda는 Zig 0.15.2로 작성되었습니다. 프로젝트를 빌드하려면 올바른 버전을 설치해야 합니다.
Lightpanda는 또한 v8, Libcurl 및 html5ever에 의존합니다.
v8 엔진을 빌드하려면 일부 라이브러리를 설치해야 합니다:
Debian/Ubuntu 기반 Linux의 경우:
sudo apt install xz-utils ca-certificates \
pkg-config libglib2.0-dev \
clang make curl git
또한 Rust를 설치해야 합니다.
Nix가 있는 시스템의 경우 devShell을 사용할 수 있습니다:
nix develop
MacOS의 경우 cmake와 Rust가 필요합니다.
brew install cmake
make build 또는 디버그 환경의 경우 make build-dev로 전체 브라우저를 빌드할 수 있습니다.
하지만 zig 명령을 직접 사용할 수도 있습니다: zig build run.
Lightpanda는 v8 스냅샷을 사용합니다. 기본적으로 시작 시 생성되지만 다음 명령을 사용하여 포함할 수 있습니다:
스냅샷 생성:
zig build snapshot_creator -- src/snapshot.bin
스냅샷 바이너리를 사용하여 빌드:
zig build -Dsnapshot_path=../../snapshot.bin
자세한 내용은 #1279를 참조하세요.
make test를 실행하여 Lightpanda를 테스트할 수 있습니다.
make test # 모든 테스트 실행
make test F="server" # 부분 문자열로 필터링
TEST_FILTER="WebApi: #selector_all" make test # 메인 + 서브테스트 필터링 (구분자: #)
TEST_VERBOSE=true make test
TEST_FAIL_FIRST=true make test
METRICS=true make test # 할당/지속 시간 메트릭을 JSON으로 캡처
종단 간 테스트를 실행하려면 데모 저장소를 ../demo 디렉토리에 클론해야 합니다.
데모의 node 요구 사항을 설치해야 합니다.
또한 Go > v1.24를 설치해야 합니다.
make end2end
Lightpanda는 표준화된 Web Platform Tests에 대해 테스트됩니다.
커스텀 testharnessreport.js를 포함한 포크를 사용합니다.
참고로 wpt.live를 통해 브라우저로 WPT 테스트 케이스를 쉽게 실행할 수 있습니다.
테스트를 실행하려면 저장소를 클론하고, 사용자 정의 호스트를 구성하고, MANIFEST.json 파일을 생성해야 합니다.
fork 브랜치로 저장소를 클론합니다.
git clone -b fork --depth=1 [email protected]:lightpanda-io/wpt.git
wpt/ 디렉토리로 들어갑니다.
/etc/hosts에 사용자 정의 도메인을 설치합니다.
MANIFEST.json 생성
자세한 내용은 WPT 설정 가이드를 참조하세요.
외부 Go 러너는 github.com/lightpanda-io/demo/ 저장소의 wptrunner/ 디렉토리에 제공됩니다.
먼저 프로젝트를 클론해야 합니다.
먼저 wpt/ 클론 디렉토리에서 WPT의 HTTP 서버를 시작합니다.
Lightpanda 브라우저를 실행합니다.
zig build run -- --insecure-disable-tls-host-verification
그런 다음 데모 클론 디렉토리에서 wptrunner를 시작할 수 있습니다:
cd wptrunner && go run.
또는 특정 테스트:
cd wptrunner && go run. Node-childNodes.html
wptrunner 명령은 출력을 수정하는 --summary 및 --json 옵션을 허용합니다.
또한 --concurrency는 동시성 제한을 정의합니다.
:warning: 실행 중...