Puppeteer에서 SSH 터널링 프록시 사용하기
dev | 2024-10-19
한국 공공 사이트들은 해외 접속을 차단한 경우가 참 많다. 해외에 있는 서버에서 접근이 안된다. 외국에 나가 있으면 국민이 아닌건지 세금으로 만든 사이트를 왜 그렇게 운영하는지 모르겠는데, 그래서 국내에 프록시를 두고 접근하게 설정을 해봤다.
프록시 서버를 만드는 방법은 다양하지만 SSH 터널링이 가능하다면 가장 간단한 방법으로 생각된다. SSH 터널링은 SSH 포트 포워딩이라고도 하는데 SSH를 통해 임의의 데이터를 전송하는 방법을 말한다. SSH 서버가 이쪽에 있는지 저쪽에 있는지에 따라서 설정이 달라지고 특정 포트가 아니라 여러 포트를 포워딩하게 되면 프록시 서버로도 사용할 수 있다. 브라우저에서 프록시로 사용하려면 후자인 다중 포트 포워딩을 사용하면 된다.
ssh -D localhost:33333 username@192.168.0.1
이렇게 하면 SSH 접속이 되는데 포트 포워딩이 활성화 되어 localhost:33333로 트래픽을 보내면 192.168.0.1를 경유해 보내게 된다.
퍼피티어(puppeteer)에서 브라우저를 열 때 이 프록시를 설정해주면 이를 경유해 브라우징을 할 수 있게 된다.
const browser = await puppeteer.launch(['--proxy-server=socks5://localhost:33333']);
시스템 데몬으로 만들어두면 편하다. vi /etc/systemd/system/krproxy.service
[Unit]
Description=KR proxy
After=network.target
[Service]
Restart=on-failure
RestartSec=5
ExecStart=/usr/bin/ssh -N -D localhost:33333 username@192.168.0.1 -p 2222
[Install]
WantedBy=multi-user.target
그런데 다른 문제가 있어서 계속 사용은 못 하고 결국 국내로 서버를 이전했다.
Comments