N잡러가 되기 위해 특정 사이트를 주기적으로 (1시간에 3회) 크롤링해오는 코드를 짰다.
1. 파이썬크롤링 후 웹페이지에 게시하고
2. 주문접수 폼에서 주문을 받아서
3. 받은 폼 정보를 기반으로 풀 자동화를 통해
물건을 판매를 알선하고 원 판매자로부터 수수료를 받는 부업!
헌데... 모든 코드 작성과 테스트가 끝날 무렵 나를 충격에 빠트린것이 있었으니...
바로.. IP가 차단 된 것이다. 판매자와 일종의 동업자(라고 말하고 하청업자라고 읽는다) 관계지만 그래도.. IP차단이라니.. 하지만 판매자는 판매자일 뿐 개발자가 아니기도 하고.. 이렇게 내가 편하게 수익을 가져가게 되는 것을 알게되신다면... 수수료를 낮추실 수도 있어 risky하다. 하핳...
그래서!
Tor라는 솔루션을 활용해 IP차단을 우회했다.
먼저 기존 코드를 건드리기보다는 테스트를 위한 코드를 작성했는데 그 코드를 공유한다.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager #Chrome webdriver를 자동으로 다운받도록 추가
import os
# To use Tor's SOCKS proxy server with chrome, include the socks protocol in the scheme with the --proxy-server option
# PROXY = "socks5://127.0.0.1:9150" # IP:PORT or HOST:PORT
torexe = os.popen(r'/opt/homebrew/bin/tor/')
PROXY = "socks5://localhost:9050" # IP:PORT or HOST:PORT
service = Service(executable_path=ChromeDriverManager().install()) #Chrome webdriver를 최신버전으로 사용
#service = Service(executable_path=ChromeDriverManager(version="114.0.5735.90").install())
options = webdriver.ChromeOptions()
options.add_experimental_option("detach", True)
options.add_argument('--proxy-server=%s' % PROXY) #추가됨
driver = webdriver.Chrome(service=service, options=options)
driver.get("http://icanhazip.com/")
일단 맥을 기준으로 설명하자면, 간단한 순서다.
1. Tor를 설치
- 설치 과정에서 고생을 많이 했다( brew install tor 를 했는데, brew 가 Apple silicon 프로세서 버전이 아니라 업그레이드 하라고.. 해서 했는데 안되고.. 안되길래 지우고 다시 깔았더니 파이썬 인터프리터가 날아가고.. 모든 모듈을 새로 설치해줬다 ㅠㅠ)
2. 파이썬 코드로 테스트(위 코드)
- torexe = os.popen(r'/opt/homebrew/bin/tor/') 부분의 경로는 터미널에서 which tor 에서 나온 경로를 그대로 입력해주면 된다.
- 나머지는그대로 해도 무방하다. 기본적으로 tor는 포트 9050을 쓴다.
- detach는 크롬창이 계속 열려있도록 하는 옵션이다.
- icanhazip.com 은 현재 내 pc의 ip 주소를 확인할 수 있는 심플한 사이트이다.
3. 실제 파이썬 코드에 삽입후 구동
- 잘 되는 것을 확인했다.
댓글
댓글 쓰기