PhantomJS는 헤드리스 WebKit 브라우저로, 웹 페이지 자동화, 스크래핑, 테스트 등에 활용됩니다. 이 글에서는 PhantomJS의 설치부터 기본 설정까지 다룹니다.

Deprecated 알림: PhantomJS는 2018년 이후 더 이상 활발히 개발되지 않습니다. 새 프로젝트에는 Puppeteer나 Playwright 같은 현대적인 대안을 권장하지만, 레거시 시스템 유지보수나 참조 목적으로는 여전히 유용한 정보입니다.

설치 (Install)

Homebrew로 설치 (macOS)

brew update && brew install phantomjs

직접 다운로드

PhantomJS 다운로드에서 다운로드 후 /usr/local/bin에 추가합니다.

설정 (Configuration)

명령줄 옵션

PhantomJS는 다양한 명령줄 옵션을 지원합니다.

phantomjs --cookies-file=jar-of-cookies.txt script.js

JSON 설정 파일

명령줄 인자 대신 JSON 파일로 설정할 수 있습니다. JSON 속성명은 명령줄 옵션과 대응됩니다.

phantomjs --config=config.json script.js

config.json 예시:

{
  "cookiesFile": "cookie-jar.txt",
  "ignoreSslErrors": true
}
  • cookiesFile--cookies-file 옵션과 대응됩니다.

명령줄 인자 처리 (Arguments)

스크립트에서 명령줄 인자를 받아 처리할 수 있습니다.

var system = require('system');
console.log(system.args.length);

if (system.args.length > 0) {
  console.log(JSON.stringify(system.args));
}
phantom.exit();

실행:

phantomjs script.js arg1 arg2 arg3

종료 코드 (Exit)

PhantomJS는 종료 코드를 통해 성공/실패를 알릴 수 있습니다.

  • 0: 성공
  • 1: 실패
console.log('Running the PhantomJS exit demo...');

if (Math.floor(Math.random() * 10) % 2 === 0) {
  console.log('Exiting cleanly from PhantomJS!');
  phantom.exit();  // 종료 코드 0 (기본값)
} else {
  console.log('Exiting with an error status.');
  phantom.exit(1);  // 종료 코드 1
}

쉘에서 종료 코드 확인:

phantomjs script.js
echo $?

다음 단계

PhantomJS의 기본 설정을 익혔다면, 다음 포스트에서 웹페이지 조작 방법을 알아보세요.