티스토리 뷰
목차
목표:라즈베리파이를 이용해 ip를 실시간으로 변경 후 원하는 웹사이트에 접속
1.라즈베리파이 df를 통해 저장용량 확인.(패키지 설치 용량 여분 확인)
2.파이썬 스크립트에서 tor 브라우저 사용되는지 확인.(현재 ip확인할 수 있는 사이트 접속)
3.원하는 웹사이트에 ip 변경하여 접속이 가능한지 확인.
4.재부팅될때마다 실행 되도록 설정.
TOR + Stem + Selenium with Python 사용법 아래 참고
안녕하세요? Tor 과 Selenium을 Python3에서 사용하려합니다.
1. 먼저 tor 을 설치합니다.
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt-get install tor
2. 파이썬에서 tor을 쓰려면 stem 이라는 라이브러리를 설치하여야 합니다.
$sudo apt-get install python3-stem
3. tor 비밀번호를 설정하고 생성된 문자열을 복사하여 놓습니다.
터미널창에서 tor 비밀번호를 설정하고 생성된 코드를 복사하여 놓습니다. ('16:' 이후 문자열을 카피합니다)
$tor --hash-password XX비밀번호설정XX
16:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
4. tor 설정파일을 변경합니다.
torrc 파일을 열어 두가지 사항을 수정합니다.
$sudo nano /etc/tor/torrc
4.1 컨트롤포트 9015 앞의 해쉬마크를 지워 uncomment 하세요.
ControlPort 9051
4.2 아래 '16:' 뒤에 앞에서 복사한 문자열을 붙여넣기 합니다. 또한 앞의 해쉬마크를 지워 uncomment 하세요.
HashedControlPassword 16:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
4.3 Tor을 재실행 합니다.
$sudo service tor restart
5. 셀레니움과 크롬드라이버를 설치합니다.
$sudo pip3 install selenium
$sudo apt install chromium-chromedriver
6. python 프로그램으로 확인
selenium에서 크롬옵션으로 tor를 구동합니다. stem으로 ip를 갱신합니다.
#! /user/bin/python3
# -*- coding: utf-8 -*-
import time
from stem import Signal
from stem.control import Controller
from selenium import webdriver
with Controller.from_port(port=9051) as controller:
while True:
url="https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query=%EB%82%B4%EC%95%84%EC%9D%B4%ED%94%BC"
hostname="socks5://127.0.0.1"
port="9050"
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=%s' % hostname + ":" + port)
driver = webdriver.Chrome(options=chrome_options)
driver.get(url)
time.sleep(20)
driver.quit()
controller.authenticate('')
controller.signal(Signal.NEWNYM)
if controller.is_newnym_available() == False:
print("waiting for Tor to change IP: " + str(controller.get_newnym_wait()) + " sec")
time.sleep(controller.get_newnym_wait())
controller.close()