Added regex validation script, improved patterns

main
Elbert Alias 10 years ago
parent d6debd16bb
commit 512b36aa23

@ -29,6 +29,10 @@ echo "Validating apps.json..."
jsonlint --quiet -V $WAPPALYZER_ROOT/schema.json $path/apps.json jsonlint --quiet -V $WAPPALYZER_ROOT/schema.json $path/apps.json
echo "Validating regular expressions..."
wappalyzer validate-regex
echo "Validating icons..." echo "Validating icons..."
wappalyzer validate-icons wappalyzer validate-icons

@ -1,13 +1,14 @@
#!/usr/bin/env node #!/usr/bin/env node
var var
app,
modulesPath = process.env.WAPPALYZER_NODE_PATH !== undefined ? process.env.WAPPALYZER_NODE_PATH + '/node_modules/' : '', modulesPath = process.env.WAPPALYZER_NODE_PATH !== undefined ? process.env.WAPPALYZER_NODE_PATH + '/node_modules/' : '',
fs = require('fs'),
fileType = require(modulesPath + 'file-type'), fileType = require(modulesPath + 'file-type'),
fs = require(modulesPath + 'fs-extra'),
readChunk = require(modulesPath + 'read-chunk') readChunk = require(modulesPath + 'read-chunk')
json = require(process.env.WAPPALYZER_ROOT + '/src/apps.json'); json = require(process.env.WAPPALYZER_ROOT + '/src/apps.json');
Object.keys(json.apps).forEach(function(app) { for ( app in json.apps ) {
var path = process.env.WAPPALYZER_ROOT + '/src/icons/' + app + '.png'; var path = process.env.WAPPALYZER_ROOT + '/src/icons/' + app + '.png';
fs.exists(path, function(exists) { fs.exists(path, function(exists) {
@ -23,4 +24,4 @@ Object.keys(json.apps).forEach(function(app) {
throw new Error('Missing file: src/icons/' + app + '.png'); throw new Error('Missing file: src/icons/' + app + '.png');
} }
}); });
}); };

@ -0,0 +1,50 @@
#!/usr/bin/env node
var
app,
modulesPath = process.env.WAPPALYZER_NODE_PATH !== undefined ? process.env.WAPPALYZER_NODE_PATH + '/node_modules/' : '',
json = require(process.env.WAPPALYZER_ROOT + '/src/apps.json');
for ( app in json.apps ) {
['headers', 'html', 'env', 'meta', 'script'].forEach(function(type) {
var
key,
patterns = json.apps[app][type];
if ( patterns !== undefined ) {
patterns = typeof patterns === 'string' ? [patterns] : patterns;
if ( !( patterns instanceof Array ) ) {
patterns = [];
for ( key in json.apps[app][type] ) {
patterns.push(json.apps[app][type][key]);
}
}
patterns.forEach(function(pattern) {
var
attrs = pattern.split('\\;'),
regex = '/' + attrs.shift().replace('/', '\/') + '/';
if ( /^\/(?:\^\$|\.\+|\.\*)\/$/.test(regex) ) {
throw new Error('Pattern should be replaced with empty string.\n' + app + ': ' + type + ': ' + pattern);
}
if ( type === 'html' ) {
if ( /\.(?:\+|\*)/.test(regex) ) {
throw new Error('Avoid ".+" and ".*" in HTML patterns. Consider using "[^>]+" or "[^<]+" instead.\n' + app + ': ' + type + ': ' + pattern);
}
if ( !/[<>]/.test(regex) ) {
throw new Error('HTML patterns must contain "<" or ">".\n' + app + ': ' + type + ': ' + pattern);
}
}
});
}
});
if ( /[a-z]+:\/\//i.test(json.apps[app].website) ) {
throw new Error('Do not include the protocol in the website URL\n' + app + ': ' + json.apps[app].website);
}
}

@ -1,7 +1,6 @@
{ {
"devDependencies": { "devDependencies": {
"file-type": "2.2.*", "file-type": "2.2.*",
"fs-extra": "0.16.*",
"read-chunk": "1.0.*" "read-chunk": "1.0.*"
} }
} }

@ -187,11 +187,10 @@
], ],
"html": [ "html": [
"<div class=\"[^\"]*parbase", "<div class=\"[^\"]*parbase",
"_jcr_content", "<div[^>]+data-component-path=\"[^\"+]jcr:"
"/etc/designs/",
"/etc/clientlibs/"
], ],
"implies": "Java", "implies": "Java",
"script": "/etc/designs/",
"website": "adobe.com/products/cq.html" "website": "adobe.com/products/cq.html"
}, },
"Adobe ColdFusion": { "Adobe ColdFusion": {
@ -332,7 +331,6 @@
"cats": [ "cats": [
1 1
], ],
"html": "system_(?:js\\.php\\?script=|css\\.php\\?styles)[^\"]+cv=([\\d.]+)\\;version:\\1",
"implies": "PHP", "implies": "PHP",
"meta": { "meta": {
"generator": "Amiro" "generator": "Amiro"
@ -378,14 +376,14 @@
"cats": [ "cats": [
34 34
], ],
"html": "type=\"text/css\" href=\"/static/hbase\\.css\"", "html": "<style[^>]+static/hbase",
"website": "hbase.apache.org" "website": "hbase.apache.org"
}, },
"Apache Hadoop": { "Apache Hadoop": {
"cats": [ "cats": [
34 34
], ],
"html": "type=\"text/css\" href=\"/static/hadoop\\.css\"", "html": "<style[^>]+static/hadoop",
"website": "hadoop.apache.org" "website": "hadoop.apache.org"
}, },
"Apache JSPWiki": { "Apache JSPWiki": {
@ -436,7 +434,7 @@
"cats": [ "cats": [
2 2
], ],
"html": "ping\\.src = node\\.href;", "html": "ping\\.src = node\\.href;\\s+[^>]+\\s+}\\s+</script>",
"website": "arclanguage.org" "website": "arclanguage.org"
}, },
"Artifactory": { "Artifactory": {
@ -667,7 +665,7 @@
], ],
"implies": "Google Analytics", "implies": "Google Analytics",
"script": "boba(\\.min)?\\.js", "script": "boba(\\.min)?\\.js",
"website": "http://boba.space150.com/" "website": "boba.space150.com"
}, },
"Bolt": { "Bolt": {
"cats": [ "cats": [
@ -734,7 +732,7 @@
"cats": [ "cats": [
2 2
], ],
"html": "<a href=\"[^>]+woltlab\\.com.+Burning Board", "html": "<a href=\"[^>]+woltlab\\.com[^<]+<strong>Burning Board",
"implies": "PHP", "implies": "PHP",
"website": "www.woltlab.com" "website": "www.woltlab.com"
}, },
@ -824,7 +822,7 @@
"env": "^fn_compare_strings$", "env": "^fn_compare_strings$",
"html": [ "html": [
"&nbsp;Powered by (?:<a href=[^>]+cs-cart\\.com|CS-Cart)", "&nbsp;Powered by (?:<a href=[^>]+cs-cart\\.com|CS-Cart)",
"(?:\\$|jQuery)\\.runCart\\('\\w'\\)" ".cm-noscript[^>]+</style>"
], ],
"implies": "PHP", "implies": "PHP",
"website": "www.cs-cart.com" "website": "www.cs-cart.com"
@ -952,7 +950,7 @@
"cats": [ "cats": [
10 10
], ],
"html": "function loadChartbeat\\(\\) \\{", "env": "^_sf_(?:endpt|async_config)$",
"script": "chartbeat\\.js", "script": "chartbeat\\.js",
"website": "chartbeat.com" "website": "chartbeat.com"
}, },
@ -1014,7 +1012,6 @@
10 10
], ],
"env": "^ClickTale", "env": "^ClickTale",
"html": "if\\(typeof ClickTale\\(Tag\\)*==\\\"function\\\"\\)",
"website": "www.clicktale.com" "website": "www.clicktale.com"
}, },
"Clicky": { "Clicky": {
@ -1286,8 +1283,7 @@
1 1
], ],
"html": [ "html": [
"<a href=\"http://www\\.dtg\\.nl/\"[^>]+>Site Powered by DTG", "<a[^>]+Site Powered by DTG"
"var u=\\(\\('https:' == d\\.location\\.protocol\\) \\? 'https://resellerstat\\.mono\\.net/dtg/' : 'http://resellerstat\\.mono\\.net/dtg/'\\);"
], ],
"implies": "Mono.net", "implies": "Mono.net",
"website": "www.dtg.nl" "website": "www.dtg.nl"
@ -1561,7 +1557,7 @@
"cats": [ "cats": [
6 6
], ],
"html": "(?:id=\"block[_-]commerce[_-]cart[_-]cart|class=\"commerce[_-]product[_-]field)", "html": "<[^]+(?:id=\"block[_-]commerce[_-]cart[_-]cart|class=\"commerce[_-]product[_-]field)",
"implies": "Drupal", "implies": "Drupal",
"website": "drupalcommerce.org" "website": "drupalcommerce.org"
}, },
@ -1722,10 +1718,10 @@
"cats": [ "cats": [
25 25
], ],
"html": "<link.+?href=\"[^\"]+epoch(?:\\.min)?\\.css", "html": "<link[^>]+?href=\"[^\"]+epoch(?:\\.min)?\\.css",
"implies": "D3", "implies": "D3",
"script": "epoch(\\.min)?\\.js", "script": "epoch(\\.min)?\\.js",
"website": "https://fastly.github.io/epoch/" "website": "fastly.github.io/epoch"
}, },
"Epom": { "Epom": {
"cats": [ "cats": [
@ -2068,7 +2064,7 @@
"meta": { "meta": {
"description": "GitLab Continuous Integration" "description": "GitLab Continuous Integration"
}, },
"website": "https://about.gitlab.com/gitlab-ci/" "website": "about.gitlab.com/gitlab-ci"
}, },
"GlassFish": { "GlassFish": {
"cats": [ "cats": [
@ -2129,8 +2125,7 @@
"headers": { "headers": {
"Set-Cookie": "__utma" "Set-Cookie": "__utma"
}, },
"html": "_gaq\\.push\\(\\['_setAccount|i\\['GoogleAnalyticsObject'\\]|ga\\.async = true", "script": "^https?://[^\\/]+\\.google-analytics\\.com\\/(?:ga|urchin|(analytics))\\.js\\;version:\\1?UA:",
"script": "^https?://[^\\/]+\\.google-analytics\\.com\\/(?:ga|urchin|(analytics))\\.js\\;version:\\1?Universal Analytics:",
"website": "google.com/analytics" "website": "google.com/analytics"
}, },
"Google App Engine": { "Google App Engine": {
@ -2250,7 +2245,7 @@
19 19
], ],
"env": "^Gravatar$", "env": "^Gravatar$",
"html": "gravatar\\.com/avatar/", "html": "<[^]+gravatar\\.com/avatar/",
"website": "gravatar.com" "website": "gravatar.com"
}, },
"Gravity Insights": { "Gravity Insights": {
@ -2344,7 +2339,7 @@
], ],
"env": "^Hammer$", "env": "^Hammer$",
"script": "hammer(\\.min)?\\.js", "script": "hammer(\\.min)?\\.js",
"website": "http://hammerjs.github.io" "website": "hammerjs.github.io"
}, },
"Handlebars": { "Handlebars": {
"cats": [ "cats": [
@ -2384,8 +2379,8 @@
"cats": [ "cats": [
5 5
], ],
"html": "/hellobar\\.js", "env": "^HelloBar$",
"script": "(?:hellobar\\.com/hellobar\\.js|new HelloBar)", "script": "hellobar\\.js",
"website": "hellobar.com" "website": "hellobar.com"
}, },
"Hiawatha": { "Hiawatha": {
@ -2459,7 +2454,7 @@
"headers": { "headers": {
"Set-Cookie": "_hybris" "Set-Cookie": "_hybris"
}, },
"html": "(?:/sys_master/|/hybr/|/_ui/desktop/)", "html": "<[^]+(?:/sys_master/|/hybr/|/_ui/desktop/)",
"implies": "Java", "implies": "Java",
"website": "hybris.com" "website": "hybris.com"
}, },
@ -3070,7 +3065,7 @@
12 12
], ],
"script": "lazy(\\.browser)?(\\.min)?\\.js", "script": "lazy(\\.browser)?(\\.min)?\\.js",
"website": "http://danieltao.com/lazy.js/" "website": "danieltao.com/lazy.js"
}, },
"Leaflet": { "Leaflet": {
"cats": [ "cats": [
@ -3168,10 +3163,10 @@
"cats": [ "cats": [
1 1
], ],
"env": "^LIVESTREET",
"headers": { "headers": {
"X-Powered-By": "LiveStreet CMS" "X-Powered-By": "LiveStreet CMS"
}, },
"html": "var LIVESTREET_SECURITY_KEY",
"website": "livestreetcms.com" "website": "livestreetcms.com"
}, },
"Livefyre": { "Livefyre": {
@ -3206,7 +3201,7 @@
"cats": [ "cats": [
1 1
], ],
"html": "<link[^>]*/sites/[a-z\\d]{24}/theme/stylesheets/.*>", "html": "<link[^>]*/sites/[a-z\\d]{24}/theme/stylesheets",
"implies": [ "implies": [
"Ruby on Rails", "Ruby on Rails",
"MongoDB" "MongoDB"
@ -3330,7 +3325,6 @@
"cats": [ "cats": [
5 5
], ],
"html": "\\/assets\\/js\\/manycontacts\\.min\\.js",
"script": "\\/assets\\/js\\/manycontacts\\.min\\.js", "script": "\\/assets\\/js\\/manycontacts\\.min\\.js",
"website": "www.manycontacts.com" "website": "www.manycontacts.com"
}, },
@ -3450,7 +3444,7 @@
"cats": [ "cats": [
2 2
], ],
"html": "<a href=\"[^>]+minibb.+\\s+<!--End of copyright link", "html": "<a href=\"[^\"]+minibb[^<]+</a>[^<]+\n<!--End of copyright link",
"website": "www.minibb.com" "website": "www.minibb.com"
}, },
"MiniServ": { "MiniServ": {
@ -3610,8 +3604,7 @@
"cats": [ "cats": [
1 1
], ],
"env": "_monoTracker", "env": "^_monoTracker$",
"html": "var u=\\(\\('https:' == d\\.location\\.protocol\\) \\? 'https://resellerstat\\.mono\\.net/mono/' : 'http://resellerstat\\.mono\\.net/mono/'\\);",
"implies": "Piwik", "implies": "Piwik",
"script": "monotracker(?:\\.min)?\\.js", "script": "monotracker(?:\\.min)?\\.js",
"website": "www.mono.net" "website": "www.mono.net"
@ -3755,7 +3748,7 @@
"cats": [ "cats": [
10 10
], ],
"html": "sitestat\\(\".+nl\\.sitestat\\.com", "env": "^sitestat$",
"website": "www.nedstat.com" "website": "www.nedstat.com"
}, },
"Nepso": { "Nepso": {
@ -3824,7 +3817,7 @@
"html": "<link [^>]*href=\"[^\"]+owl.carousel(?:\\.min)?\\.css", "html": "<link [^>]*href=\"[^\"]+owl.carousel(?:\\.min)?\\.css",
"implies": "jQuery", "implies": "jQuery",
"script": "owl.carousel.*\\.js", "script": "owl.carousel.*\\.js",
"website": "http://owlgraphic.com/owlcarousel/" "website": "owlgraphic.com/owlcarousel"
}, },
"OXID eShop": { "OXID eShop": {
"cats": [ "cats": [
@ -3854,7 +3847,7 @@
"cats": [ "cats": [
10 10
], ],
"html": "var p==.+stat\\.onestat\\.com/stat\\.aspx\\?tagver", "env": "^OneStat",
"website": "www.onestat.com" "website": "www.onestat.com"
}, },
"Open AdStream": { "Open AdStream": {
@ -3872,7 +3865,7 @@
"author": "open-classifieds\\.com", "author": "open-classifieds\\.com",
"copyright": "Open Classifieds ?([0-9.]+)?\\;version:\\1" "copyright": "Open Classifieds ?([0-9.]+)?\\;version:\\1"
}, },
"website": "http://open-classifieds.com" "website": "open-classifieds.com"
}, },
"Open Journal Systems": { "Open Journal Systems": {
"cats": [ "cats": [
@ -3905,7 +3898,7 @@
"author": "open-eshop\\.com", "author": "open-eshop\\.com",
"copyright": "Open eShop ?([0-9.]+)?\\;version:\\1" "copyright": "Open eShop ?([0-9.]+)?\\;version:\\1"
}, },
"website": "http://open-eshop.com/" "website": "open-eshop.com/"
}, },
"OpenCart": { "OpenCart": {
"cats": [ "cats": [
@ -4135,7 +4128,6 @@
32 32
], ],
"env": "^pi(?:Tracker|Hostname|Protocol|CId|AId)$", "env": "^pi(?:Tracker|Hostname|Protocol|CId|AId)$",
"html": "piProtocol + \"pi\\.pardot\\.com/pi\\.js",
"website": "pardot.com" "website": "pardot.com"
}, },
"Parse.ly": { "Parse.ly": {
@ -4150,7 +4142,7 @@
25 25
], ],
"script": "paths(\\.min)?\\.js", "script": "paths(\\.min)?\\.js",
"website": "https://github.com/andreaferretti/paths-js" "website": "github.com/andreaferretti/paths-js"
}, },
"PayPal": { "PayPal": {
"cats": [ "cats": [
@ -4248,7 +4240,6 @@
"headers": { "headers": {
"Set-Cookie": "PIWIK_SESSID=" "Set-Cookie": "PIWIK_SESSID="
}, },
"html": "var piwikTracker = Piwik\\.getTracker\\(",
"meta": { "meta": {
"apple-itunes-app": "app-id=737216887", "apple-itunes-app": "app-id=737216887",
"generator": "Piwik - Open Source Web Analytics", "generator": "Piwik - Open Source Web Analytics",
@ -4349,7 +4340,10 @@
"cats": [ "cats": [
6 6
], ],
"html": "(s\\d\\d)\\.php\\?shopid=\\1", "html": [
"<a[^>]+title=\"POWERGAP",
"<input type=\"hidden\" name=\"shopid\""
],
"website": "powergap.de" "website": "powergap.de"
}, },
"Prefix-Free": { "Prefix-Free": {
@ -4588,7 +4582,7 @@
"env": "^Rickshaw$", "env": "^Rickshaw$",
"implies": "D3", "implies": "D3",
"script": "rickshaw(\\.min)?\\.js", "script": "rickshaw(\\.min)?\\.js",
"website": "http://code.shutterstock.com/rickshaw/" "website": "code.shutterstock.com/rickshaw/"
}, },
"RiteCMS": { "RiteCMS": {
"cats": [ "cats": [
@ -4666,10 +4660,7 @@
"cats": [ "cats": [
1 1
], ],
"html": [ "html": "<img[^>]+_tcm\\d{2,3}-\\d{6}\\.",
"mfinfo\\.application='Tridion",
"<img[^>]+_tcm\\d{2,3}-\\d{6}\\."
],
"website": "www.sdl.com/products/tridion" "website": "www.sdl.com/products/tridion"
}, },
"SIMsite": { "SIMsite": {
@ -4840,7 +4831,7 @@
"cats": [ "cats": [
6 6
], ],
"html": "http://www\\.getseoshop\\.com", "html": "<a[^>]+title=\"SEOshop",
"website": "getseoshop.com" "website": "getseoshop.com"
}, },
"Serendipity": { "Serendipity": {
@ -4964,7 +4955,6 @@
10 10
], ],
"env": "^s_(?:account|objectID|code|INST)$", "env": "^s_(?:account|objectID|code|INST)$",
"html": "var s_code=s\\.t\\(\\);if\\(s_code\\)document\\.write\\(s_code\\)",
"script": "/s[_-]code.*\\.js", "script": "/s[_-]code.*\\.js",
"website": "www.adobe.com/solutions/digital-marketing.html" "website": "www.adobe.com/solutions/digital-marketing.html"
}, },
@ -5081,7 +5071,6 @@
19 19
], ],
"env": "^SobiProUrl$", "env": "^SobiProUrl$",
"html": " <(?:script|link)[^>].*com_sobipro.*>",
"implies": "Joomla", "implies": "Joomla",
"website": "sigsiu.net/sobipro.html" "website": "sigsiu.net/sobipro.html"
}, },
@ -5190,7 +5179,7 @@
"headers": { "headers": {
"X-Powered-By": "Squiz Matrix" "X-Powered-By": "Squiz Matrix"
}, },
"html": " Running (?:MySource|Squiz) Matrix", "html": "<!--\\s+Running (?:MySource|Squiz) Matrix",
"implies": "PHP", "implies": "PHP",
"meta": { "meta": {
"generator": "Squiz Matrix" "generator": "Squiz Matrix"
@ -5274,9 +5263,9 @@
12 12
], ],
"env": "^swal$", "env": "^swal$",
"html": "<link.+?href=\"[^\"]+sweet-alert(?:\\.min)?\\.css", "html": "<link[^>]+?href=\"[^\"]+sweet-alert(?:\\.min)?\\.css",
"script": "sweet-alert(\\.min)?\\.js", "script": "sweet-alert(\\.min)?\\.js",
"website": "http://tristanedwards.me/sweetalert" "website": "tristanedwards.me/sweetalert"
}, },
"Swiftlet": { "Swiftlet": {
"cats": [ "cats": [
@ -5356,7 +5345,7 @@
1 1
], ],
"excludes": "TYPO3 CMS", "excludes": "TYPO3 CMS",
"html": "xmlns:typo3=\\\"http://www\\.typo3\\.org/ns/\\d{4}/Flow/Packages/Neos/Content/", "html": "<html[^>]+xmlns:typo3=\"[^\"]+Flow/Packages/Neos/",
"implies": [ "implies": [
"PHP", "PHP",
"TYPO3 Flow" "TYPO3 Flow"
@ -5375,10 +5364,7 @@
"cats": [ "cats": [
44 44
], ],
"html": [ "html": "<span class=\"versionTag\"><span class=\"vWord\">Version</span> ([\\d\\.]+)\\;version:\\1",
"http://www.jetbrains.com/teamcity/feedback\\?source=footer&version=([\\d\\.]+)\\;version:\\1",
"\n\\s*<span class=\"versionTag\"><span class=\"vWord\">Version</span> ([\\d\\.]+) \\(build \\d+\\)</span>\\;version:\\1"
],
"implies": [ "implies": [
"jQuery", "jQuery",
"Prototype" "Prototype"
@ -5515,7 +5501,7 @@
10 10
], ],
"env": "^TrackJs$", "env": "^TrackJs$",
"script": "\tracker.js", "script": "tracker.js",
"website": "trackjs.com" "website": "trackjs.com"
}, },
"Tumblr": { "Tumblr": {
@ -5571,8 +5557,7 @@
], ],
"env": "^Twipsy$\\;confidence:50", "env": "^Twipsy$\\;confidence:50",
"html": [ "html": [
"<style[^>]*>.*Bootstrap v.* Copyright .* Twitter, Inc\\.\\* Licensed under.*<\\/style>", "<link[^>]+?href=\"[^\"]+bootstrap(?:\\.min)?\\.css",
"<link.+?href=\"[^\"]+bootstrap(?:\\.min)?\\.css",
"<div [^>]*class=\"[^\"]*col-(?:xs|sm|md|lg)-\\d{1,2}" "<div [^>]*class=\"[^\"]*col-(?:xs|sm|md|lg)-\\d{1,2}"
], ],
"script": "(?:twitter\\.github\\.com/bootstrap|bootstrap(?:\\.js|\\.min\\.js))", "script": "(?:twitter\\.github\\.com/bootstrap|bootstrap(?:\\.js|\\.min\\.js))",
@ -5584,7 +5569,7 @@
], ],
"env": "^twemoji$", "env": "^twemoji$",
"script": "twemoji(\\.min)?\\.js", "script": "twemoji(\\.min)?\\.js",
"website": "https://twitter.github.io/twemoji/" "website": "twitter.github.io/twemoji/"
}, },
"Twitter Flight": { "Twitter Flight": {
"cats": [ "cats": [
@ -5592,7 +5577,7 @@
], ],
"env": "^flight$", "env": "^flight$",
"implies": "jQuery", "implies": "jQuery",
"website": "https://flightjs.github.io/" "website": "flightjs.github.io/"
}, },
"Twitter typeahead.js": { "Twitter typeahead.js": {
"cats": [ "cats": [
@ -5601,7 +5586,7 @@
"env": "^typeahead$", "env": "^typeahead$",
"implies": "jQuery\\;confidence:50", "implies": "jQuery\\;confidence:50",
"script": "(typeahead|bloodhound)(\\.jquery|\\.bundle)?(\\.min)?\\.js", "script": "(typeahead|bloodhound)(\\.jquery|\\.bundle)?(\\.min)?\\.js",
"website": "https://twitter.github.io/typeahead.js/" "website": "twitter.github.io/typeahead.js"
}, },
"TypePad": { "TypePad": {
"cats": [ "cats": [
@ -6086,7 +6071,7 @@
"cats": [ "cats": [
1 1
], ],
"html": "(?:<a href=\"[^>]+wolfcms\\.org.+Wolf CMS.+inside|Thank you for using <a[^>]+>Wolf CMS)", "html": "(?:<a href=\"[^>]+wolfcms\\.org[^>]+>Wolf CMS(?:</a>)? inside|Thank you for using <a[^>]+>Wolf CMS)",
"website": "www.wolfcms.org" "website": "www.wolfcms.org"
}, },
"WooCommerce": { "WooCommerce": {
@ -6310,7 +6295,7 @@
"cats": [ "cats": [
10 10
], ],
"html": "mc\\.yandex\\.ru\\/metrika\\/watch\\.js|\b(?:yaParams|yaCounter|yandex_metrika_callbacks)\b", "env": "^yandex_metrika",
"script": "mc\\.yandex\\.ru\\/metrika\\/watch\\.js", "script": "mc\\.yandex\\.ru\\/metrika\\/watch\\.js",
"website": "metrika.yandex.com" "website": "metrika.yandex.com"
}, },
@ -6374,7 +6359,8 @@
"cats": [ "cats": [
19 19
], ],
"html": "zbxCallPostScripts\\(\\);", "env": "^zbxCallPostScripts$",
"html": "<body[^>]+zbxCallPostScripts",
"meta": { "meta": {
"Author": "ZABBIX SIA\\;confidence:70" "Author": "ZABBIX SIA\\;confidence:70"
}, },
@ -6475,9 +6461,9 @@
"cats": [ "cats": [
19 19
], ],
"html": "id='cgit'", "html": "<[^]+id='cgit'",
"implies": "Perl", "implies": "Perl",
"website": "git.zx2c4.com/cgit/" "website": "git.zx2c4.com/cgit"
}, },
"comScore": { "comScore": {
"cats": [ "cats": [
@ -7040,7 +7026,7 @@
], ],
"env": "^Shine$", "env": "^Shine$",
"script": "shine(\\.min)?\\.js", "script": "shine(\\.min)?\\.js",
"website": "http://bigspaceship.github.io/shine.js/" "website": "bigspaceship.github.io/shine.js/"
}, },
"spin.js": { "spin.js": {
"cats": [ "cats": [
@ -7124,9 +7110,9 @@
25 25
], ],
"env": "^vis$", "env": "^vis$",
"html": "<link.+?href=\"[^\"]+vis(?:\\.min)?\\.css", "html": "<link[^>]+?href=\"[^\"]+vis(?:\\.min)?\\.css",
"script": "vis(\\.min)?\\.js", "script": "vis(\\.min)?\\.js",
"website": "http://visjs.org" "website": "visjs.org"
}, },
"webEdition": { "webEdition": {
"cats": [ "cats": [
@ -7152,7 +7138,7 @@
"cats": [ "cats": [
6 6
], ],
"html": "<div class=\"copyright\">.+<a[^>]+>xt:Commerce", "html": "<div class=\"copyright\">[^<]+<a[^>]+>xt:Commerce",
"meta": { "meta": {
"generator": "xt:Commerce" "generator": "xt:Commerce"
}, },

Loading…
Cancel
Save