[ Tor ] 使用 Tor進行網路爬蟲
其實透過 Tor爬蟲好像不會比較快,但省下很多驗證或被警告的麻煩,不過這樣真的很不乖,好孩子別學。
socks模塊為 Python提供了一個標準的類似 socket的接口,用於通過 SOCKS代理進行連接。
安裝 Tor和啟動 Tor。(不是 Tor Browser)
如果是其他系統的話安裝起來比較麻煩,可以參考 Tor官網中的 Expert guides。
開啟另一個 Terminal進入 python shell。
把 1-4的程式碼寫在程式的最前面,程式應該就可以透過 Tor訪問網際網路了。
用一般的瀏覽器開啟 http://icanhazip.com,Terminal輸出的 IP與真實的 IP應該是不同的。
Tor更新 IP位置的頻率是每 20分鐘一次,用於爬蟲,頻率可能太低。
手動更新 IP位置,需要再開啟另一個 Terminal輸入。
或設定一個固定或隨機的頻率執行下列程式碼更新 IP
如果 Tor當掉,或什麼不明原因無法關閉,可以透過輸入以下代碼強制關閉。
本文參考 Anonymous Web Scraping using Python and Tor、How to request new TOR identity in terminal和 stop/restart tor。
socks模塊為 Python提供了一個標準的類似 socket的接口,用於通過 SOCKS代理進行連接。
$ pip install pysocks請求是一個使用 Python編寫的 HTTP庫,它是包裝在 urllib上。
$ pip install requestsMacOS可以直接用 Homebrew安裝。
安裝 Tor和啟動 Tor。(不是 Tor Browser)
$ brew install tor $ tor # 啟動 $ $ sudo apt-get install tor # Ubuntu可以用 apt-get安裝,安裝後會自動啟動,每次啟動電腦都將自動開啟 tor。 $ sudo update-rc.d -f tor disable # 如果不希望 tor自動啟動可以輸入該指令。電腦重啟後,tor將不再自動啟動。 $ tor # 關閉自動啟動後,可使用與 MacOS一樣的方式啟動。
如果是其他系統的話安裝起來比較麻煩,可以參考 Tor官網中的 Expert guides。
開啟另一個 Terminal進入 python shell。
>>> import socks >>> import socket >>> socks.setdefaultproxy(proxy_type=socks.PROXY_TYPE_SOCKS5, addr="127.0.0.1", port=9050) >>> socket.socket = socks.socksocket >>> >>> import requests >>> print(requests.get("http://icanhazip.com").text) 163.172.142.153, 4是在設定程式默認的訪問通道,將其設定為 Tor提供的通道,其中 Tor默認的通道是 9050。
把 1-4的程式碼寫在程式的最前面,程式應該就可以透過 Tor訪問網際網路了。
用一般的瀏覽器開啟 http://icanhazip.com,Terminal輸出的 IP與真實的 IP應該是不同的。
Tor更新 IP位置的頻率是每 20分鐘一次,用於爬蟲,頻率可能太低。
手動更新 IP位置,需要再開啟另一個 Terminal輸入。
$ killall -HUP tor $ $ sudo killall -HUP tor # Ubuntu需要加上 sudo再回剛的 Terminal,一邊用剛的指令更新,另一邊 print IP位置,就可以發現 IP有在更新。
>>> import os >>> os.system("killall -HUP tor") >>> >>> os.system("sudo killall -HUP tor") # Ubuntu需要加上 sudo
如果 Tor當掉,或什麼不明原因無法關閉,可以透過輸入以下代碼強制關閉。
$ killall tor $ $ sudo killall tor # Ubuntu需要加上 sudo
本文參考 Anonymous Web Scraping using Python and Tor、How to request new TOR identity in terminal和 stop/restart tor。
留言
張貼留言