背景
以前、Cloudflare Tunnelというサービスを使うことで、ドメイン指定で広告ブロックする方法を書きました。
上記の方法では手動でポチポチ設定していたのですが、よく考えるとCLIからも設定できることに気づき、Claudeに聞きながら設定してみたのでその紹介です。
手順
Cloudflare Tunnelは設定済みの前提で、DNSフィルタの設定の部分のみ説明します。
APIトークン発行
- APIトークンのページにアクセス
https://dash.cloudflare.com/profile/api-tokens - 右上の「トークンを作成」をクリック
- 「カスタムトークンを作成」をクリック
- 「トークン名」は分かりやすい名前にします。
「権限」は「アカウント>ゼロトラスト>編集」にします。
「アカウント」は「全てのアカウントを含む」にします。
- 一番下の「概要に進む」を押し、次の画面で「トークンを作成」を押します。
- 表示されたトークンをコピーします
- また、Macのターミナルで、テストコマンドを打って、上手くいくか確認します。
"This API Token is valid and active"という内容が返ってきます。
アカウントID確認
- 上記APIトークンに加えて、ACCOUNT_IDが必要なため取得します。Cloudflareダッシュボードにアクセスします。
https://dash.cloudflare.com - すると、URLが以下の形式に変わります。このときのアカウントIDをメモしておきます。
https://dash.cloudflare.com/<アカウントID>/home/overview
ブロックするドメイン登録
280blockerのドメインリストを登録します。
登録には以下のシェルを用います(Claudeに作ってもらいました。Mac環境で動作確認済み)
curl -LO https://gist.githubusercontent.com/t2murata/0ec52ce47b7ee45a65f344feecb8ca13/raw/924ea71a003ae0fafea2e2aa5840497e5cdebf8c/setup_dns_filter.sh
https://gist.github.com/t2murata/0ec52ce47b7ee45a65f344feecb8ca13
実行の際は、CF_API_TOKENとCF_ACCOUNT_IDという環境変数を覚えさせてから、シェルを流すだけです。
※Shellの中身を見れば分かりますが、同名のリストがあるとエラーが出るため「280blocker_cli_setup」みたいな名前のリストを削除しています。
export CF_API_TOKEN=<APIトークン>
export CF_ACCOUNT_ID=<アカウントID>
bash ./setup_dns_filter.sh
動作確認(任意)
Cloudflareのダッシュボードのインサイト>Logs>DNSクエリーログを確認すると、ちゃんとブロックされていることが確認できます。

