크롤링 작업을 하면서 IP를 변경하며 작업을 진행해 보려고 합니다. 방법으로는 2가지가 있습니다.

  • OpenVPN 을 활용하여 IP 변경
  • Tor Browser 의 변경된 IP Proxy 를 활용


OpenVPN

Run

IPTIME 공유기에서 OpenVPN 클라이언트 세팅하기 를 참고하면 별도의 서버가 없어도 OpenVPN 관련 파일을 vpngate.net 다운 받아서 활용이 정상적으로 동작하는 것을 확인할 수 있었습니다.

$ sudo openvpn --config /etc/openvpn/vpngate.ovpn

Tun Network

문제는 작업을 진행하는 서버가, ssh접속 또는 Domain 연결등이 되어 있을 때, openvpn 을 실행하면 설정값들이 꼬여서 문제가 발생하는 것을 확인할 수 있었습니다.

$ ifconfig

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
  inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
  ether 55:55:00:ff:d1:ca  txqueuelen 1000  (Ethernet)

wlp82s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
  inet 192.100.1.226  netmask 255.255.0.0  broadcast 192.100.255.255
  inet6 aa80::aa29:11aa:a2a2:c1ad  prefixlen 64  scopeid 0x20<link>
  ether 11:e1:f1:11:c1:61  txqueuelen 1000  (Ethernet)

위의 실행내용은 원본의 네트워크 설정 내용이고, 아랫 내용이 open_vpn을 실행한 뒤 네트워크 설정 내용 입니다. open vpn 을 실행하면 tun0 가상IP 네트워크가 추가된 것을 확인할 수 있습니다.

$ ifconfig

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
  inet 10.211.1.109  netmask 255.255.255.255  destination 10.211.1.110
  inet6 fe80::ede4:3a36:abc0:8525  prefixlen 64  scopeid 0x20<link>

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
  inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
  ether 55:55:00:ff:d1:ca  txqueuelen 1000  (Ethernet)

wlp82s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
  inet 192.100.1.226  netmask 255.255.0.0  broadcast 192.100.255.255
  inet6 aa80::aa29:11aa:a2a2:c1ad  prefixlen 64  scopeid 0x20<link>
  ether 11:e1:f1:11:c1:61  txqueuelen 1000  (Ethernet)

OpenVPN은 Eth0(외부)로 부터 VPNclient에게 암호화된 패킷을 받고, 해독한 뒤에 tun0으로 내보내면 itpables과 routing engine에 의해 Eth1 또는 Eth0으로 MASQUERADE 되어 전송됩니다. 또한 VPNClient로 들어오는 패킷도 route 설정에 의하여 tun0으로 전송됩니다. tun0은 OpenVPN이 만든 가상 네트워크 인터페이스 입니다. OpenVPN 2.4 간편 구성(TUN)

이로써 대응방법을 생각하면 동일한 네트워크에서 크롤링만 실행하는 별도의 서버 를 설치한 뒤 open_vpn 을 실행하는 것으로 원하는 결과를 얻을 수 있었습니다.


Tor Browser

Install

Tor 브라우저를 설치하는 방법은 다음과 같습니다. 아랫내용으로 확인가능한 내용은 Tor 브라우저에서 9050 포트를 활용하여 Proxy 변경된 IP 주소로 작업을 진행할 수 있습니다.

$ sudo apt update
$ sudo apt install tor
$ netstat -tlp | grep tor
tcp  127.0.0.1:9050   0.0.0.0:*   LISTEN   16205/tor       

Python Codes

import requests

# Tor SOCKS proxy configuration
proxies = {
    'http': 'socks5h://127.0.0.1:9050',
    'https': 'socks5h://127.0.0.1:9050'
}

url = 'http://api.ipify.org?format=json'

try:
    response = requests.get(url, proxies=proxies)
    print(f"Response: {response.json()}")
except requests.exceptions.RequestException as e:
    print(f"An error occurred: {e}")


참고사이트