
cdncheck v1.2.50
指定されたIPアドレスに対して使用されている様々な技術を検出するユーティリティ。
cdncheck
機能 • インストール • 使用方法 • Discord に参加
cdncheck は、DNS / IP ネットワークアドレスに関連する技術を特定するためのツールです。

機能
- 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 の下で配布されています。
