일부 웹 서비스는 headless 브라우저 접근을 차단한다.
이 때문에 서버 환경에서 크롤링을 진행하려면, GUI가 포함된 무겁고 비용이 높은 윈도우 서버를 사용하는 경우가 많았다.
하지만 리눅스 기반 CLI 환경에서도 가상 디스플레이를 구성하면, headful 브라우저를 실행해 크롤링을 수행할 수 있다.
Xvfb는 실제 모니터가 없어도 GUI 애플리케이션을 실행할 수 있게 해준다.
apt install xvfb
Xvfb는 아래의 명령어로 가상 디스플레이를 구축할 수 있다.
xvfb :99 -screen 0 1920x1080x24 &
사용된 옵션 정보는 다음과 같다.
:99 가상 디스플레이 번호-screen 0 첫 번째 스크린1920x1080x24 해상도 / 색 깊이 (24bit)& 백그라운드 실행export DISPLAY=99
DISPLAY 환경 변수는 리눅스가 사용하는 표준 환경 변수이다.
따라서 위에서 구축한 가상 디스플레이 번호로 환경 변수를 세팅해주면 된다.
python crwal.py
위에서 설정한 디스플레이 환경 변수로 인해 추가적인 명령어 없이도 크롤러는 가상 디스플레이를 통해 Headful 크롤링을 수행하게 된다.
xvfb-run는 위 과정을 명령어 한 줄로 처리하는 래퍼이다.
xvfb-run -s "-screen 0 1920x1080x24" python crawl.py
-a: 비어있는 display 번호를 탐색하여 실행-s: Xvfb에 전달할 인자-screen <screen_number> <resolution>x<depth>)