[남용 금지] Tor에서 익명성을 확보하면서 Selenium으로 롤업.
About
파이톤으로 커튼을 칠 때 익명성을 확보하고 싶습니다.😎
주의
훌륭한 분들은 기사를 자세히 쓰실 테니 그쪽을 참고하세요.
쓸것
다른 사람에 대한 보도가 비교적 상세하기 때문에 상술한 내용은 상세하지 않다
Tor 익명화된 경로에 사용되는 서비스입니다.대리로 사용하다.
Selenium 코드를 사용하여 브라우저의 응용을 조작한다.
작업 환경
이번 작업 환경은 맥[1],python3이며, 이번 브라우저는 크롬을 사용합니다.
컨디션
version
macOS
12.3.1
Python3
3.9.12
Chrome
100.0.4896.127
도구 클래스 설치
Tor 설치
Homebrew 설치.또 홈brew 자체 설치는 다른 사람의 보도에 맡길 예정이다.
터미널에서 실행
brew install tor
Python에 사용되는 패키지 설치
seleniumSelenium/WebDriver를 조작하는 데 사용되는 Python 봉인.
webdriver-manager WebDriver를 관리하는 파이썬 패키지입니다.사용 중인 브라우저 버전에 따라 웹 드라이브를 다운로드합니다.👍🏻
pip3 install selenium webdriver-manager
파이썬 스크립트
시스템에서 ptyhon3이 설정되었습니다.다음 스크립트를 적당한 위치에 저장합니다.
tor.sh
#! /usr/bin/env python3
# Tor経由でスクレイピング
import os.path
import subprocess
from subprocess import PIPE
from time import sleep
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 設定
PROXY = "socks5://localhost:9050" # Torのデフォルトポート
# Seleniumをあらゆる環境で起動させるChromeオプション
options = Options()
options.add_argument('--disable-gpu')
options.add_argument('--disable-extensions')
options.add_argument('--proxy-server=%s' % PROXY)
options.add_argument('--start-maximized')
# ダウンロードのデフォルト先を変更している
# 不要であればコメントアウトしても問題ない
DOWNLOAD_DIR = os.path.expanduser('~/Downloads')
prefs = {
"download.default_directory": DOWNLOAD_DIR
}
options.add_experimental_option("prefs", prefs)
tor = None # torプロセス変数
driver = None # web-driver変数
try:
# torの起動
tor = subprocess.Popen(["tor"], shell=True, stdout=PIPE, stderr=PIPE)
# ブラウザの起動。ここではChromeを起動している
driver = webdriver.Chrome(ChromeDriverManager().install(),
chrome_options=options)
# 待機用
wait = WebDriverWait(driver=driver, timeout=30)
# 起動画面をtorプロジェクトのトップページ
driver.get('https://check.torproject.org')
# 全て読み込むまで待つ
wait.until(EC.presence_of_all_elements_located)
# Torの確認
# Tor経由のアクセスしているとTitleタグが congratulations となる
if "congratulations" in driver.title.lower():
print("torが有効です")
# とりあえず DuckDuckGo を開く
driver.get('https://duckduckgo.com')
# TODO: ここでスクレイピングする
# とりま、一旦1日開きっぱなし
sleep(60*60*24)
else:
# もしTorがうまく動作していない場合はエラーで中断
# Torの起動に失敗した場合、そもそもプロキシの設定でエラーとなるのでここまでこないはず
raise Exception("torが有効ではありません")
except Exception as e:
print(e)
print("エラーが発生しました。")
if driver is not None:
driver.close()
driver.quit()
finally:
# torプロセスを終了させる
if tor is not None:
tor.kill()
실행하다
그대로 집행할 수 없기 때문에
tor.sh
에 집행 권한을 부여한다터미널에서 실행
chmod +x tor.sh
실행
터미널에서 실행
./tor.sh
브라우저가 열리면 Tor의 검사 웹 사이트에 액세스할 수 있습니다.익명성이 확인되면 DuckDuckGo 이동합니다.
과제.
M1과 intel 모두 시도↩︎
Starter Tor Brower로 사용하기 편하다↩︎
Reference
이 문제에 관하여([남용 금지] Tor에서 익명성을 확보하면서 Selenium으로 롤업.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/harurow/articles/7b845931350cb8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)