Chomper – 在 Linux 上阻止網站的命令行工具

Chomper 是一種開源工具,用於在用戶瀏覽會話期間創建要列入黑名單或白名單的網站列表。 咀嚼者 是用 Python 編寫的終端驅動工具。 這意味著它完全可以從終端操作。 其設計背後的動機是幫助人們避免互聯網分心,專注於在工作時間訪問高效網站,還有助於暫時阻止 Linux 桌面上的網站。 Chomper 也可以用作家長控制工具 – 例如限制孩子訪問的網站。

Chomper 的工作原理

與其他使用 Linux 主機文件過濾 IP 地址和域名的攔截器不同,Chomper 通過透明代理過濾傳出請求。 這使得 Chomper 非常適合在 URL 級別過濾 Web 內容。 您只需填寫要阻止的內容和要列入白名單的內容列表,Chomper 將為您完成其餘的工作。

在 Linux 上安裝 Chomper

目前安裝 Chomper 的唯一方法是從源代碼構建它。 一個先決條件是安裝 git、make 和 cmake。 由於此設置是在 Ubuntu 16.04 上完成的,因此安裝的所有 deps 都特定於 Ubuntu。

$ sudo apt-get install git cmake build-essential curl python-pip

完成後,繼續安裝 pyenv。 為此,我們將避免手動安裝,而是使用安裝程序。

# curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
 % Total % Received % Xferd Average Speed Time Time Time Current
 Dload Upload Total Spent Left Speed
100 2099 100 2099 0 0 2011 0 0:00:01 0:00:01 --:--:-- 2012
Cloning into '/home/jmutai/.pyenv'
.....

通過修改自動加載pyenv ~/.bash_profile 文件:

$ vim ~/.bash_profile

然後加:

export PATH="/home/jmutai/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

要手動加載 env,請在當前會話中獲取文件。

$ source ~/.bash_profile
$ pyenv versions
* system (set by /home/jmutai/.pyenv/version)

從 git 克隆 Chomper。

$ git clone https://github.com/aniketpanjwani/chomper.git
$ cd chomper
$ make init

進行初始化 命令將下載特定於 chomper 的軟件包並準備好環境。 如果您選擇安裝 CPython 3.6,完成設置可能需要幾分鐘時間。 然後你應該看到:

To activate this project's virtualenv, run the following:
$ pipenv shell
....

現在啟動外殼:

$ pipenv shell
$ mitmdump
# mitmdump
Proxy server listening at https://*:8080

一旦 mitmdump 第一次開始,使用組合鍵退出它 – [ Ctrl+C Ctrl+C ]. 將生成許多證書文件。

# ls ~/.mitmproxy
mitmproxy-ca-cert.cer mitmproxy-ca-cert.pem mitmproxy-ca.pem
mitmproxy-ca-cert.p12 mitmproxy-ca.p12 mitmproxy-dhparam.pem

你需要導入 mitmproxy-capem 證書到您的瀏覽器。

Chrome :轉至設置 > 高級設置 > 管理證書 > 權限。 單擊導入,選擇 mitmproxy-ca.pem,勾選所有三個框,然後單擊確定

Firefox:轉到首選項 > 隱私和安全 > 證書 > 查看證書 > 權限。 單擊導入,選擇 mitmproxy-ca.pem,勾選所有三個框,然後單擊確定。

接下來要做的是啟用 IP 轉發。

# vim /etc/sysctl.d/99-sysctl.conf

添加:

net.ipv4.ip_forward=1
net.ipv6.conf.all_forwarding=1

Save 然後運行:

# sysctl -p

使用 Chomper

Chomper 使用三個級別的 YAML 語法文件進行配置。

  • 第一級定義規則的名稱。
  • 第二級定義規則是黑名單還是白名單。
  • 第三層定義了規則中涉及的地址。

下面是一個包含少量黑名單和白名單的簡單配置文件

$ cat data/rules.yaml
work_allow:
 - block_type:
     - whitelist
 - addresses:
     - linoxide.com
     - stackoverflow.com

work_block:
 - block_type:
     - blacklist
 - addresses:
     - facebook.com
     - twitter.com
     - youtube.com

運行位於下的 chopper 應用程序時 垃圾桶 目錄,需要兩個參數。

  • 規則名稱
  • 區塊時間 在幾分鐘內

為了 example 運行 work_block 規則 20 分鐘。 我會執行

# cd bin
# ./chomper work_block 20
New block in effect until 2018-02-20 23:34:08.

此規則阻止指定的網站。 嘗試訪問任何列出的站點。 您應該會收到一條橫幅消息,上面寫著“網站已被 Chomper 封鎖!”。

結論

我們已經涵蓋了開始使用 Chomper 所需的所有關鍵事項。 這個工具看起來很有趣。 它仍然很新鮮,但正在積極開發中。 當前版本僅適用於 Linux 系統,但開發人員旨在為其提供適用於 MacOS 和 GUI 的版本。 享受使用 Chomper 的樂趣。