Mobile Safety Kitgoose-sandbox / project 04
Project 04 · browser-only prototype

Mobile
Safety Kit

スマホの状態を、ブラウザだけで診断する。 OS・通信・権限・追跡防止を 8 つのチェックで観測し、 Device → Network → Privacy → Risk Judge の流れとして表示します。

インストール不要。診断は端末内で完結し、結果は外部へ送信しません。

iPhone · 8 checks demo report
01 / DEVICE OS · Browser · Lock 02 / NETWORK HTTPS · Connection 03 / PRIVACY Permissions · Policy MOBILE SAFETY KIT 67 / 100 WARNING OS バージョン iOS 16 · 更新を推奨 60 HTTPS 通信 https · 証明書あり 100 権限の許可状態 位置情報が許可 40 画面ロック Web からは確認できません — 8 checks · 4 warnings · 2 unknown DEVICE → NETWORK → PRIVACY → JUDGE Risk Judge 67 / Warning weakest check wins 診断はブラウザ内で完結。メトリクスだけをレポートとして出力します。
観測から判定まで、ひと続きの流れ。 4 warnings · 2 unknown · 0 error
HOW IT WORKS

観測・判定・ガイドを、ブラウザ内で。

ネイティブアプリも常駐エージェントも作りません。ブラウザが公開している事実だけを集め、 端末内で判定して、パイプラインとして描きます。サーバーもデータベースも不要です。

01 / OBSERVE

ブラウザから観測

User-Agent Client Hints、Permissions API、Network Information API、Location、Document のポリシーを読みます。権限は状態だけを見て、内容には触れません。

02 / JUDGE

8 項目を採点

重み 1–3 のチェックを重み付き平均し、総合レベルは最弱のチェックに合わせます。観測できない項目は Unknown としてスコアから除外します。

03 / GUIDE

次の操作へつなぐ

パイプラインの色、アラート、観測値、対処法を 1 画面に。結果は JSON で保存でき、前回の基準との差分も確認できます。

CHECKS

8 つのチェックと、その重み。

スマホ特有のリスクに絞り、ブラウザ API で観測できる項目を優先しました。重みは「見る順番」の目安です。

端末・OS

  • OS バージョンw3
  • ブラウザ更新w2
  • 画面ロックw1 · 手動

接続・通信

  • HTTPS 通信w3
  • 回線品質w1

プライバシー

  • 権限の許可状態w3
  • トラッキング防止w1
  • Referrer-Policyw1

画面ロックは Web から観測できないため、常に Unknown のチェックとして残します。公衆 Wi-Fi はチェック項目にせず、ガイドで扱います。

FEATURES

診断を、読める形にする。

パイプライン表示

Device → Network → Privacy → Risk Judge。チェックの状態を色・スコア・差分で表し、全体の流れを 1 枚にします。

最弱項目の強調

総合スコアは重み付き平均、総合レベルは最弱のチェック。平均で弱点を薄めず、見る順番を決めます。

アラートレール

Error / Warning をスコア順に一覧。クリックすると該当チェックへ移動し、理由と対処法を表示します。

前回比較

現在の結果を基準として localStorage に保存。設定を変えて再スキャンすると、項目ごとの増減が見えます。

ガイドパネル

各チェックに観測値・データ源・理由・対処法を用意。判定の根拠を追えるようにしています。

JSON レポート

診断結果をそのまま保存できます。?demo=1 で合成データを表示し、UI と判定を確認できます。

STATUS MODEL

4 つの状態と、その決め方。

判定はブラウザ側の純粋関数で行い、レポートには観測した事実と判定を分けて保存します。総合レベルは「Error → Warning → Healthy」の順で最も重いものに合わせます。

状態条件の例表示
Healthy OS / ブラウザが更新目安を満たす、HTTPS、主要な権限が未許可 ミント色。静かに一覧に残る。
Warning OS / ブラウザの更新推奨、位置情報・カメラ・マイクの許可、低速回線 琥珀色。スコアと理由を表示。
Error HTTP 通信、サポートが古い OS / ブラウザ、unsafe-url の Referrer-Policy 赤色。アラート最上位。
Unknown 画面ロック、UA が固定された macOS、Permissions API 非対応 など 灰色。スコアから除外し、手動確認として残す。

Unknown は「安全」でも「危険」でもありません。観測できないものを Healthy に丸めないための状態です。サポート表は 2026-10 時点の静的な目安で、更新が必要です。

QUICK START

ブラウザで開いて、すぐ試す。

ビルド手順はありません。fetch を使わないため、index.html を直接開いても動作します。

1 · viewstatic
# リポジトリ直下で
python3 -m http.server 8000

# ブラウザで開く
http://localhost:8000/MobileSafetyKit/viewer/

# 合成データで表示
...viewer/?demo=1
2 · checknode 18+
# 判定ロジックのテスト
node --test MobileSafetyKit/viewer/lib/scanner.test.js

# デモレポートを再生成
node MobileSafetyKit/tools/build-demo-report.js

# 出力: viewer/data/demo-report.json

公開デモの端末名・OS・権限状態はすべて合成値です。実スキャンは、開いたブラウザの情報だけを使います。

SCOPE

これは何で、何ではないか。

ブラウザから見える範囲だけ

OS・通信・権限・ポリシーを観測します。端末内のファイルや他アプリの内部には触れません。

ウイルススキャンではない

マルウェアの検知や駆除は行いません。「設定と露出の点検」を行う静的プロトタイプです。

画面ロックは手動確認

パスコードや生体認証の設定は Web から取得できません。Unknown として残し、対処法を案内します。

サポート表は静的な目安

OS / ブラウザの更新目安は 2026-10 時点のスナップショットです。実運用では定期的な更新が必要です。