Dies ist eine Abzweigung aus der Zeit, als dieses Repo privat wurde – es gibt ein Projekt, das versucht, hier fortzufahren, das Sie wahrscheinlich stattdessen möchten
Wappalyzer identifiziert Technologien auf Websites wie CMS, Web-Frameworks, E-Commerce-Plattformen, JavaScript-Bibliotheken, Analysetools und mehr.
git clone https://github.com/wappalyzer/wappalyzer.git
cd wappalyzer
yarn install
about:extensions
src
auswählenabout:debugging#/runtime/this-firefox
src/manifest.json
aus Zur Identifizierung von Technologien auf Webseiten wird eine lange Liste regulärer Ausdrücke verwendet. Wappalyzer prüft HTML-Code sowie JavaScript-Variablen, Antwortheader und mehr.
Muster (reguläre Ausdrücke) werden in src/technologies/
gespeichert. Im Folgenden finden Sie ein Beispiel für einen Anwendungsfingerabdruck.
"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 " ,
}
Finden Sie das JSON-Schema unter schema.json
.
Feld | Typ | Beschreibung | Beispiel |
---|---|---|---|
cats | Array | Eine oder mehrere Kategorie-IDs. | [1, 6] |
website | Zeichenfolge | URL der Website der Anwendung. | "https://example.com" |
Feld | Typ | Beschreibung | Beispiel |
---|---|---|---|
description | Zeichenfolge | Eine kurze Beschreibung der Technologie in britischem Englisch (max. 250 Zeichen). Schreiben Sie in einem neutralen, sachlichen Ton; nicht wie eine Anzeige. | "A short description." |
icon | Zeichenfolge | Dateiname des Anwendungssymbols. | "WordPress.svg" |
cpe | Zeichenfolge | CPE ist ein strukturiertes Benennungsschema für Technologien. Um zu überprüfen, ob ein CPE gültig ist und existiert (mit Version 2.3), verwenden Sie die Suche. | "cpe:2.3:a:apache:http_server :*:*:*:*:*:*:*:*" |
saas | Boolescher Wert | Die Technologie wird als Software-as-a-Service (SaaS), also gehostet oder cloudbasiert, angeboten. | true |
oss | Boolescher Wert | Die Technologie verfügt über eine Open-Source-Lizenz. | true |
pricing | Array | Kostenindikator (basierend auf einem typischen Plan oder einem durchschnittlichen monatlichen Preis) und verfügbaren Preismodellen. Nur für kostenpflichtige Produkte. Einer von:
Plus eines von:
| ["low", "freemium"] |
Feld | Typ | Beschreibung | Beispiel |
---|---|---|---|
implies | Zeichenfolge | Array | Das Vorhandensein einer Anwendung kann auf das Vorhandensein einer anderen Anwendung hinweisen, z. B. bedeutet WordPress, dass auch PHP verwendet wird. | "PHP" |
requires | Zeichenfolge | Array | Ähnlich wie impliziert, aber die Erkennung wird nur ausgeführt, wenn die erforderliche Technologie identifiziert wurde. Nützlich für Themes für ein bestimmtes CMS. | "WordPress" |
requiresCategory | Zeichenfolge | Array | Ähnlich wie require; Die Erkennung wird nur ausgeführt, wenn eine Technologie in der erforderlichen Kategorie identifiziert wurde. | "Ecommerce" |
excludes | Zeichenfolge | Array | Gegenteil von impliziert. Das Vorhandensein einer Anwendung kann das Vorhandensein einer anderen ausschließen. | "Apache" |
Feld | Typ | Beschreibung | Beispiel |
---|---|---|---|
cookies | Objekt | Kekse. | { "cookie_name": "Cookie value" } |
dom | Zeichenfolge | Array | Objekt | Verwendet einen Abfrageselektor, um Elementeigenschaften, Attribute und Textinhalte zu überprüfen. | { "#example-id": { "property": { "example-prop": "" } } } |
dns | Objekt | DNS-Einträge: unterstützt MX, TXT, SOA und NS. | { "MX": "example\.com" } |
js | Objekt | JavaScript-Eigenschaften (Groß-/Kleinschreibung beachten). Vermeiden Sie kurze Eigenschaftsnamen, um eine Übereinstimmung mit minimiertem Code zu verhindern. | { "jQuery.fn.jquery": "" } |
headers | Objekt | HTTP-Antwortheader. | { "X-Powered-By": "^WordPress$" } |
text | Zeichenfolge | Array | Entspricht reinem Text. Sollte nur in sehr spezifischen Fällen verwendet werden, in denen andere Methoden nicht verwendet werden können. | bexampleb |
css | Zeichenfolge | Array | CSS-Regeln. Nicht verfügbar, wenn eine Website eine Same-Origin-Richtlinie erzwingt. Aus Leistungsgründen wird nur ein Teil der verfügbaren CSS-Regeln zur Suche nach Übereinstimmungen verwendet. | "\.example-class" |
probe | Objekt | Fordern Sie eine URL an, um deren Existenz zu testen oder Textinhalte abzugleichen. | { "/path": "Example text" } |
robots | Zeichenfolge | Array | Robots.txt-Inhalt. | "Disallow: /unique-path/" |
url | Zeichenfolge | Array | Vollständige URL der Seite. | "^https?//.+\.wordpress\.com" |
xhr | Zeichenfolge | Array | Hostnamen von XHR-Anfragen. | "cdn\.netlify\.com" |
meta | Objekt | HTML-Meta-Tags, z. B. Generator. | { "generator": "^WordPress$" } |
scriptSrc | Zeichenfolge | Array | URLs der auf der Seite enthaltenen JavaScript-Dateien. | "jquery\.js" |
scripts | Zeichenfolge | Array | JavaScript-Quellcode. Überprüft Inline- und externe Skripte. Vermeiden Sie aus Leistungsgründen nach Möglichkeit scripts und verwenden Sie stattdessen js . | "function webpackJsonpCallback\(data\) {" |
html (veraltet) | Zeichenfolge | Array | HTML-Quellcode. Muster müssen ein öffnendes HTML-Tag enthalten, um eine Übereinstimmung mit reinem Text zu vermeiden. Vermeiden Sie aus Leistungsgründen nach Möglichkeit html und verwenden Sie stattdessen dom . | "<a [^>]*href="index.html" |
Muster sind im Wesentlichen reguläre JavaScript-Ausdrücke, die als Zeichenfolgen geschrieben sind, jedoch mit einigen Zusätzen.
\.
) verwendet werden. Doppelte Anführungszeichen dürfen nur einmal mit Escapezeichen versehen werden ( "
). Schrägstriche müssen nicht mit Escapezeichen versehen werden ( /
).()
) werden zur Versionserkennung verwendet. In anderen Fällen verwenden Sie nicht einfangende Gruppen ( (?:)
).^
und $
). Tags (eine nicht standardmäßige Syntax) können an Muster (und Implizite und Ausschlüsse, getrennt durch \;
) angehängt werden, um zusätzliche Informationen zu speichern.
Etikett | Beschreibung | Beispiel |
---|---|---|
confidence | Zeigt ein weniger zuverlässiges Muster an, das zu Fehlalarmen führen kann. Ziel ist es, eine gemeinsame Sicherheit von 100 % zu erreichen. Der Standardwert ist 100 %, wenn nicht angegeben. | "js": { "Mage": "\;confidence:50" } |
version | Ruft die Versionsnummer aus einem Mustervergleich mithilfe einer speziellen Syntax ab. | "scriptSrc": "jquery-([0-9.]+).js\;version:\1" |
Informationen zur Anwendungsversion können mithilfe einer Erfassungsgruppe aus einem Muster abgerufen werden. Eine Bedingung kann mit dem ternären Operator ( ?:
) ausgewertet werden.
Beispiel | Beschreibung |
---|---|
\1 | Gibt die erste Übereinstimmung zurück. |
\1?a: | Gibt a zurück, wenn die erste Übereinstimmung einen Wert enthält, sonst nichts. |
\1?a:b | Gibt a zurück, wenn die erste Übereinstimmung einen Wert enthält, andernfalls b. |
\1?:b | Gibt nichts zurück, wenn die erste Übereinstimmung einen Wert enthält, andernfalls b. |
foo\1 | Gibt foo mit angehängter erster Übereinstimmung zurück. |