Linux中國

使用統一阻止列表和白名單來更新主機文件

網上有許多持續維護的含有不同垃圾域的有用列表。將這些列表複製到你的主機文件中可以輕鬆阻止大量的域,你的系統將根本不用去連接它們。此方法可以在不安裝瀏覽器插件的情況下工作,並且將為系統上任何瀏覽器(和任何其他程序)提供阻止操作。

在本教程中,我將向你展示如何在 Linux 中啟動並運行 Steven Black 的統一主機腳本。該腳本將使用來自多個來源的最新已知的廣告伺服器、網路釣魚網站和其他網路垃圾的地址來更新你的計算機主機文件,同時提供一個漂亮、乾淨的方式來管理你自己的黑名單/白名單,其分別來自於該腳本管理的各個列表。

在將 30,000 個域放入主機文件之前,需要注意兩點。首先,這些巨大的列表包含可能需要解除封鎖的伺服器,以便進行在線購買或其他一些臨時情況。如果你弄亂了你的主機文件,你要知道網上的某些東西可能會出現問題。為了解決這個問題,我將向你展示如何使用方便的打開/關閉開關,以便你可以快速禁用你的阻止列表來購買喜馬拉雅鹽霧燈(它是等離子燈)。我仍然認為這些列表的目的之一是將所有的一切都封鎖(有點煩人,直到我想到了做一個關閉開關)。如果你經常遇到你需要的伺服器被阻止的問題,只需將其添加到白名單文件中即可。

第二個問題是性能受到了輕微的影響, 因為每次調用一個域時, 系統都必須檢查整個列表。只是有一點點影響, 而沒有大到讓我因此而放棄黑名單,讓每一個連接都通過。你具體要怎麼選擇自己看著辦。

主機文件通過將請求定向到 127.0.0.1 或 0.0.0.0(換句話說定向到空地址)來阻止請求。有人說使用 0.0.0.0 是更快,問題更少的方法。你可以將腳本配置為使用 -ip nnn.nnn.nnn.nnn 這樣的 ip 選項來作為阻止 ip,但默認值是 0.0.0.0,這是我使用的值。

我曾經將 Steven Black 的腳本做的事每隔一段時間就手動做一遍,進到每一個站點,將他們的列表拷貝/粘貼到我的主機文件中,做一個查找替換將其中的 127 變成 0 等等。我知道整件事情可以自動化,這樣做有點傻,但我從來沒有花時間解決這個問題。直到我找到這個腳本,現在這事已經是一個被遺忘的雜務。

讓我們先下載一份最新的 Steven Black 的代碼拷貝(大約 150MB),以便我們可以進行下一步。你需要安裝 git,因此如果還沒安裝,進入到終端輸入:

sudo apt-get install git

安裝完之後,輸入:

mkdir unifiedhosts
cd unifiedhosts
git clone https://github.com/StevenBlack/hosts.git
cd hosts

當你打開了 Steven 的腳本時,讓我們來看看有什麼選項。該腳本有幾個選項和擴展,但擴展我不會在這裡提交,但如果你到了這一步並且你有興趣,readme.md 可以告訴你所有你需要知道的。

你需要安裝 python 來運行此腳本,並且與版本有關。要找到你安裝的 Python 版本,請輸入:

python --version

如果你還沒安裝 Python:

sudo apt-get install python

對於 Python 2.7,如下所示,輸入 python 來執行腳本。對於 Python 3,在命令中的 python 替換成 python3。執行後,該腳本會確保它具有每個列表的最新版本,如果沒有,它會抓取一個新的副本。然後,它會寫入一個新的主機文件,包括了你的黑名單/白名單中的任何內容。讓我們嘗試使用 -r 選項來替換我們的當前的主機文件,而 -a 選項可以腳本不會問我們任何問題。回到終端:

python updateHostsFile.py -r -a

該命令將詢問你的 root 密碼,以便能夠寫入 /etc/。為了使新更新的列表處於激活狀態,某些系統需要清除 DNS 緩存。在同一個硬體設備上,我觀察到不同的操作系統表現出非常不同的行為,在沒有刷新緩存的情況下不同的伺服器變為可訪問/不可訪問所需的時間長度都不同。我已經看到了從即時更新(Slackware)到重啟更新(Windows)的各種情況。有一些命令可以刷新 DNS 緩存,但是它們在每個操作系統甚至每個發行版上都不同,所以如果沒有生效,只需要重新啟動就行了。

現在,只要將你的個人例外添加到黑名單/白名單中,並且只要你想要更新主機文件,運行該腳本就好。該腳本將根據你的要求調整生成的主機文件,每次運行文件時會自動追加你額外的列表。

最後,我們來創建一個打開/關閉開關,對於打開和關閉功能每個都創建一個腳本,所以回到終端輸入下面的內容創建關閉開關(用你自己的文本編輯器替換 leafpad):

leafpad hosts-off.sh

在新文件中輸入下面的內容:

#!/bin/sh
sudo mv /etc/hosts /etc/hostsDISABLED

接著讓它可執行:

chmod +x hosts-off.sh

相似地,對於打開開關:

leafpad hosts-on.sh

在新文件中輸入下面的內容:

#!/bin/sh
sudo mv /etc/hostsDISABLED /etc/hosts

最後讓它可執行:

chmod +x hosts-on.sh

你所需要做的是為每個腳本創建一個快捷方式,標記為 HOSTS-ON 和 HOSTS-OFF,放在你能找到它們的地方。

via: https://www.darrentoback.com/this-script-updates-hosts-files-using-a-multi-source-unified-block-list-with-whitelisting

作者:dmt 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國