# tor爬蟲 ###### tags: `python` `tor` 如果想用proxy可以不用大費周章的自己建一個proxy server,直接使用tor作為底層socket的代理連接即可 相關文章在此 > https://hardliver.blogspot.com/2017/06/web-crawler-tor-ip.html > 注意!此方法無法繞過cloudflare! 避免文章遺失還是寫一下 ```bash= brew install tor # on Mac sudo apt-get install tor # ubuntu安裝方法,會自動啟動 sudo update-rc.d -f tor disable # 不想要直接啟動可以打這行,下次開機就不會啟動了 tor # 啟動tor ``` ### socket代理 ```python= import socks # pip install Pysocks import socket # tor預設port是9050 socks.set_default_proxy( proxy_type=socks.PROXY_TYPE_SOCKS5, addr="127.0.0.1", port=9050 ) # 替換掉原本的socket socket.socket = socks.socksocket ``` 這樣在使用底層是socket的模組時就會自動代理了。 目前測試底層為socket的模組 - requests - aiohttp 如果selenium或是pyppeteer想使用的話 ```python= # selenium 沒試過不知道能不能使用 chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--proxy-server=socks5://localhost:9050') # pyppeteer 已驗證成功 browser = await launch( handleSIGINT=False, handleSIGTERM=False, handleSIGHUP=False, headless=True, args=[ "--no-sandbox", "--disable-setuid-sandbox", "--disable-dev-shm-usage", "--disable-gpu", "--no-zygote", "--proxy-server=socks5://localhost:9050" ] ) ``` 如果想用python刷新proxy的話可以這樣 ```python= import os os.system("killall -HUP tor") # ubuntu 需掛sudo os.system("sudo killall -HUP tor") ``` > P.S. 如果是在docker或是k8s這種沒有基礎套件的環境下要先安裝以下套件 ```bash= $ apt-get install psmisc $ apt-get install sudo ```