Ini adalah percabangan dari saat repo ini menjadi pribadi - ada proyek yang mencoba melanjutkan di sini yang mungkin Anda inginkan
Wappalyzer mengidentifikasi teknologi di situs web, seperti CMS, kerangka web, platform e-niaga, pustaka JavaScript, alat analisis, dan banyak lagi.
git clone https://github.com/wappalyzer/wappalyzer.git
cd wappalyzer
yarn install
about:extensions
src
about:debugging#/runtime/this-firefox
src/manifest.json
Daftar panjang ekspresi reguler digunakan untuk mengidentifikasi teknologi di halaman web. Wappalyzer memeriksa kode HTML, serta variabel JavaScript, header respons, dan lainnya.
Pola (ekspresi reguler) disimpan di src/technologies/
. Berikut contoh aplikasi sidik jari.
"Example" : {
"description" : " A short description of the technology. " ,
"cats" : [
" 1 "
],
"cookies" : {
"cookie_name" : " Example "
},
"dom" : {
"#example-id" : {
"exists" : " " ,
"attributes" : {
"class" : " example-class "
},
"properties" : {
"example-property" : " "
},
"text" : " Example text content "
}
},
"dns" : {
"MX" : [
" example \ .com "
]
},
"js" : {
"Example.method" : " "
},
"excludes" : " Example " ,
"headers" : {
"X-Powered-By" : " Example "
},
"text" : " b example b " ,
"css" : " \ .example-class " ,
"robots" : " Disallow: /unique-path/ " ,
"implies" : " PHP \ ;confidence:50 " ,
"requires" : " WordPress " ,
"requiresCategory" : " Ecommerce " ,
"meta" : {
"generator" : " (?:Example|Another Example) "
},
"probe" : {
"/path" : " "
},
"scriptSrc" : " example-([0-9.]+) \ .js \ ;confidence:50 \ ;version: \ 1 " ,
"scripts" : " function webpackJsonpCallback \ (data \ ) { " ,
"url" : " example \ .com " ,
"xhr" : " example \ .com " ,
"oss" : true ,
"saas" : true ,
"pricing" : [ " mid " , " freemium " , " recurring " ],
"website" : " https://example.com " ,
}
Temukan skema JSON di schema.json
.
Bidang | Jenis | Keterangan | Contoh |
---|---|---|---|
cats | Himpunan | Satu atau lebih ID kategori. | [1, 6] |
website | Rangkaian | URL situs web aplikasi. | "https://example.com" |
Bidang | Jenis | Keterangan | Contoh |
---|---|---|---|
description | Rangkaian | Penjelasan singkat tentang teknologi dalam bahasa Inggris British (maks. 250 karakter). Tulislah dengan nada netral dan faktual; tidak seperti iklan. | "A short description." |
icon | Rangkaian | Nama file ikon aplikasi. | "WordPress.svg" |
cpe | Rangkaian | CPE adalah skema penamaan terstruktur untuk teknologi. Untuk memeriksa apakah CPE valid dan ada (menggunakan v2.3), gunakan pencarian). | "cpe:2.3:a:apache:http_server :*:*:*:*:*:*:*:*" |
saas | Boolean | Teknologi tersebut ditawarkan sebagai Software-as-a-Service (SaaS), yaitu host atau berbasis cloud. | true |
oss | Boolean | Teknologi ini memiliki lisensi sumber terbuka. | true |
pricing | Himpunan | Indikator biaya (berdasarkan paket umum atau harga rata-rata bulanan) dan model harga yang tersedia. Hanya untuk produk berbayar. Salah satu:
Ditambah salah satu dari:
| ["low", "freemium"] |
Bidang | Jenis | Keterangan | Contoh |
---|---|---|---|
implies | Tali | Himpunan | Kehadiran satu aplikasi bisa berarti kehadiran aplikasi lain, misalnya WordPress berarti PHP juga sedang digunakan. | "PHP" |
requires | Tali | Himpunan | Mirip dengan implikasinya tetapi deteksi hanya berjalan jika teknologi yang diperlukan telah diidentifikasi. Berguna untuk tema CMS tertentu. | "WordPress" |
requiresCategory | Tali | Himpunan | Mirip dengan membutuhkan; deteksi hanya berjalan jika teknologi dalam kategori yang diperlukan telah diidentifikasi. | "Ecommerce" |
excludes | Tali | Himpunan | Kebalikan dari menyiratkan. Kehadiran satu aplikasi bisa meniadakan kehadiran aplikasi lainnya. | "Apache" |
Bidang | Jenis | Keterangan | Contoh |
---|---|---|---|
cookies | Obyek | kue. | { "cookie_name": "Cookie value" } |
dom | Tali | Himpunan | Obyek | Menggunakan pemilih kueri untuk memeriksa properti elemen, atribut, dan konten teks. | { "#example-id": { "property": { "example-prop": "" } } } |
dns | Obyek | Catatan DNS: mendukung MX, TXT, SOA dan NS. | { "MX": "example\.com" } |
js | Obyek | Properti JavaScript (peka huruf besar/kecil). Hindari nama properti yang pendek untuk mencegah pencocokan kode yang diperkecil. | { "jQuery.fn.jquery": "" } |
headers | Obyek | Header respons HTTP. | { "X-Powered-By": "^WordPress$" } |
text | Tali | Himpunan | Cocok dengan teks biasa. Sebaiknya hanya digunakan dalam kasus yang sangat spesifik dimana metode lain tidak dapat digunakan. | bexampleb |
css | Tali | Himpunan | aturan CSS. Tidak tersedia ketika situs web menerapkan kebijakan asal yang sama. Untuk alasan kinerja, hanya sebagian dari aturan CSS yang tersedia yang digunakan untuk menemukan kecocokan. | "\.example-class" |
probe | Obyek | Minta URL untuk menguji keberadaannya atau mencocokkan konten teks. | { "/path": "Example text" } |
robots | Tali | Himpunan | Konten robots.txt. | "Disallow: /unique-path/" |
url | Tali | Himpunan | URL lengkap halaman tersebut. | "^https?//.+\.wordpress\.com" |
xhr | Tali | Himpunan | Nama host permintaan XHR. | "cdn\.netlify\.com" |
meta | Obyek | Tag meta HTML, misalnya generator. | { "generator": "^WordPress$" } |
scriptSrc | Tali | Himpunan | URL file JavaScript yang disertakan pada halaman. | "jquery\.js" |
scripts | Tali | Himpunan | Kode sumber JavaScript. Memeriksa skrip inline dan eksternal. Untuk alasan kinerja, hindari scripts jika memungkinkan dan gunakan js sebagai gantinya. | "function webpackJsonpCallback\(data\) {" |
html (tidak digunakan lagi) | Tali | Himpunan | Kode sumber HTML. Pola harus menyertakan tag pembuka HTML untuk menghindari pencocokan teks biasa. Untuk alasan kinerja, hindari html jika memungkinkan dan gunakan dom sebagai gantinya. | "<a [^>]*href="index.html" |
Pola pada dasarnya adalah ekspresi reguler JavaScript yang ditulis sebagai string, tetapi dengan beberapa tambahan.
\.
). Tanda kutip ganda harus di-escape hanya sekali ( "
). Garis miring tidak perlu di-escape ( /
).()
) digunakan untuk deteksi versi. Dalam kasus lain, gunakan grup yang tidak menangkap ( (?:)
).^
dan $
) jika memungkinkan untuk performa optimal. Tag (sintaksis non-standar) dapat ditambahkan ke pola (dan menyiratkan serta mengecualikan, dipisahkan oleh \;
) untuk menyimpan informasi tambahan.
Menandai | Keterangan | Contoh |
---|---|---|
confidence | Menunjukkan pola yang kurang dapat diandalkan yang dapat menyebabkan hasil positif palsu. Tujuannya adalah untuk mencapai keyakinan gabungan sebesar 100%. Defaultnya adalah 100% jika tidak ditentukan. | "js": { "Mage": "\;confidence:50" } |
version | Mendapatkan nomor versi dari pencocokan pola menggunakan sintaks khusus. | "scriptSrc": "jquery-([0-9.]+).js\;version:\1" |
Informasi versi aplikasi dapat diperoleh dari suatu pola menggunakan grup tangkap. Suatu kondisi dapat dievaluasi menggunakan operator ternary ( ?:
).
Contoh | Keterangan |
---|---|
\1 | Mengembalikan kecocokan pertama. |
\1?a: | Mengembalikan a jika kecocokan pertama berisi nilai, tidak ada yang lain. |
\1?a:b | Mengembalikan a jika kecocokan pertama berisi nilai, b sebaliknya. |
\1?:b | Tidak mengembalikan apa pun jika kecocokan pertama berisi nilai, b sebaliknya. |
foo\1 | Mengembalikan foo dengan kecocokan pertama ditambahkan. |