脱獄(Jailbreak)をしたiPhoneで、特定のサイトへのアクセスをブロックすることに成功しました。
試行錯誤にかなり時間を費やしてしまったので、備忘録も兼ねて方法をシェアします。
※こちらは脱獄済みのiPhoneでのみ可能な方法です。ご自身の責任のもとでお試しください。またドメイン単位でのブロックとなりますので「twitter.com」はブロック可能ですが「twitter.com/umanyablog」などサブディレクトリ単位でのブロックはできません。
iPhoneのスペック
iPhone 8
iOS 13.4
脱獄環境はmacOS 10.15.2, checkra1n (Version beta 0.10.0)
純正ブロックは不便
いちおう純正の機能でもブロックできなくはないです。

上記は非脱獄環境でも可能な方法ですが、無関係のサイトまでブロックされてしまうという大きなデメリットがあります。Nintendo Switchの公式サイトにすらアクセスできません。

今回は特定のドメインのみをブロックしたいので、Filza File Managerを用いて/etc/hostsというファイルを直接編集することにします。
必要なTweek
Filza File Manager
Repo: http://tigisoftware.com/cydia/
Ver: 3.7.4-15
Cydiaで検索すると『Filza File Manager』と『Filza File Manager 64-bit』の2種類がヒットしますが、iPhone5S以降の機種なら後者で大丈夫です。
こちらはiPhoneの内部ファイルを操作できる定番Tweekです。/etc/hostsを書き換えるのに使います。
LetMeBlock
Repo: https://poomsmart.github.io/repo/
Ver: 0.0.7.1
近年のiOSは/etc/hostsへの変更を無視してしまうので、無視させないためのTweekです。
/etc/hostsの編集
まずFilza File Manager (以下Filza) で/etc/hostsを開きます。Filzaを開き、一番上の階層まで左上の戻るボタンを押して戻ります。『/』という最上層まで来たら、『etc』フォルダをタップします。

その中に『hosts』というファイルがあるので、タップしてText Editorで開きます。



デフォルトはこのようになっていますので、この部分はそのまま残しておいてください。(広告ブロック系のTweekなどを使っている場合は既に書き足されている場合もあります)
一番下に書き足していきます。今回はTwitterをブロックします。
127.0.0.1 twitter.com
127.0.0.1 mobile.twitter.com
のように「127.0.0.1、スペース、ブロックしたいドメイン名1つ」で1行としてください。

最後の行の後ろは改行しておいてください。改行をしていないと、以降で別のTweekを使う必要がある場合に不具合が起きる可能性があります。
Save(保存)→Cancel(キャンセル)→Done(完了)と押して、/etc/hostsの編集は完了です。
ここで一度ブラウザでブロックしたサイトにアクセスしてみてください。読み込めなければ正しくブロックされています。
ただ僕の場合、これだけではうまくいきませんでした……。
うまくいかない場合
ブラウザの再起動、他のブラウザを試す
タスクキルでブラウザを再起動したり、Safari、Chromeなど複数のブラウザを試してみてください。1つのブラウザでだけアクセスできるなどの場合は、ブラウザに残っているキャッシュが原因かもしれません。
ブラウザのキャッシュを削除
ブラウザのキャッシュを削除してみてください。Chromeの場合は右下の「…」→「履歴」→「閲覧履歴を消去」から「閲覧履歴」「Cookie、サイトデータ」「キャッシュされた画像とファイル」にチェックを入れて消去します。

DNSキャッシュを削除
機内モードをON、OFFしてください。
LDRestartを試す
LDRestartは脱獄状態を保ったまま再起動に近いことができます。『PowerSelector』という超定番Tweekで簡単にできるので、もしインストールがまだならこの機会に入れておきましょう。
それでもダメなら
僕は上記全てやってもダメでした。そこで、/etc/hostsを書き換える仕組みを持つ下記の広告ブロックTweekをインストールして、変化を見ることにしました。(ただし既に広告ブロックTweekを使っている場合は、機能がぶつかり合って不具合が出る可能性があるので一度アンインストールした方が良いかもしれません)
Mega UHB IPv4+6 iOS 9/10/11/12 - MUHB (Mega Untrusted Hosts Blocker)
Repo: https://repo.thireus.com
Ver: 2.1.1
広告ブロックのTweekです。かなり重いのでインストールに少し時間がかかります。
このTweekの仕組みとしては、/etc/hostsに広告ブロックを追記した/etc/hosts.lmbというファイルを作って/etc/hostsの代わりに使うというものです。
僕の場合は、この『Mega UHB』をインストールしたらサイトのブロックが成功しました。しかも、『Mega UHB』をアンインストールしてもブロックは継続しています。

しかし、なぜかアンインストールしたときに/etcの中にhostsとhosts.bakの2つのファイルが残ってしまいました。hostsは広告ブロックのスクリプトを含んでおり、hosts.bakはMega UHBインストール前のhostsでした。広告ブロックは不要なのでhosts.bakの名前をhostsに変更して上書きしておきました。
これで成功した理由は判らないんですが、おそらくMega UHBがLetMeBlockを有効化させたのかな〜と想像しています。
注意点としては、Mega UHBをインストールしたときにインターネットが繋がりにくくなる場合があります。LDRestartをすると改善しました。
これでもアカンなら
それでもうまくいかないという方、お力になれず申し訳ないです。
この記事に書いた情報は、ほとんどがRedditという海外のYahoo!知恵袋と5ちゃんねるが合わさったようなサイトから集めたものです。
こちらのJailbreak板で検索すると有益な情報が得られるかもしれません。
まとめ
今回は脱獄iPhoneで特定のサイトをブロックする方法を紹介しました。
流れとしては
- /etc/hostsにブロックするサイトを書く
- ダメならブラウザの切り替えやキャッシュの削除、LDRestartを試す
- それでもダメなら『Mega UHB』を入れる
という感じです。参考になれば幸いです。
お読みいただきありがとうございました。
コメント