目的
任意のアクセスさせたくないページをブロックする。
今回はネットサーフィンしてると広告が邪魔なのでそれを除外することを目指す
もう とりあえず動けば良いので細かい設定などはしない方針
バージョンなどによって手順などが違う可能性もあるため、
自己責任で実施してください (書き終えた後に一度試してはいますが)
今回はお試しとしてwikipediaをブロックして動確後、広告ブロックのリストを追記する。
環境 (※20240317時点)
Ubuntu Server 22.04
Privoxy version 3.0.33
1. インストール
ubuntu環境があり、ネットワークの設定などもすでに完了している状態を想定。
インストールは以下コマンドを実行するのみ
sudo apt-get install privoxy -y
2. 設定変更 (configファイル)
configファイルの編集
privoxyの設定ファイルを開く
# 一応configファイルをバックアップ
sudo cp /etc/privoxy/config /etc/privoxy/config_org
# configファイルを開く
sudo vi /etc/privoxy/config
編集する部分
大体790行目くらいに以下のような「listen-address」という行がある
ここをコメントアウトし、プロキシ(自分自身)のIPを追加する。ポートは「8118」
listen-address 127.0.0.1:8118
listen-address [::1]:8118
↓
# listen-address 127.0.0.1:8118
# listen-address [::1]:8118
listen-address 192.168.1.150:8118
設定出来たら保存、終了してプロンプトに戻る。
3. ブロックするURL(ドメイン)のリスト作成
「/etc/privoxy/user.action」に記載する方法もあるが、色々な設定が書いてあり
見にくいため、別途ファイルを作成してそれを参照させる方向で作る。
・ファイルの作成
「/etc/privoxy/」配下にそれっぽい名前のファイルを作成する。
今回は「block.action」という名前のファイルで作成した
# ファイル作成
sudo vi /etc/privoxy/block.action
作成したファイルの一番上に「以下はブロックする」という呪文(たぶん)を記載する
{ +block{Nasty ads.} }
その配下にブロックしたいページのドメインを記載する。
今回はwikipedia (https://ja.wikipedia.org/)をブロックするので以下のように記載する。
※ mが付く方はスマホ版ページ
{ +block{Nasty ads.} }
.ja.wikipedia.org
.ja.m.wikipedia.org
ドメイン名の前に「 . 」をつけるらしい。書いたら保存して終了する
・configファイルにパスを記載
そのままだと何も起きないのでconifgファイルに上記ファイルのパスを記載する。
再度configファイルを開く
sudo vi /etc/privoxy/config
390行目あたりに「actionsfile ~」という行がある
ここに他の行と同じような感じで、先ほど作成した「block.action」を記載する。
actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on.
actionsfile default.action # Main actions file
actionsfile user.action # User customizations
actionsfile block.action 👈追加したやつ
config変更したら再起動が必要っぽいのでprivoxyを再起動
sudo systemctl restart privoxy
これでプロキシ側の設定はできているはず。
4. クライアント側の設定
ここからはOSのネットワーク設定などからプロキシ設定をする。
とりあえずの設定例としてwindowsとandroidを記載しますが、
それ以外のOSはいい感じに設定をしてください。 (投げやり)
・windowsの場合
windowsであれば、「設定」の「ネットワークとインターネット」から「プロキシ」を開く
「手動プロキシ セットアップ」を有効にし、作成したプロキシサーバーのIPとポート番号(8118)を入力して保存する
これでブラウザから「https://ja.wikipedia.org/」にし、表示されなければOK。
☆表示されてしまう場合
ブラウザのキャッシュなどを削除すると効いたりする (忘れがち)
設定ファイルやwinのプロキシ設定が間違ってないか確認する。(アドレス入力後「保存」ボタン押し忘れて1敗)
privoxyを再起動すると反映されたりするかも (再起動やり忘れて1敗)
・androidの場合
androidは機種によってバラバラだと思うので参考程度に。
どうにかして接続しているネットワークの設定画面を開き、
詳細オプションを開いてプロキシ情報を入れて保存する。
ここまでできれば一旦プロキシの構築は完了
あとは作成した「block.action」にブロックしたいドメインを記載していけばOK。
「やり方さえわかれば後は自分でどうにかしますよ」の人はここから先は見なくてもいいかも
お試しで記載したwikipediaの行は削除しておいてください。
消さないとwikipedia見れないです
プロキシを作るのも目的ですが、今回の最終的な目的は広告ブロックなので
以降はblock.actionに広告のリストを記載する方法を記載します。
広告の除外
・広告のURLリストを拾ってくる
ネット上にはブロックしたい広告のをまとめたリストが配布されています。
例えば「豆腐フィルタ」「280 blocker」などで検索すると色々出てきます
PC向け、スマホ向け、国内向け、海外向けなど目的に合うものを拾ってきてください。
今回は280blockerのリストを使用してやってみようと思います。
・フィルタの中身をactionファイルのフォーマットに合わせる
フィルタの用意
まず最新版のリストをとってきます。
https://280blocker.net/download/ の「ドメインテキスト方式」をクリックし、
URL末尾にある「xxxxxx」を現在の年月に変更してアクセスしてください。
例:
https://280blocker.net/files/280blocker_domain_xxxxxx.txt
↓
https://280blocker.net/files/280blocker_domain_202403.txt
ブラウザ上でテキストファイルが開かれるので、これをDLなりcurlなりで手元に持ってきます。
フォーマットを合わせる
先ほどwikipediaをブロックした際に「.ドメイン名」みたいな形で記載したと思いますが
取ってきたリストはそのような書き方になっていないので、置換などで上記フォーマットに合わせてください。
今回は例としてubuntu上でsedコマンドでフォーマット調整してみます
# ubuntu上にコピーしたファイルの場所へ移動する
cd <280blocker ~.txtがあるディレクトリ>
# コメント行、空行を削除して行頭に「.」をつけたものをblock.actionに追記する (要root?)
# 「280~.txt」のファイル名は各自のファイルに合わせてください。
sudo sed -e '/#/d' -e '/^$/d' -e "s/^/./g" 280blocker_domain_202403.txt >> /etc/privoxy/block.action
一応再起動
sudo systemctl restart privoxy
これで広告のありそうなページなどを開き、広告が表示されなければOKです。
.
.
.
.
.
.
.
#[備考]遭遇したエラー
$ sudo systemctl restart privoxy
Job for privoxy.service failed because the control process exited with error code.
See "systemctl status privoxy.service" and "journalctl -xeu privoxy.service" for details.
block.actionの先頭に{ +block{Nasty ads.} }
を入れ忘ていた