First CH Appsサーバー処理を伴う小さなアプリ置き場

EN

First CH Apps / 技術スタック検出

技術スタック検出

URLを入れると、そのページのHTMLとレスポンスヘッダーから、CMS・ECカート・フレームワーク・CDN・解析タグ・Webフォントを推定します。結論だけを出さず、そう判断した根拠(どこで何に合致したか)を必ず併記します。他社サイトの調査ではなく、引き継いだサイトの棚卸し・自社サイトのタグの整理に使うことを想定しています。

ヘッダーの安全性の採点は「セキュリティヘッダー採点」、証明書は「SSL/TLS証明書チェッカー」、title や description の診断は「メタタグ・SEO基本診断」が担当します。ここは「何で作られているか」だけに絞っています。

トップページのURLで構いません。CMSの痕跡は下層ページに出ることもあるため、結果が薄いときは記事ページや商品ページでも試してください。

この結果の読み方

断定ではありません。 「確実」は単独で出自が分かるシグネチャ(その技術でなければ出ないヘッダー・Cookie名・資産ホスト名)に合致したもの、「有力」は複数の補助的な痕跡が揃ったもの、「参考」は痕跡が1つだけのものです。「推定」は検出した技術が前提にしている技術(Next.js → React など)で、それ自体の痕跡は見ていません。

検出されなかった=使われていない、ではありません。Cloudflare のようなCDNが前段に入るとオリジンのサーバー情報はほぼ消えますし、ビルドで痕跡が消える技術(Tailwind CSS・React など)も多くあります。

Webサーバー(nginx・Apache・IIS)は原理的に判定できません。 このアプリが動いている Cloudflare Workers は、取得したレスポンスの Server ヘッダーを必ず自分の名前(cloudflare)へ書き換えて渡してきます(2026-09-18 に本番で実測)。信用できない値で「nginx です」と言うより、見えないと明示する方を選びました。Cloudflare 自体の検出も、書き換えの影響を受けない痕跡(NELの報告先・__cf_bm クッキー・/cdn-cgi/ のパス)だけで判定しています。

JavaScript の実行後に差し込まれるタグ(タグマネージャー経由の計測タグなど)はサーバー側からは見えません。GTM が検出された場合、その中で何が動いているかはこのページでは分かりません。

見ているのは入力された1ページだけです。同じサイトでも、トップページが静的書き出し・管理画面がCMS、というように区画ごとに構成が違うことがあります。

ページ本文に製品名が書かれているだけでは検出しません(比較記事で全部の名前が並ぶため)。合致させるのは資産の配信ホスト名・Cookie名・ヘッダーのように、その技術でなければ出ない文字列だけです。

判定の基準

シグネチャは 78 技術ぶんをJSONの台帳に持っています(最終更新 2026-09-18)。台帳は追記で育てる前提で、コードとは分けてあります。

見る場所は6つ: レスポンスヘッダー(台帳が名指ししたものだけ)・Set-Cookie の名前・meta タグ・script の src・link の href・HTML本文と最終URL。Server ヘッダーと cf-ray は実行環境が付け替えてしまうため、台帳では一切使っていません。

各シグネチャに 0〜100 の重みがあり、合計 100 で「確実」・50以上で「有力」・50未満は「参考」として表示します(合計は100で頭打ち)。

バージョンは、meta generator や Server ヘッダーのように提供側が自分で名乗っている場合にだけ表示します(推測はしません)。古いバージョンが見えることは、そのまま攻撃者にも見えているということです。

走査するのはHTMLの先頭256KBまでです(無料枠のCPU上限に収めるため)。

Set-Cookie は名前だけを判定に使います。値(セッションIDなど)は読み取りもせず、当然どこへも返しません。

SERVER PROCESSING — サーバーへ送るもの・保存するもの

送るもの: 入力されたURLだけ。当社サーバー(Cloudflare Workers)がそのURLを公開GETで1回取得します。Cookieもログイン情報も送りません。ページ内から見つかったURL(CDN・タグ・フォント)へは1本もアクセスしません。

保存するもの: ありません。検出はリクエストの中だけで完結し、URL・結果ともデータベース(KV/D1)へ書き込みません。処理が終わった時点でメモリから消えます。

返すもの: 検出した技術名・判定・**合致した文字列だけ**(1件120文字まで)です。取得したページの原文も、レスポンスヘッダーの一覧も再配信しません(このアプリは他サイトを閲覧するための中継として使えません)。

Cookie: Set-Cookie は名前だけを判定に使い、値は扱いません。ログイン不要の公開ページをそのまま取得するだけなので、他人のセッションに触れることはありません。

注意: 取得は公開GETのみで、社内ネットワーク・localhost・プライベートIP宛のURLは受け付けません。

APIとして使う

POST /tech-detect/api/detect に JSON({"url": "https://example.com/"})またはフォームを送ると、同じ検出結果が JSON で返ります。