Puppeteer

Puppeteer는 근래 써본 node js 패키지 중에 가장 맘에 들었던 패키지라고 할 수 있을 것 같다. 정말 이 패키지는 사용자도 많고 기능도 풍부할 뿐더러 워낙 요긴하기 때문에 그렇기도 하지만.

Puppeteer가 뭔지 모를 이들을 위해서 이게 뭔가 한마디 하면, nodejs에서 web browser를 control할 수 있게 하는 패키지이다. 이를테면 업로드하는 것을 자동화하겠다거나 어디가서 어떤 자료를 받아오게 한다든가 혹은 글을 올린다거나 좋아요를 눌러준다든가 로그인을 한다든가 등등의 웹브라우저로 할 수 있는 모든 일을 시킬 수가 있다.

뭐 당연히 이쪽이 돈이 될 수 있는 일이 많으니까 puppeteer와 ip 주소 속이기만 잘 번갈아 사용하면 조회수 올리기, 추천수 올리기를 할 수 있다. 누군가 잔뜩 제공한 아이디 무더기 까지 있으면 컴퓨터가 여러 대 필요할 것도 없이 같은 PC에 잔뜩 프로세스를 벌여두고 하면 된다. Tor같은 것을 쓰면 출처를 다양하게 할 수 있으니까 의미가 있지 싶기도 하지만 Tor를 통해서 들어오는 트래픽을 필터링한다든가 별도 취급하는 사이트들도 있어서 여기엔 새로운 노우하우가 필요할지 모르지만, 어차피 이쪽 업계에서 일하는 사람들은 ip 주소를 어떻게 처리해야할지 잘 들 알 것 같다.

나야 개인적인 용도로 사용하는 것이니까 이를테면 주기적으로 뭘 업데이트 해줘야 하는데, 그 방법이 딱 한가지로 제한되어있다거나 (그러니까 Web interface를 통해서만 해야 한다든가) 하면 이 방법을 쓴다. 매우 간편하고 편리하기 때문에 일단 한번 자동화해놓으면 정말 편하다. 그런데 환경을 바꾼다거나 새로 셋업해야 한다고 하면 골치 아파지긴 한다. 따라서 이렇게 자동화해놓고 사용빈도가 매우 높다고 하면 이 방법을 권하지만 어쩌다 한 두 번 쓰고 말거라면 안하는 게 낫다. 수고가 엄청나게 들어가니까.

신기한 게 linux에 puppeteer를 올려보니 chromium이 따라서 설치되는 것을 알 수 있었다 (arch linux 기준). MacOS에서는 이미 설치되어있는 chrome을 그냥 가져다썼는데 말이다. 더욱 뭐한 것은 puppeteer가 platform indepedent한 node js 위에서 돌아가는 것이니까 같은 스크립트로 MacOS든 Linux에서든 울궈먹을 수 있을 줄 알았는데 안된다는 것이다. 설명하기가 좀 복잡한데, 어쨌든 잘 안된다.

MacOS와 Linux상에 유사점이 많으니까 다 되겠지 싶은 게 매우 많은데, 그렇지 않은 게 더 많다라는 것을 알아두어야 한다. 왜?

MacOS는 해당 사용자가 대개 administrator로 되어있고 일반 사용자의 모양을 하고 있지만 사실상 전지전능한데다 MacOS의 보안 특성상 의미없는 계정을 만드는 것을 허용하지 않기 때문에 뭘 가져다가 설치하든 해당 사용자의 권한으로 실행되는 반면, linux에서는 해당 서비를 위한 계정을 만들어놓고 진행하기 때문에 여기서 많은 충돌 사항이 발생한다.

그러니까, MacOS에서는 해당 서비스의 설치/운용자가 나 이기 때문에 내가 뭐든지 access할 수 있고 또 그 서비스에서는 내 권한으로 되어있는 자원들을 마음 껏 이용할 수 있는데, Linux에서는 그게 전부 다 허용이 안된다. 만일 MacOS에서 모든 행위의 주체가 ‘나’인 것으로 해서 서비스 및 관련 스크립트를 작성해놨다면 Linux에서는 그것이 제대로 동작하지 않는다. 당장 파일 쓰기 읽기 부터 문제가 생기고 모든 프로세스가 꼬여버릴 것이다. 그 모든 것을 해결하는데, 사실상 새로 셋업하는 것과 맞먹는 시간이 들게 된다.

그래서! 잠자코 조용히 돌아가는, 또 요긴한 서비스는 리눅스 머신에서 돌아가게 하는 게 속편하다. 괜히 그것을 MacOS에 가져다가 서비스하게 되면 설치라든가 운용은 매우 쉽지만 (모든 행위의 주체/권한이 ‘나’로 되어있으니까) 언젠가는 always on 상태로 돌아가게 되는 linux에게 맡겨야 할 때가 오게 되고 그러다보면 이미 어떻게 셋업하는지 까맣게 잊고 난 뒤에 새로 작업을 하게 되니까 말이다.

Puppeteer로 크게 다르지 않다. Linux에서 셋업해서 돌게 하는 게 아주 속편하다. Linux 세상에서도 unbuntu니 centos니 fedora니 하던 것과 멀리하고 arch linux로 옮겨온 뒤로는 아주 즐거워졌다. 왜? 앞서 열거한 애들은 버전을 엄청 가린다. arch linux는 고정된 버전이란 게 없고 업데 할 때마다 새로워지기 때문에 요즘 세상 변화에 잘 들어맞는다. 어제 잘 되던 게 오늘 안될 수도 있다라는 것을 아주 빨리 알 수 있다. 물론 이 아이도 업데 하는 것을 멈추고 놔두면 어떻게 썩어갈지 알 수 없긴 하지만. 어차피 뭐든 관리하고 운용하는 입장에서는 업데의 임팩트가 조금씩 자주 오는 게 낫다. 갑자기 쎄게 명치 때리듯 오게 되면 쓰러져서 다시 일어나기 힘들 정도로 그 충격이 엄청나기 때문이다.