DBDelve
Dive deep into your data. A fast, native, multi-engine database client written in Rust. Free and open source, no telemetry.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
サイトとメールの引っ越し判定。DNS の判定はブラウザで動き、サイトの中身だけを Cloudflare Workers で読む
Loading the full README.
Read the full README ↗今のレンタルサーバーから、サイトとメールを移せるかを無料で判定するツールです。サイトの移し先は Cloudflare、メールの移し先は Google Workspace などを考えています。URL を入れると、Cloudflare に移せるか、メールの置き場所、サイトの作り、管理画面が外から開けるかが分かり、持ち主がやる手順が出ます。
公開版: https://check.prime-beat.com (ベータ版。運営は Prime Beat株式会社)
無料の判定は、すべて利用者のブラウザの中で動きます。運営のサーバーには、件数のほかは何も届きません。
| 判定の部分 | 動く場所 | 届く先 |
|---|---|---|
| DNS・メール・SPF・DKIM・DMARC | 利用者のブラウザ(public/lib/dns-checks.js) | Cloudflare の公開 DNS(cloudflare-dns.com) |
| ドメインの登録事業者と移管のロック | 利用者のブラウザ(同上) | IANA と、そのドメインの登録所の RDAP。.jp は問い合わせない |
| サイト作成サービスか、Cloudflare を通っているか | 利用者のブラウザ(同上) | DNS の向き先(CNAME と IP の範囲)で見るので、どこにも新しく問い合わせない |
| WordPress か | 利用者のブラウザ(public/app.js) | そのサイトから WordPress の画像を1つ読み込めるかで見る |
| 判定の規則(型と手順を決める部分) | 利用者のブラウザ(public/lib/verdict.js) | どこにも送らない |
| PHP の版と管理画面(有料の手順書のみ) | 運営のサーバー(src/site-checks.js、Cloudflare Workers) | DNS に確認の値を足して持ち主だと確かめたドメインだけ。サーバーはそのサイトに最大5回アクセスする |
PHP の版と管理画面はサーバーでしか読めません。ブラウザは CORS の決まりで、他のサイトの HTML とヘッダーを読めないためです。持ち主の同意が無いサイトを運営のサーバーが調べると、調べた記録が相手に残ります。そのため、持ち主の確認(src/owner.js)を済ませたドメインだけを調べます。
確かめる方法は3つあります。
配られているファイルを見比べる。 画面の下に、いま動いている版のコミットが出ます。リポジトリを手元に取ってきて次を実行すると、公開版が配っている画面のファイル(public/ の中身)と、そのコミットのファイルをハッシュで見比べます
npm run verify
通信を見る。 ブラウザの開発者ツールのネットワーク欄で、どこに何を送っているかを見られます。無料の判定で運営のサーバーに届くのは /api/event(件数)と、画面の表示に使う /api/version・/api/report/status だけです
全部を手元で動かす。 運営のサーバーを使わずに、PHP の版と管理画面を含む同じ判定を手元のパソコンで動かせます
サーバーで動いているコードが公開のものと同じことは、Cloudflare Workers の仕組みの上では証明できません。そのため、サーバーに任せるのは、持ち主の同意を得たサイトの詳しい調べだけにしています。
Node.js 22 以上。
npm install
npm test
npm run check -- example.co.jp
npm run check は、判定のすべて(DNS と、PHP の版・管理画面を含むサイトの中身)を手元のパソコンから行い、結果を JSON で出します。運営のサーバーは使いません。自分が管理しているサイトに使ってください。
画面ごと手元で動かすときは次のコマンドで、http://localhost:8790/ を開きます。
npm run dev
wrangler.jsonc の routes を自分のドメインに書き換えて、npx wrangler deploy を実行します。持ち主の確認と詳しい調べを使うときは npx wrangler secret put OWNER_SECRET で秘密の値を入れ、決済を使わないなら PAYMENT_REQUIRED を false にします。Durable Objects は SQLite を使う型なので、Workers の Free プランでも動きます。件数を見たいときは npx wrangler secret put STATS_TOKEN で合言葉を入れ、STATS_URL=<公開先> npm run stats で見ます。合言葉を入れなければ件数の画面は 404 を返します。
| 調べること | 使うもの |
|---|---|
| Cloudflare に移管できるか | ドメインの末尾と、Cloudflare の TLD Policies から取り出した一覧(public/lib/tlds.js、取り出した日を書いてある)。.jp は移管できない |
| DNS の置き場所、すでに Cloudflare か | NS |
| 登録事業者、登録日、移管のロック | IANA の一覧から引いた登録所の RDAP |
| メールの置き場所 | MX と、MX の IP がサイトと同じか |
| SPF・DKIM・DMARC | TXT。DKIM はよく使われるセレクタ(google、selector1、selector2、default、k1)だけを見る |
| サイトの作り | トップページへの GET 1回。CMS とサイト作成サービスの目印、サーバーで動くプログラムの目印(PHP のヘッダー、セッションの Cookie、.php などへのリンク) |
| PHP の版 | 応答のヘッダー。JPCERT/CC の注意喚起 JPCERT-AT-2026-0033 の修正版と比べる |
| 管理画面が外から開けるか | /wp-login.php・/wp-admin/(WordPress のときだけ)、/administrator/、/admin/ への GET。パスワードの入力欄があれば「公開」 |
| 型 | 条件 |
|---|---|
| 型A: 静的サイトの可能性 | サーバーで中身を読んで、どの目印も無い(手元のコマンドと手順書) |
| 型B: CMS の名前 | CMS の目印がある |
| 型C: サイト作成サービス | Wix・Shopify などの目印がある。ネームサーバーを変えられないことが多く、移行の対象外 |
| 型を確かめる必要がある | CMS の目印は無いが、サーバーで動くプログラムの目印がある(手元のコマンドと手順書) |
| 作りは確かめていない | ブラウザだけの無料の判定で、WordPress とサイト作成サービスのどちらの目印も無い |
| 型を判定できない | ボット対策の確認画面やエラーで中身を読めない(確認画面は突破しない) |
| すでに Cloudflare に移っている | DNS もサイトも Cloudflare |
判定の規則は tests/ のテストで確かめられます。
| 守り | 中身 |
|---|---|
| 接続元ごとの回数 | 1分に10回まで。接続元ごとに Durable Object を1つ割り当て、直近60秒の回数をメモリで数える(IPv6 は /64 単位) |
| 同じドメインへの回数 | 1分に6回まで(Workers の Rate Limiting) |
| 結果の使い回し | 同じドメインのサイトの結果を10分使い回す |
| 調べられる側への配慮 | User-Agent に PrimeBeat-migration-check とこのリポジトリの URL を入れる |
| 手元や社内の機械を指す入力 | IP の直書き、localhost などの名前、私用の IP に解決される名前、私用の IP へのリダイレクトを断る |
| 画面 | スクリプトは同じ場所のファイルだけを読む CSP。frame-ancestors 'none'、nosniff、no-referrer |
日ごとの件数だけです。判定の型、メールの引っ越しが要ったか、相談のリンクが押されたか。ドメインと接続元は含みません(src/stats.js)。
npm run deploy
作業ツリーが綺麗で、GitHub に push 済みのコミットだけをデプロイし、そのコミットを画面に出します。
MIT ライセンス。LICENSE を見てください。お問い合わせ: Prime Beat株式会社 [email protected]