티스토리 뷰

목차



    반응형

    목표:라즈베리파이를 이용해 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()

     

    출처:https://m.blog.naver.com/hcheong/221960206418

     

    반응형