發表文章

目前顯示的是有「tor」標籤的文章

[ Tor ] 架設暗網

圖片
沒事不要逛暗網,更別說是在暗網上架站了。 如果真的有什麼不可告人的秘密想要在暗網上架站分享,請務必遵守以下規則: 不要在這台服務器上運行或做其它事情。 在新服務器或VPS上進行全新安裝。 不要保留或運行來自VPS提供商任何服務。 用Paypal支付你的VPS服務,不過最好使用Bitcoin。 不要向VPS提供關於你的任何身份信息。 不要在這台服務器上運行Tor中繼,因為Tor中繼在真實世界的公開IP是公開的。 不要從這台服務器發送電子郵件。 不要運行討厭或卑鄙Web軟件。如果你的Web軟件有管理員登陸或管理員賬號,把密碼改成複雜的26個字符組成的密碼。很多Tor網站被攻破只是某人猜到了管理員登陸密碼。 避免使用任何JavaScript之類腳本的Web軟件。 確保你的Web應用不會洩露任何錯誤信息或身份信息,比如在錯誤信息中的真實公開IP。 審查Web前端代碼,確保它不會從jquery.com、Google Fonts或任何外部服務拉取資源。 及時做好VPS的安全更新。 以下只分享如何快速架站,安全的部分請自行拿捏。 首先先安裝 tor。 $ brew install tor # mac $ $ sudo apt-get install tor # ubuntu $ sudo update-rc.d -f tor disable # 關閉自動啟動 安裝 Tor後,找個位置建立一個 tor_server資料夾和一個 config檔,如下。 . tor_server └── torrc.in 接著編輯 torrc.in。 # torrc.in HiddenServiceDir /path/to/tor_server/hidden_service/ HiddenServicePort 80 127.0.0.1:8000 執行 tor,並等待 tor連接至洋蔥網路。 $ tor -f torrc.in Tor將會針對 HiddenServicePort上指定的網址( 127.0.0.1:8000)轉址為洋蔥網路的 port 80( http專屬的 port),官方說法是不需要特別用 SSL加密,tor有自己的加密機制。 Tor會在指定的路徑( HiddenServiceDir)建立 hidden_service資料夾...

[ Selenium ] 偽造身份進行網路爬蟲

圖片
網路爬蟲做到這步,通常是在要大量訪問同一個網站,從事某些行為。這真的超不乖的,好孩子千萬別學。 訪問某些網站時,網站其實能因應不同的瀏覽器、作業系統等,提供不同的回應。例如下載軟體時會自動導向到適合的下載連結。這些訊息都藏在 header中的 user-agent中。 當大量訪問同一個網站,若 server端的警覺心比較強的情況下只依賴 Tor進行爬蟲,會發現每個訪問的用戶都來自一樣的瀏覽器和作業系統。 server端可能會使大量訪問的目的失效。 因此除了串改 ip外,最好也修改 user-agent,使 server端無法有效辨識。 Tor的部分可以參考之前分享的 " 使用 Tor進行網路爬蟲 " 和 " 多開 Tor client "。 >>> from selenium import webdriver >>> from selenium.webdriver.chrome.options import Options >>> >>> opts = Options() >>> >>> opts.add_argument("--incognito") # 使用無痕模式。用 selenium開瀏覽器已經很乾淨了,但疑心病重的可以用一下 >>> >>> proxy = "socks5://localhost:9050" >>> opts.add_argument('--proxy-server={}'.format(proxy)) # 讓 selenium透過 tor訪問 internet >>> >>> ua = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0" >>> opts.add_argument("user-agent={}".format(ua)) # 使用偽造的 use...

[ Tor ] 多開 Tor client

圖片
之前 " 使用 Tor更新 IP位置 " 文中提到 Python要透過 Tor爬蟲前,須透過 Tor提供的 Socket port來連接 Tor。 最近因為朋友有需求,稍微花了一點時間研究了一下如何多開 Tor client和獨立更新 IP位置。 當要使用大量 IP同時訪問同一個網站,就有必要讓 Tor提供兩個以上的 Socket port來提供不同的 IP位置。 首先,我在桌面上建立了一個 tor_confs資料夾,內容大概是長下面這樣。 . tor_confs ├── torrc1.in └── torrc2.in 要多開 Tor需要為各個 Socket port建立各自的 conf檔。 # torrc1.in SocksPort 9050 ControlPort 9051 DataDirectory /Users/XXXXXXXX/Desktop/tor_confs/tor1 ExitNodes {tw},{jp},{kr},{hk},{sg} # torrc2.in SocksPort 9060 ControlPort 9061 DataDirectory /Users/XXXXXXXX/Desktop/tor_confs/tor2 ExitNodes {tw},{jp},{kr},{hk},{sg} DataDirectory需設定絕對路徑,設定相對路徑在更新 IP時會報錯。 ExitNodes則可有可無,因為個人需求需限制 Exit node的國家。各國的代碼可以點擊 這裡 查詢。 完成後只需要在 tor_confs資料夾內使用 terminal執行 $ tor -f torrc1.in & tor -f torrc2.in 兩個 Socket port會各自連上不同的 IP位置,這樣就算完成了。 執行後 Tor就會自動在 DataDirectory設定的路徑建立所需的檔案,資料夾結構如下。 . tor_confs ├── tor1 │   ├── cached-certs │   ├── cached-microdesc-consensus │   ├── cached-microdescs.new │   ├── lock │...

[ Tor ] 讓 Chrome透過 Tor連上網際網路

圖片
最近 WBSC在 YouTube上直播 U18的比賽,有效地消磨宅宅我 多餘的生命 空閒的時間,但只要是台灣的比賽通通限制 IP。 像我這種在外討生活,只靠網路過日子的宅宅,原則上是不會妥協的。 原本只打算用 VPN作跳板的,但免費的 VPN實在有夠不穩的。 打開 Tor Browser,浪費了我十分鐘多的生命在等待連線,仍然沒有連上。 只好拿出之前寫壞爬蟲安裝的 Tor。有興趣的話可以參考 " 使用 Tor更新 IP位置 ",裡面也稍微簡述了一下如何安裝 Tor。 首先打開 Chrome安裝 Proxy Helper 。 安裝完成後,右上角會出現一個像水晶球的 icon。 右鍵點擊 Proxy Helper,進入選項後,在 SOCKET PROXY的部分輸入 Tor預設的 Port " 127.0.0.1:9050 "。 接著打開 Terminal執行 Tor。 $ tor 左鍵點擊 Proxy Helper,選擇 SOCKET PROXY,Chrome就可以透過 TOR連上網際網路了。 想要直接連上網際網路時,就選擇 SYSTEM。 相較 Tor Browser連上網際網路的速度比較快,也比較節省記憶體。(個人感覺) 覺得連線速度不滿意或是 Google覺得異常時,可以開啟另一個 Terminal輸入下列指令更換 IP。 $ killall -HUP tor

[ Tor ] 使用 Tor進行網路爬蟲

圖片
其實透過 Tor爬蟲好像不會比較快,但省下很多驗證或被警告的麻煩,不過這樣真的很不乖,好孩子別學。 socks模塊為 Python提供了一個標準的類似 socket的接口,用於通過 SOCKS代理進行連接。 $ pip install pysocks 請求是一個使用 Python編寫的 HTTP庫,它是包裝在 urllib上。 $ pip install requests MacOS可以直接用 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.15 3, 4是在設定程式默認的訪問通道,將其設定為 Tor提供的通道,其中 Tor默認的通道是 9050。 把 1-4的程式碼寫在程式的最前面,程式應該就可以透過 Tor訪問網際網路了。 用一般的瀏覽器開啟  ...