使用統(tǒng)一阻止列表和白名單來(lái)更新主機(jī)文件
網(wǎng)上有許多持續(xù)維護(hù)的含有不同垃圾域的有用列表。將這些列表復(fù)制到你的主機(jī)文件中可以輕松阻止大量的域,你的系統(tǒng)將根本不用去連接它們。此方法可以在不安裝瀏覽器插件的情況下工作,并且將為系統(tǒng)上任何瀏覽器(和任何其他程序)提供阻止操作。
在本教程中,我將向你展示如何在 Linux 中啟動(dòng)并運(yùn)行 Steven Black 的統(tǒng)一主機(jī)腳本。該腳本將使用來(lái)自多個(gè)來(lái)源的***已知的廣告服務(wù)器、網(wǎng)絡(luò)釣魚網(wǎng)站和其他網(wǎng)絡(luò)垃圾的地址來(lái)更新你的計(jì)算機(jī)主機(jī)文件,同時(shí)提供一個(gè)漂亮、干凈的方式來(lái)管理你自己的黑名單/白名單,其分別來(lái)自于該腳本管理的各個(gè)列表。
在將 30,000 個(gè)域放入主機(jī)文件之前,需要注意兩點(diǎn)。首先,這些巨大的列表包含可能需要解除封鎖的服務(wù)器,以便進(jìn)行在線購(gòu)買或其他一些臨時(shí)情況。如果你弄亂了你的主機(jī)文件,你要知道網(wǎng)上的某些東西可能會(huì)出現(xiàn)問(wèn)題。為了解決這個(gè)問(wèn)題,我將向你展示如何使用方便的打開(kāi)/關(guān)閉開(kāi)關(guān),以便你可以快速禁用你的阻止列表來(lái)購(gòu)買喜馬拉雅鹽霧燈(它是等離子燈)。我仍然認(rèn)為這些列表的目的之一是將所有的一切都封鎖(有點(diǎn)煩人,直到我想到了做一個(gè)關(guān)閉開(kāi)關(guān))。如果你經(jīng)常遇到你需要的服務(wù)器被阻止的問(wèn)題,只需將其添加到白名單文件中即可。
第二個(gè)問(wèn)題是性能受到了輕微的影響, 因?yàn)槊看握{(diào)用一個(gè)域時(shí), 系統(tǒng)都必須檢查整個(gè)列表。只是有一點(diǎn)點(diǎn)影響, 而沒(méi)有大到讓我因此而放棄黑名單,讓每一個(gè)連接都通過(guò)。你具體要怎么選擇自己看著辦。
主機(jī)文件通過(guò)將請(qǐng)求定向到 127.0.0.1 或 0.0.0.0(換句話說(shuō)定向到空地址)來(lái)阻止請(qǐng)求。有人說(shuō)使用 0.0.0.0 是更快,問(wèn)題更少的方法。你可以將腳本配置為使用 -ip nnn.nnn.nnn.nnn 這樣的 ip 選項(xiàng)來(lái)作為阻止 ip,但默認(rèn)值是 0.0.0.0,這是我使用的值。
我曾經(jīng)將 Steven Black 的腳本做的事每隔一段時(shí)間就手動(dòng)做一遍,進(jìn)到每一個(gè)站點(diǎn),將他們的列表拷貝/粘貼到我的主機(jī)文件中,做一個(gè)查找替換將其中的 127 變成 0 等等。我知道整件事情可以自動(dòng)化,這樣做有點(diǎn)傻,但我從來(lái)沒(méi)有花時(shí)間解決這個(gè)問(wèn)題。直到我找到這個(gè)腳本,現(xiàn)在這事已經(jīng)是一個(gè)被遺忘的雜務(wù)。
讓我們先下載一份***的 Steven Black 的代碼拷貝(大約 150MB),以便我們可以進(jìn)行下一步。你需要安裝 git,因此如果還沒(méi)安裝,進(jìn)入到終端輸入:
- sudo apt-get install git
安裝完之后,輸入:
- mkdir unifiedhosts
- cd unifiedhosts
- git clone https://github.com/StevenBlack/hosts.git
- cd hosts
當(dāng)你打開(kāi)了 Steven 的腳本時(shí),讓我們來(lái)看看有什么選項(xiàng)。該腳本有幾個(gè)選項(xiàng)和擴(kuò)展,但擴(kuò)展我不會(huì)在這里提交,但如果你到了這一步并且你有興趣,readme.md 可以告訴你所有你需要知道的。
你需要安裝 python 來(lái)運(yùn)行此腳本,并且與版本有關(guān)。要找到你安裝的 Python 版本,請(qǐng)輸入:
- python --version
如果你還沒(méi)安裝 Python:
- sudo apt-get install python
對(duì)于 Python 2.7,如下所示,輸入 python 來(lái)執(zhí)行腳本。對(duì)于 Python 3,在命令中的 python 替換成 python3。執(zhí)行后,該腳本會(huì)確保它具有每個(gè)列表的***版本,如果沒(méi)有,它會(huì)抓取一個(gè)新的副本。然后,它會(huì)寫入一個(gè)新的主機(jī)文件,包括了你的黑名單/白名單中的任何內(nèi)容。讓我們嘗試使用 -r 選項(xiàng)來(lái)替換我們的當(dāng)前的主機(jī)文件,而 -a 選項(xiàng)可以腳本不會(huì)問(wèn)我們?nèi)魏螁?wèn)題。回到終端:
- python updateHostsFile.py -r -a
該命令將詢問(wèn)你的 root 密碼,以便能夠?qū)懭?/etc/。為了使新更新的列表處于激活狀態(tài),某些系統(tǒng)需要清除 DNS 緩存。在同一個(gè)硬件設(shè)備上,我觀察到不同的操作系統(tǒng)表現(xiàn)出非常不同的行為,在沒(méi)有刷新緩存的情況下不同的服務(wù)器變?yōu)榭稍L問(wèn)/不可訪問(wèn)所需的時(shí)間長(zhǎng)度都不同。我已經(jīng)看到了從即時(shí)更新(Slackware)到重啟更新(Windows)的各種情況。有一些命令可以刷新 DNS 緩存,但是它們?cè)诿總€(gè)操作系統(tǒng)甚至每個(gè)發(fā)行版上都不同,所以如果沒(méi)有生效,只需要重新啟動(dòng)就行了。
現(xiàn)在,只要將你的個(gè)人例外添加到黑名單/白名單中,并且只要你想要更新主機(jī)文件,運(yùn)行該腳本就好。該腳本將根據(jù)你的要求調(diào)整生成的主機(jī)文件,每次運(yùn)行文件時(shí)會(huì)自動(dòng)追加你額外的列表。
***,我們來(lái)創(chuàng)建一個(gè)打開(kāi)/關(guān)閉開(kāi)關(guān),對(duì)于打開(kāi)和關(guān)閉功能每個(gè)都創(chuàng)建一個(gè)腳本,所以回到終端輸入下面的內(nèi)容創(chuàng)建關(guān)閉開(kāi)關(guān)(用你自己的文本編輯器替換 leafpad):
- leafpad hosts-off.sh
在新文件中輸入下面的內(nèi)容:
- #!/bin/sh
- sudo mv /etc/hosts /etc/hostsDISABLED
接著讓它可執(zhí)行:
- chmod +x hosts-off.sh
相似地,對(duì)于打開(kāi)開(kāi)關(guān):
- leafpad hosts-on.sh
在新文件中輸入下面的內(nèi)容:
- #!/bin/sh
- sudo mv /etc/hostsDISABLED /etc/hosts
***讓它可執(zhí)行:
- chmod +x hosts-on.sh
你所需要做的是為每個(gè)腳本創(chuàng)建一個(gè)快捷方式,標(biāo)記為 HOSTS-ON 和 HOSTS-OFF,放在你能找到它們的地方。