アップデート一覧に戻る
New releaseAug 27, 2026

cdncheck v1.2.50

指定されたIPアドレスに対して使用されている様々な技術を検出するユーティリティ。

共有

cdncheck

機能 • インストール • 使用方法 • Discord に参加


cdncheck は、DNS / IP ネットワークアドレスに関連する技術を特定するためのツールです。

image

機能

  • CDN、CLOUD、WAF の検出
  • ライブラリとして簡単に利用可能
  • 容易に拡張可能なプロバイダー
  • IP、DNS 入力のサポート
  • テキスト、JSONL 出力
  • 出力に対するフィルター

インストール

cdncheck を正常にインストールするには go1.26.10 が必要です。最新バージョンをインストールするには、以下のコマンドを実行してください:

go install -v github.com/projectdiscovery/cdncheck/cmd/cdncheck@latest

使用方法

cdncheck -h

これはツールのヘルプを表示します。サポートされているすべてのスイッチは以下のとおりです。

Usage:
  ./cdncheck [flags]

Flags:
INPUT:
   -i, -input string[]  list of ip / dns to process

DETECTION:
   -cdn    display only cdn in cli output
   -cloud  display only cloud in cli output
   -waf    display only waf in cli output

MATCHER:
   -mcdn, -match-cdn string[]      match host with specified cdn provider (cloudfront, fastly, google, leaseweb)
   -mcloud, -match-cloud string[]  match host with specified cloud provider (aws, google, oracle)
   -mwaf, -match-waf string[]      match host with specified waf provider (cloudflare, incapsula, sucuri, akamai)

FILTER:
   -fcdn, -filter-cdn string[]      filter host with specified cdn provider (cloudfront, fastly, google, leaseweb)
   -fcloud, -filter-cloud string[]  filter host with specified cloud provider (aws, google, oracle)
   -fwaf, -filter-waf string[]      filter host with specified waf provider (cloudflare, incapsula, sucuri, akamai)

OUTPUT:
   -resp               display technology name in cli output
   -o, -output string  write output in plain format to file
   -v, -verbose        display verbose output
   -j, -jsonl          write output in json(line) format
   -nc, -no-color      disable colors in cli output
   -version            display version of the project
   -silent             only display results in output

CONFIG:
   -r, -resolver string[]  list of resolvers to use (file or comma separated)
   -e, -exclude            exclude detected ip from output
   -retry int              maximum number of retries for dns resolution (must be at least 1) (default 2)

UPDATE:
   -up, -update                 update cdncheck to latest version
   -duc, -disable-update-check  disable automatic cdncheck update check

新しいプロバイダーを追加する方法

provider.yaml ファイルには、CDN、WAF、Cloud プロバイダーのリストが含まれています。このリストには URL、ASN、CIDR が含まれており、これらは generate-index プログラムを使用して最終的な sources_data.json ファイルにコンパイルされます。

provider.yaml ファイルの例 -

cdn:
  # asn contains the ASN numbers for providers
  asn:
    leaseweb:
      - AS60626

  # urls contains a list of URLs for CDN providers
  urls:
    cloudfront:
      - https://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips
    fastly:
      - https://api.fastly.com/public-ip-list

  # cidr contains the CIDR ranges for providers
  cidr:
    akamai:
      - "23.235.32.0/20"
      - "43.249.72.0/22"
      - "103.244.50.0/24"
      - "103.245.222.0/23"
      - "103.245.224.0/24"
      - "104.156.80.0/20"

URL、ASN、または静的なCIDRのリストからスクレイピングできる新しいプロバイダーは、以下に示す簡単な手順に従って provider.yaml ファイルに追加できます:

  • cmd/generate-index/provider.yaml ファイルを含むGitHubリポジトリをフォークします。
  • フォークしたリポジトリをローカルマシンにクローンし、cmd/generate-index ディレクトリに移動します。
  • provider.yaml ファイルを開き、追加したいプロバイダーの種類 (CDN、WAF、またはCloud) のセクションを見つけます。
  • provider.yaml ファイル内の適切なセクションに新しいプロバイダーの情報を追加します。
  • 説明的なコミットメッセージを付けて変更をコミットします。
  • 変更をGitHub上のフォークしたリポジトリにプッシュします。
  • 変更内容を含めて元のリポジトリにプルリクエストを作成します。

その他のプロバイダー

CNAME および Wappalyzer に基づく追加は other.go ファイルで行えます。変数に値を追加するだけで完了です。

// cdnCnameDomains contains a map of CNAME to domains to cdns
var cdnCnameDomains = map[string]string{
	"cloudfront.net":         "amazon",
	"amazonaws.com":          "amazon",
    ...
}

// cdnWappalyzerTechnologies contains a map of wappalyzer technologies to cdns
var cdnWappalyzerTechnologies = map[string]string{
	"imperva":    "imperva",
	"incapsula":  "incapsula",
	...
}

ライブラリとしての cdncheck

指定された IP が Cloud / CDN / WAF 上で動作しているかをチェックするヘルパーライブラリです。

このライブラリは github.com/projectdiscovery/cdncheck をインポートすることで使用できます。以下に基本的な例を示します:

package main

import (
	"fmt"
	"net"
	"github.com/projectdiscovery/cdncheck"
)

func main() {
	client := cdncheck.New()
	ip := net.ParseIP("173.245.48.12")

	// checks if an IP is contained in the cdn denylist
	matched, val, err := client.CheckCDN(ip)
	if err != nil {
		panic(err)
	}

	if matched {
		fmt.Printf("%v is a %v\n", ip, val)
	} else {
		fmt.Printf("%v is not a CDN\n", ip)
	}

	// checks if an IP is contained in the cloud denylist
	matched, val, err = client.CheckCloud(ip)
	if err != nil {
		panic(err)
	}

	if matched {
		fmt.Printf("%v is a %v\n", ip, val)
	} else {
		fmt.Printf("%v is not a Cloud\n", ip)
	}

	// checks if an IP is contained in the waf denylist
	matched, val, err = client.CheckWAF(ip)
	if err != nil {
		panic(err)
	}

	if matched {
		fmt.Printf("%v WAF is %v\n", ip, val)
	} else {
		fmt.Printf("%v is not a WAF\n", ip)
	}
}

cdncheck は projectdiscovery チームによって ❤️ を込めて制作され、MIT License の下で配布されています。

Join Discord

カテゴリ