PhantomJS

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

PhantomJS는 아리야 히다야트가 개발하여 2011년 1월 23일에 출시된 헤드리스 브라우저이다. 자바스크립트 API를 사용하여 웹 페이지를 열고, 스크린샷을 찍고, 사용자 동작을 실행하며, 페이지 컨텍스트 내에서 자바스크립트를 삽입하여 실행할 수 있다. 웹 페이지 자동화, 스크린샷 캡처, 웹 페이지 테스트, 성능 측정 등 다양한 분야에서 활용되었으며, SlimerJS, TrifleJS, CasperJS 등의 생태계를 형성했다. 2018년 3월, 개발이 중단되었다.

PhantomJS - [IT 관련 정보]에 관한 문서
기본 정보

이미지 준비중입니다.

PhantomJS 로고
종류헤드리스 브라우저
개발자아리야 히다얏
출시일2011년 1월 17일
최신 버전2.1.1
최신 버전 출시일2016년 1월 24일
프로그래밍 언어C++
자바스크립트
C
개발 상태개발 중단
라이선스BSD
웹사이트https://phantomjs.org
📚 더 읽어볼만한 페이지
  • 크로스 플랫폼 웹 브라우저 - 구글 크롬
    구글 크롬은 구글이 개발한 웹 브라우저로, 크로미엄 프로젝트를 기반으로 오픈 소스 코드를 활용하여 개발되었으며, 다양한 기능과 운영체제 지원을 통해 세계 시장 점유율 1위를 기록하지만 개인 정보 보호 정책으로 비판을 받기도 한다.
  • 크로스 플랫폼 웹 브라우저 - 모질라 파이어폭스
    모질라 파이어폭스는 모질라 재단에서 개발한 무료 오픈 소스 웹 브라우저로, 탭 브라우징, 팝업 차단, 확장 기능 등을 지원하며 웹 표준 준수 및 개인 정보 보호 기능을 강화했다.
  • 웹키트 기반 소프트웨어 - 구글 크롬
    구글 크롬은 구글이 개발한 웹 브라우저로, 크로미엄 프로젝트를 기반으로 오픈 소스 코드를 활용하여 개발되었으며, 다양한 기능과 운영체제 지원을 통해 세계 시장 점유율 1위를 기록하지만 개인 정보 보호 정책으로 비판을 받기도 한다.
  • 웹키트 기반 소프트웨어 - 사파리 (웹 브라우저)
    사파리는 애플이 개발한 웹 브라우저로, 2003년 처음 출시되어 웹킷 엔진을 기반으로 빠른 속도와 웹 표준 지원을 제공하며, macOS, iOS, iPadOS 등에서 기본 브라우저로 사용된다.
  • 포터블 소프트웨어 - 스카이프
    스카이프는 2003년 설립된 인터넷 전화 서비스로, P2P 기술을 기반으로 음성 및 영상 통화, 인스턴트 메시징 등을 제공하며, 마이크로소프트에 인수되었고, 다양한 기능과 논란을 가지고 있다.
  • 포터블 소프트웨어 - Jitsi
    Jitsi는 오픈 소스 화상 회의 솔루션으로, 학생 프로젝트에서 시작하여 여러 회사를 거쳐 현재 8x8에 인수되었으며, Jitsi Meet 등을 통해 간편한 화상 회의 기능을 제공하지만 개인 정보 보호에 대한 비판도 존재한다.

2. 역사

PhantomJS는 Ariya Hidayat에 의해 개발되어 수년간의 개발 끝에 2011년 1월 23일에 출시되었다. 공개 프로젝트에 대한 첫 번째 커밋은 2011년에 이루어졌다. 이 프로젝트는 2010년 12월 26일부터 기여가 시작된 것으로 보이며, 이후 꾸준히 개발이 진행되었다. 2015년 2월 5일 기준으로, 이 프로젝트의 오픈 소스 코드 저장소는 770명이 주시하고 있었으며 107명의 기여자가 참여했다. 당시 1376개의 열린 이슈와 1252개의 닫힌 이슈를 보유하고 있었다.

PhantomJS를 상징하는 로고는 검은색 배경 위에 형광 파란색 유령 모양이다. 이는 그래픽 사용자 인터페이스(GUI), 즉 브라우저의 '몸통'이 없는 헤드리스 브라우저의 특징을 나타낸다.

그러나 시간이 지나면서 활발한 기여가 줄어들었고, 결국 2018년 3월 PhantomJS의 개발은 중단되었다.

3. 사용법

PhantomJS는 자바스크립트 API를 통해 웹 페이지 관련 작업을 자동화하는 데 사용된다. 이 API를 활용하면 웹 페이지를 열고, 페이지 내용을 조작하며, 스크린샷을 찍는 등의 기능을 구현할 수 있다. 또한, 특정 웹 페이지의 컨텍스트 내에서 원하는 자바스크립트 코드를 삽입하여 실행하거나, 사용자의 행동을 시뮬레이션하는 것도 가능하다. 이러한 기능들은 웹 테스팅, 페이지 분석, 웹사이트 모니터링 등 다양한 목적으로 활용될 수 있다.

3.1. 기본 사용 예제

PhantomJS의 자바스크립트 API를 이용하면 웹 페이지를 열거나, 스크린샷을 찍거나, 사용자 동작을 실행하고, 페이지 컨텍스트 내에서 자바스크립트를 삽입하여 실행하는 등의 작업을 할 수 있다. 예를 들어 다음 코드는 한국어 위키백과를 열고, 페이지 로딩이 완료되면 'wikipedia.org.png'라는 이름의 파일로 스크린샷을 저장한 후 종료하는 예제이다.


console.log('웹 페이지를 로드하는 중');
var page = require('webpage').create();
var url = 'https://ko.wikipedia.org/'; // 대상 URL: 한국어 위키백과
page.open(url, function (status) {
if (status === 'success') { // 페이지 로딩 성공 시
console.log('페이지를 로드함');
page.render('wikipedia.org.png'); // 'wikipedia.org.png' 파일로 스크린샷 저장
} else {
console.log('페이지 로드 실패: ' + status);
}
phantom.exit(); // PhantomJS 종료
});

4. 생태계

PhantomJS의 API는 헤드리스 브라우저와 상호 작용하는 표준 방법으로 가치를 인정받아, 이를 기반으로 다양한 파생 프로젝트들이 등장했다. 대표적으로 SlimerJS, TrifleJS, CasperJS 등이 있다.

[[야후!](Yahoo!)]는 웹사이트의 성능 지표를 수집하기 위해 PhantomJS를 활용하는 YSlow 버전을 개발했다.

4.1. SlimerJS

SlimerJS는 PhantomJS와 유사한 API를 제공했지만, WebKit 대신 Mozilla의 Gecko 브라우저 엔진을 기반으로 했다.

4.2. TrifleJS

PhantomJS의 API는 헤드리스 브라우저와 상호 작용하는 표준 방법으로 가치를 인정받았다. SlimerJS가 WebKit 대신 Mozilla의 Gecko 브라우저 엔진을 기반으로 PhantomJS와 유사한 API를 제공했던 것처럼, TrifleJS는 인터넷 익스플로러의 MSHTML 엔진을 대상으로 개발되었다.

4.3. CasperJS

PhantomJS 출시 직후, Nicolas Perriault는 PhantomJS를 기반으로 자동화된 웹 페이지 테스트를 위한 클라이언트로서 기능을 확장하는 라이브러리 모음인 CasperJS를 개발했다. 이를 통해 사용자들은 PhantomJS를 활용하여 BDD 테스트를 생성할 수 있게 되었다. CasperJS의 마지막 릴리스는 2017년에 이루어졌다.

5. 사용자

주목할 만한 여러 회사에서 PhantomJS를 사용했다. 대표적인 예로 트위터, 링크드인, 넷플릭스, 타임 워너 케이블 등이 있다. 각 회사의 구체적인 활용 사례는 아래 하위 섹션에서 확인할 수 있다.

5.1. 트위터

트위터는 2015년 기준으로 단위 테스트를 위해 QUnit과 PhantomJS를 사용했다.

5.2. 링크드인

링크드인은 2011년 당시 성능 테스트를 위해 PhantomJS 기반 도구를 사용했다.

5.3. 넷플릭스

넷플릭스는 2014년 기준으로 사이트를 직접 방문하지 않고도 사이트의 상태를 파악하기 위해 PhantomJS를 기반으로 구축된 헤드리스 브라우저인 Sketchy를 사용했다.

5.4. 타임 워너 케이블

타임 워너 케이블은 2012년 기준으로 젠킨스 연속 통합을 위해 CoffeeScript, Jasmine, JUnit XML과 함께 PhantomJS를 사용했다.