MacでAndroidのGooglePlayアプリ内広告をブロックする方法

※本ページにはプロモーション(広告)が含まれています。
MacでAndroidのGooglePlayアプリ内広告をブロックする方法

アプリを使っていると広告が頻繁に出てイライラしますよね、特にGooglePlay内の広告をMacからまとめて止められないかと悩んでいる方も多いはずです。

この記事を読むとMacを使ってAndroid端末の広告をDNSレベルでブロックする手順が、実際に動かしたコマンドや設定ファイルの例つきで初心者にも分かるように身につきます。

項目内容
実体験ベースの手順実際に試した手順を順を追って詳しく説明します。
つまずき対応のコツよくあるエラーへの対処法や確認ポイントを具体的に示します。
応用と安全管理家庭内の他端末への広げ方や安全に使うための注意点を紹介します。

設定は短時間で終わるように整理してあるので、気軽に手を動かして快適なスマホ体験を取り戻してください。

Android博士

焦らなくて大丈夫です、手順に沿って一つずつ進めれば確実に設定できますので安心して試してみてくださいね。

目次

MacでAndroid端末の広告をDNSでブロックする方法

MacでAndroid端末の広告をDNSでブロックする方法

Android端末のGooglePlayなどで表示されるアプリ内広告はDNSレベルでかなり減らせます。Macを小さなDNSサーバーにしてPi-holeを動かせばWi-Fi経由の広告ドメインをまとめて拒否できます。

設定のやり方はいくつかあるので環境に合わせて選ぶと良いです。ここでは手軽に始められる方法と押さえておきたい運用のコツを紹介します。

  • DockerでPi-holeを起動する方法(手軽で管理がしやすい)。
  • 仮想マシンでPi-holeを動かす方法(環境を分離したい場合)。
  • macOSのdnsmasqや軽量なDNSで代替する方法(リソースを節約したい場合)。

現実的なコツはMacのIPを固定してAndroidのWi-Fi側でDNSにそのIPを指定することです。起動後はPi-holeのクエリログを見て必要なドメインだけホワイトリストに入れるとアプリの誤動作を抑えられます。

Android博士

最初は設定にドキドキするかもしれませんが少し触れば感覚がつかめます。ログを見ながらゆっくり調整していけば大丈夫です。

Mac上のPi-holeで広告ドメインを一括ブロックする運用パターン

Mac上のPi-holeで広告ドメインを一括ブロックする運用パターン

Mac上でPi-holeを運用するとAndroid端末のDNSクエリを一元管理できます。一般的な運用パターンはMacでPi-holeをDockerなどで動かしAndroid側のWi-Fi設定でDNSをMacに向ける方法です。

運用面では大きめのブロックリストを入れてからログを見て問題のあるドメインだけホワイトリストに登録すると安定します。リストは週に1回程度更新して様子を見てください。

MacのTerminalでPi-holeを起動してAndroidのWi-FiでDNSにMacのIPを指定する手順

手順
Macの準備とIP固定

Macを同一LAN内で固定IPに設定します。システム設定のネットワークでIPv4を手入力にして固定IPを割り当ててください。

手順
TerminalでPi-holeを起動

Dockerが使える場合は公式イメージで起動します。Web管理画面にアクセスできるよう80番ポートを公開しておくと管理が楽になります。

手順
AndroidのWi-FiでDNS指定

Androidで対象のWi-Fiを編集してIP設定を静的にしDNS1にMacのIPを入力します。接続後にPi-holeのクエリログで端末からの問い合わせが流れているか確認してください。

MacでAndroid端末の広告をプロキシでブロックする方法

MacでAndroid端末の広告をプロキシでブロックする方法

Macをプロキシとして使いAndroidのアプリ内広告を横取りする方法は、通信を中継して不要な広告リクエストを捨てるという考え方です。プロキシ方式だとHTTPSのやり取りを確認して細かくブロックできるので、単なるDNSブロックよりも強力に広告だけを狙い撃ちできます。

  • mitmproxy(HTTPSを可視化して細かいルールでブロックできる)
  • Privoxy+Squid(大量ルールやHTTPの細かい加工向け)
  • シンプトスクリプト(ドメインマッチで即座に応答を差し替える)

まずはmitmproxyから始めるのがおすすめです。手順はMacでmitmproxyを起動してAndroidのWi‑Fi設定で手動プロキシを指定し、証明書を入れて動作を確認するだけで始められます。

mitmproxyでHTTPS広告リクエストをフィルタする実践パターン

mitmproxyでHTTPS広告リクエストをフィルタする実践パターン

mitmproxyを使う現場では、いくつかの実践パターンが役立ちます。例えばホスト名やパスを正規表現でマッチさせてリクエストを破棄するパターンや、レスポンスを空の204で返して広告部分だけ無効化するパターンがあります。

もう少し踏み込むと、mitmproxyのPythonスクリプトでrequestやresponseイベントを扱い、特定ヘッダを付け替えたりコンテンツを差し替えたりできます。まずはブラウザやテスト用アプリで動作確認をしてから、Playストア系アプリはユーザー証明書を受け付けないことがある点に注意して進めると安全です。

MacのTerminalでmitmproxyを起動しAndroidのWi‑Fiで手動プロキシと証明書を設定する手順

手順
mitmproxyをインストールする

Homebrewでmitmproxyをインストールします。最新のmacOSと互換性のあるバージョンを使うと安定します。

手順
Macでmitmproxyを起動する

ポート8080など任意のポートでmitmproxyを起動します。必要に応じてmacOSのファイアウォールで受信を許可してください。

手順
AndroidのWi‑Fiで手動プロキシを指定する

接続中のWi‑Fi設定でプロキシを手動にし、サーバーにMacのローカルIP、ポートにmitmproxyのポートを指定します。これで通信がMacを経由するようになります。

手順
証明書をAndroidに入れて確認する

Androidのブラウザでhttp://mitm.itにアクセスして該当する証明書をインストールします。一部のアプリはユーザー証明書を信用しない場合があるため、その点をあらかじめ確認してください。

MacでAndroidエミュレータのGooglePlayアプリ広告をブロックする方法

MacでAndroidエミュレータのGooglePlayアプリ広告をブロックする方法

Androidエミュレータ上のGooglePlayアプリ内広告をMac側で減らしたいと感じたら、まずはローカルでできる方法を試すと気楽です。Macだけで完結する方法が多いので、外部サービスに触らずに済む安心感があります。

ここでは手早く効果が出る選択肢を整理して、実際に使える手順を用意しました。エンジニア的な観点からの小さなコツも交えて伝えます。

  • MacでローカルDNSを立てて広告ドメインを遮断する方法。dnsmasqやPi-holeをローカルで動かしてエミュレータのDNSを向けると一括で制御できます。
  • エミュレータのhostsを書き換えて特定ドメインを127.0.0.1に向ける方法。狙い撃ちで確実にブロックできます。
  • MacでプロキシやVPNを用意して広告ドメインをフィルタリングする方法。細かいルールを適用したいときに便利です。

AVDのhostsを書き換えて特定ドメインをブロックするパターン

AVDのhostsを書き換えて特定ドメインをブロックするパターン

AVDのhostsを書き換えるパターンは、特定の広告ドメインだけを確実に止めたいときに使いやすい手法です。adbで接続してsystem領域のhostsを置き換えるため、root化やsystemの読み書き化が必要になる場合が多いです。

反映は速いので効果が確認しやすい反面、エミュレータのアップデートやGooglePlayの同期で元に戻ることがあります。手間を減らしたいときは起動時にhostsを自動適用するスクリプトを用意すると楽になります。

MacのTerminalでadbを使いエミュレータをroot化してhostsをpushする手順

手順
エミュレータを起動してadb接続を確認

エミュレータを起動してadb devicesで接続を確認します。接続が見えないときはエミュレータの再起動を試してください。

手順
root化とsystemの書き込み可能化

adb rootでroot化し、adb remountで/systemを読み書き可能にします。エミュレータによってはadb rootが不要な場合があります。

手順
hostsを作成してpush

Mac側でhostsファイルを用意して広告ドメインを127.0.0.1に向け、adb pushで/system/etc/hostsに上書きします。必要な行だけを追加すると管理が楽です。

手順
パーミッション設定と再起動

adb shell chmod 644 /system/etc/hostsで権限を整え、adb rebootでエミュレータを再起動して変更が反映されているか確認します。

MacとAndroidで広告ブロックの動作確認とトラブル対処をする方法

MacとAndroidで広告ブロックの動作確認とトラブル対処をする方法

MacでDNSベースの広告ブロックを使ってAndroidのアプリ内広告を減らすときは、Mac側の動作確認とAndroid側のキャッシュ処理の両方を見ると安心です。MacでDNS問い合わせやネットワークの実際のやり取りを確かめて、広告ドメインが正しく遮断されているかを先に把握します。

そのうえでAndroid端末ではアプリのキャッシュ削除やGoogle Playの設定確認を行い、表示が残るかどうかをチェックします。加えてVPNや別のWi‑Fiプロファイルが影響することが多いので、それらを一時的に切って再確認するのが近道です。

  • Macでdigやtcpdumpを使いDNS応答とパケットを確認する。
  • Mac上のブロックサービスのログで該当ドメインがブロックされているか見る。
  • Androidでアプリのキャッシュとデータを消して再テストする。
  • 端末のDNSやVPNプロファイル、IPv6の有無を切り分けて確認する。

広告が残るときの原因を切り分けるチェックパターン

広告が残るときの原因を切り分けるチェックパターン

広告が残るときは一度に全部をいじらず、一つずつ原因を潰していくのが効率的です。まずMac側で広告ドメインへの問い合わせが期待どおりにNXDOMAINや拒否になっているかを確認してください。

次にAndroidを別ネットワークやモバイル回線で試し、端末固有の問題かネットワーク由来かを切り分けます。アプリのキャッシュやアプリ内ブラウザ、Google Playの広告設定、そしてIPv6回線が残っていないかも忘れずに確認してください。

Macでdigやtcpdumpを使いDNS/通信を確認しAndroidでキャッシュ削除と設定を見直す手順

手順
MacでDNS応答を確認

digや類似ツールで広告ドメインの応答を確認します。NXDOMAINやアドレスが返らないことを確認してから先に進んでください。

手順
Macでパケットを観察

tcpdumpでAndroidからのDNSやHTTPリクエストを観察します。パケットがMacを経由し正しくブロック応答が返っているかを見ます。

手順
Androidでキャッシュ削除と再起動

対象アプリのキャッシュとデータを消去し端末を再起動します。それでも広告が出る場合はVPNやプロキシを切って再試行してください。

応用:Macで複数のAndroid端末の広告をまとめて管理する方法

応用:Macで複数のAndroid端末の広告をまとめて管理する方法

複数のAndroid端末の広告をまとめて消したいときは、MacをDNSサーバーにして一括管理するのが手堅い方法です。Macでブロックリストを用意すれば端末ごとに設定する手間が減り、広告だけでなく追跡や不要な通信も抑えられます。

選べるやり方は大きく分けて三つあります。Mac上でAdGuardHomeやdnsmasqを動かす方法、MacをDockerでPihole相当として動かす方法、ルーターのDHCPや各端末のWiFiでDNSをMacに向ける方法です。Macは固定IPにしておくと安定します。

  1. AdGuardHomeをMacで動かす(GUIでブロック管理とログ確認が簡単)。
  2. dnsmasqやunboundを組み合わせてローカルDNSを構築する(柔軟なルール運用)。
  3. ルーターのDHCPまたは各端末のWiFi設定でDNSをMacに向ける(端末側の手動設定を減らせる)。

ネットワークでMacのDNSを共有してブロックリストを一元管理するパターン

ネットワークでMacのDNSを共有してブロックリストを一元管理するパターン

ネットワーク経由でMacのDNSを共有すると複数台のAndroid端末を一括で守れます。ルーターのDHCPでDNSにMacのIPを配る方法か、端末ごとにWiFi設定でDNSを指定する方法が一般的です。

安定運用のコツはMacに固定IPを割り当てることと、Mac側でブロックログを有効にしてどのドメインやアプリが広告を呼んでいるか確認することです。ログを見ながらリストを調整すると効果が高まります。

ルーターのDHCPまたは各端末のWi‑FiでDNSをMacに向けログで広告アクセスを確認する手順

手順
MacにDNSサービスを用意する

AdGuardHomeやdnsmasqをHomebrewまたはDockerで導入して起動します。設定画面でブロックリストを読み込んで有効にします。

手順
ネットワークに向けDNSを配る

ルーターのDHCPで DNSをMacのIPに設定するか各AndroidのWiFi設定で静的DNSを指定します。Macは固定IPにしておくと安心です。

手順
ログで広告アクセスを確認して調整する

MacのDNSログやAdGuardHomeのクエリログでブロックされたドメインを確認して除外や追加ルールを行います。必要なら端末個別に例外を設定します。

よくある質問

よくある質問
DNSだけでAndroidアプリ内の広告は全部消えるか

DNSブロックで多くの広告やトラッカーは止められますが、完全には消えません。アプリが自前配信や暗号化を使う場合は効かないことがあります。残る広告はアプリの設定や有料版を試してみてください。

MacをDNSサーバーにしてAndroidを使う簡単な方法は

MacにdnsmasqやPi-holeを入れ、MacをWi-FiホットスポットにしてAndroidをつなぐ方法が手軽です。USBテザリングの場合はネットワーク設定でDNSを手動指定すれば動きます。設定前に設定ファイルをバックアップしておくと安心です。

ブロックが効かない・アプリに不具合が出たときはどうするか

まずはMac側のログを見てどのドメインがブロックされているか確認してください。誤って必要なドメインを遮断しているならホワイトリストに追加すると直ります。DoHやDoTを使うアプリは別途対応が必要なので端末のDNS設定も確認してください。

まとめ

まとめ

今回紹介した手順をまとめると、MacをDNSサーバーとして使いAndroid端末からのDNS問い合わせをMac側で遮断するやり方が中心でした。具体的にはAdGuardHomeやPiHoleをMac上のDockerで動かす方法やdnsmasqでローカルDNSを立てる方法、あるいはMacのインターネット共有で端末のDNSをMacに向ける方法があります。どれも不要な広告配信ドメインを名前解決させないようにする点が共通です。

注意点としてDNSブロックはドメイン名ベースの遮断なので暗号化やIP直打ちで広告を配信している場合は効果が限定されます。また過剰にブロックするとアプリの一部機能が動かなくなることがあるため動作確認をして必要に応じてホワイトリストを用意してください。定期的にブロックリストを更新することも忘れないでください。

手軽さを重視するならAdGuardHomeをDockerで入れるのが扱いやすくおすすめです。もう少し踏み込むならdnsmasqとpfで透過的にDNSを差し替える方法が強力ですが設定ミスでネットワークが不安定になりやすいので設定のバックアップを取ってから進めてください。小さな工夫で快適さは大きく変わるのでゆっくり試してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次