diff --git a/drivers/bookmarklet/images/icons/Google PageSpeed.png b/drivers/bookmarklet/images/icons/Google PageSpeed.png new file mode 100644 index 000000000..6d482a838 Binary files /dev/null and b/drivers/bookmarklet/images/icons/Google PageSpeed.png differ diff --git a/drivers/bookmarklet/js/wappalyzer.js b/drivers/bookmarklet/js/wappalyzer.js index e5791c7d5..44c7cf0ff 100644 --- a/drivers/bookmarklet/js/wappalyzer.js +++ b/drivers/bookmarklet/js/wappalyzer.js @@ -89,7 +89,13 @@ var wappalyzer = (function() { attrs[attr[0]] = attr[1]; } } else { - attrs.regex = new RegExp(attr.replace('/', '\\\/'), 'i'); // Escape slashes in regular expression + try { + attrs.regex = new RegExp(attr.replace('/', '\\\/'), 'i'); // Escape slashes in regular expression + } catch (e) { + attrs.regex = new RegExp(); + + w.log(e + ': ' + attr, 'warn'); + } } }); diff --git a/drivers/bookmarklet/json b/drivers/bookmarklet/json index 05e4a18f6..000a27d19 100644 --- a/drivers/bookmarklet/json +++ b/drivers/bookmarklet/json @@ -680,6 +680,10 @@ "cats": [ 5 ], "script": "(maps\\.google\\.com/maps\\?file=api(&v=([\\d\\.]+))?|maps\\.google\\.com/maps/api/staticmap)\\;version:API v\\3" }, + "Google PageSpeed": { + "cats": [ 23, 33 ], + "headers": { "X-Mod-Pagespeed": ".*" } + }, "Google Sites": { "cats": [ 1 ], "url": "sites.google.com" @@ -1159,7 +1163,7 @@ "New Relic": { "cats": [ 10 ], "html": "]+>(var NREUMQ=NREUMQ|if \\(!NREUMQ\\.f)", - "env": "^NREUMQ$" + "env": "^NREUM" }, "Nginx": { "cats": [ 22 ], @@ -1433,7 +1437,7 @@ "reCAPTCHA": { "cats": [ 16 ], "script": "(api-secure\\.recaptcha\\.net|recaptcha_ajax\\.js)", - "html": "]+id=\\\"recaptcha_image", + "html": "(]+id=\\\"recaptcha_image|]+recaptcha|document\\.getElementById\\('recaptcha)", "env": "^Recaptcha$" }, "Red Hat": { @@ -1606,7 +1610,9 @@ }, "Squarespace": { "cats": [ 1 ], - "html": "Squarespace\\.Constants\\.CURRENT_MODULE_ID" + "html": "Squarespace\\.Constants\\.CURRENT_MODULE_ID", + "headers": { "X-ServedBy": "squarespace" }, + "env": "^Squarespace" }, "Squiz Matrix": { "cats": [ 1 ], @@ -1705,7 +1711,7 @@ }, "Twitter Bootstrap": { "cats": [ 18 ], - "script": "twitter\\.github\\.com/bootstrap", + "script": "(twitter\\.github\\.com/bootstrap|bootstrap(\\.js|\\.min\\.js))", "html": "]+bootstrap[^>]+css", "env": "^Twipsy$\\;confidence:50" }, diff --git a/drivers/chrome/apps.json b/drivers/chrome/apps.json index 05e4a18f6..000a27d19 100644 --- a/drivers/chrome/apps.json +++ b/drivers/chrome/apps.json @@ -680,6 +680,10 @@ "cats": [ 5 ], "script": "(maps\\.google\\.com/maps\\?file=api(&v=([\\d\\.]+))?|maps\\.google\\.com/maps/api/staticmap)\\;version:API v\\3" }, + "Google PageSpeed": { + "cats": [ 23, 33 ], + "headers": { "X-Mod-Pagespeed": ".*" } + }, "Google Sites": { "cats": [ 1 ], "url": "sites.google.com" @@ -1159,7 +1163,7 @@ "New Relic": { "cats": [ 10 ], "html": "]+>(var NREUMQ=NREUMQ|if \\(!NREUMQ\\.f)", - "env": "^NREUMQ$" + "env": "^NREUM" }, "Nginx": { "cats": [ 22 ], @@ -1433,7 +1437,7 @@ "reCAPTCHA": { "cats": [ 16 ], "script": "(api-secure\\.recaptcha\\.net|recaptcha_ajax\\.js)", - "html": "]+id=\\\"recaptcha_image", + "html": "(]+id=\\\"recaptcha_image|]+recaptcha|document\\.getElementById\\('recaptcha)", "env": "^Recaptcha$" }, "Red Hat": { @@ -1606,7 +1610,9 @@ }, "Squarespace": { "cats": [ 1 ], - "html": "Squarespace\\.Constants\\.CURRENT_MODULE_ID" + "html": "Squarespace\\.Constants\\.CURRENT_MODULE_ID", + "headers": { "X-ServedBy": "squarespace" }, + "env": "^Squarespace" }, "Squiz Matrix": { "cats": [ 1 ], @@ -1705,7 +1711,7 @@ }, "Twitter Bootstrap": { "cats": [ 18 ], - "script": "twitter\\.github\\.com/bootstrap", + "script": "(twitter\\.github\\.com/bootstrap|bootstrap(\\.js|\\.min\\.js))", "html": "]+bootstrap[^>]+css", "env": "^Twipsy$\\;confidence:50" }, diff --git a/drivers/chrome/images/icons/Google PageSpeed.png b/drivers/chrome/images/icons/Google PageSpeed.png new file mode 100644 index 000000000..6d482a838 Binary files /dev/null and b/drivers/chrome/images/icons/Google PageSpeed.png differ diff --git a/drivers/chrome/js/wappalyzer.js b/drivers/chrome/js/wappalyzer.js index e5791c7d5..44c7cf0ff 100644 --- a/drivers/chrome/js/wappalyzer.js +++ b/drivers/chrome/js/wappalyzer.js @@ -89,7 +89,13 @@ var wappalyzer = (function() { attrs[attr[0]] = attr[1]; } } else { - attrs.regex = new RegExp(attr.replace('/', '\\\/'), 'i'); // Escape slashes in regular expression + try { + attrs.regex = new RegExp(attr.replace('/', '\\\/'), 'i'); // Escape slashes in regular expression + } catch (e) { + attrs.regex = new RegExp(); + + w.log(e + ': ' + attr, 'warn'); + } } }); diff --git a/drivers/firefox-jetpack/data/apps.json b/drivers/firefox-jetpack/data/apps.json index 05e4a18f6..000a27d19 100644 --- a/drivers/firefox-jetpack/data/apps.json +++ b/drivers/firefox-jetpack/data/apps.json @@ -680,6 +680,10 @@ "cats": [ 5 ], "script": "(maps\\.google\\.com/maps\\?file=api(&v=([\\d\\.]+))?|maps\\.google\\.com/maps/api/staticmap)\\;version:API v\\3" }, + "Google PageSpeed": { + "cats": [ 23, 33 ], + "headers": { "X-Mod-Pagespeed": ".*" } + }, "Google Sites": { "cats": [ 1 ], "url": "sites.google.com" @@ -1159,7 +1163,7 @@ "New Relic": { "cats": [ 10 ], "html": "]+>(var NREUMQ=NREUMQ|if \\(!NREUMQ\\.f)", - "env": "^NREUMQ$" + "env": "^NREUM" }, "Nginx": { "cats": [ 22 ], @@ -1433,7 +1437,7 @@ "reCAPTCHA": { "cats": [ 16 ], "script": "(api-secure\\.recaptcha\\.net|recaptcha_ajax\\.js)", - "html": "]+id=\\\"recaptcha_image", + "html": "(]+id=\\\"recaptcha_image|]+recaptcha|document\\.getElementById\\('recaptcha)", "env": "^Recaptcha$" }, "Red Hat": { @@ -1606,7 +1610,9 @@ }, "Squarespace": { "cats": [ 1 ], - "html": "Squarespace\\.Constants\\.CURRENT_MODULE_ID" + "html": "Squarespace\\.Constants\\.CURRENT_MODULE_ID", + "headers": { "X-ServedBy": "squarespace" }, + "env": "^Squarespace" }, "Squiz Matrix": { "cats": [ 1 ], @@ -1705,7 +1711,7 @@ }, "Twitter Bootstrap": { "cats": [ 18 ], - "script": "twitter\\.github\\.com/bootstrap", + "script": "(twitter\\.github\\.com/bootstrap|bootstrap(\\.js|\\.min\\.js))", "html": "]+bootstrap[^>]+css", "env": "^Twipsy$\\;confidence:50" }, diff --git a/drivers/firefox-jetpack/images/icons/Google PageSpeed.png b/drivers/firefox-jetpack/images/icons/Google PageSpeed.png new file mode 100644 index 000000000..6d482a838 Binary files /dev/null and b/drivers/firefox-jetpack/images/icons/Google PageSpeed.png differ diff --git a/drivers/firefox-jetpack/lib/wappalyzer.js b/drivers/firefox-jetpack/lib/wappalyzer.js index e5791c7d5..44c7cf0ff 100644 --- a/drivers/firefox-jetpack/lib/wappalyzer.js +++ b/drivers/firefox-jetpack/lib/wappalyzer.js @@ -89,7 +89,13 @@ var wappalyzer = (function() { attrs[attr[0]] = attr[1]; } } else { - attrs.regex = new RegExp(attr.replace('/', '\\\/'), 'i'); // Escape slashes in regular expression + try { + attrs.regex = new RegExp(attr.replace('/', '\\\/'), 'i'); // Escape slashes in regular expression + } catch (e) { + attrs.regex = new RegExp(); + + w.log(e + ': ' + attr, 'warn'); + } } }); diff --git a/drivers/firefox/content/apps.json b/drivers/firefox/content/apps.json index 05e4a18f6..000a27d19 100644 --- a/drivers/firefox/content/apps.json +++ b/drivers/firefox/content/apps.json @@ -680,6 +680,10 @@ "cats": [ 5 ], "script": "(maps\\.google\\.com/maps\\?file=api(&v=([\\d\\.]+))?|maps\\.google\\.com/maps/api/staticmap)\\;version:API v\\3" }, + "Google PageSpeed": { + "cats": [ 23, 33 ], + "headers": { "X-Mod-Pagespeed": ".*" } + }, "Google Sites": { "cats": [ 1 ], "url": "sites.google.com" @@ -1159,7 +1163,7 @@ "New Relic": { "cats": [ 10 ], "html": "]+>(var NREUMQ=NREUMQ|if \\(!NREUMQ\\.f)", - "env": "^NREUMQ$" + "env": "^NREUM" }, "Nginx": { "cats": [ 22 ], @@ -1433,7 +1437,7 @@ "reCAPTCHA": { "cats": [ 16 ], "script": "(api-secure\\.recaptcha\\.net|recaptcha_ajax\\.js)", - "html": "]+id=\\\"recaptcha_image", + "html": "(]+id=\\\"recaptcha_image|]+recaptcha|document\\.getElementById\\('recaptcha)", "env": "^Recaptcha$" }, "Red Hat": { @@ -1606,7 +1610,9 @@ }, "Squarespace": { "cats": [ 1 ], - "html": "Squarespace\\.Constants\\.CURRENT_MODULE_ID" + "html": "Squarespace\\.Constants\\.CURRENT_MODULE_ID", + "headers": { "X-ServedBy": "squarespace" }, + "env": "^Squarespace" }, "Squiz Matrix": { "cats": [ 1 ], @@ -1705,7 +1711,7 @@ }, "Twitter Bootstrap": { "cats": [ 18 ], - "script": "twitter\\.github\\.com/bootstrap", + "script": "(twitter\\.github\\.com/bootstrap|bootstrap(\\.js|\\.min\\.js))", "html": "]+bootstrap[^>]+css", "env": "^Twipsy$\\;confidence:50" }, diff --git a/drivers/firefox/content/js/wappalyzer.js b/drivers/firefox/content/js/wappalyzer.js index e5791c7d5..44c7cf0ff 100644 --- a/drivers/firefox/content/js/wappalyzer.js +++ b/drivers/firefox/content/js/wappalyzer.js @@ -89,7 +89,13 @@ var wappalyzer = (function() { attrs[attr[0]] = attr[1]; } } else { - attrs.regex = new RegExp(attr.replace('/', '\\\/'), 'i'); // Escape slashes in regular expression + try { + attrs.regex = new RegExp(attr.replace('/', '\\\/'), 'i'); // Escape slashes in regular expression + } catch (e) { + attrs.regex = new RegExp(); + + w.log(e + ': ' + attr, 'warn'); + } } }); diff --git a/drivers/firefox/skin/images/icons/Google PageSpeed.png b/drivers/firefox/skin/images/icons/Google PageSpeed.png new file mode 100644 index 000000000..6d482a838 Binary files /dev/null and b/drivers/firefox/skin/images/icons/Google PageSpeed.png differ diff --git a/drivers/html/apps.json b/drivers/html/apps.json index 05e4a18f6..000a27d19 100644 --- a/drivers/html/apps.json +++ b/drivers/html/apps.json @@ -680,6 +680,10 @@ "cats": [ 5 ], "script": "(maps\\.google\\.com/maps\\?file=api(&v=([\\d\\.]+))?|maps\\.google\\.com/maps/api/staticmap)\\;version:API v\\3" }, + "Google PageSpeed": { + "cats": [ 23, 33 ], + "headers": { "X-Mod-Pagespeed": ".*" } + }, "Google Sites": { "cats": [ 1 ], "url": "sites.google.com" @@ -1159,7 +1163,7 @@ "New Relic": { "cats": [ 10 ], "html": "]+>(var NREUMQ=NREUMQ|if \\(!NREUMQ\\.f)", - "env": "^NREUMQ$" + "env": "^NREUM" }, "Nginx": { "cats": [ 22 ], @@ -1433,7 +1437,7 @@ "reCAPTCHA": { "cats": [ 16 ], "script": "(api-secure\\.recaptcha\\.net|recaptcha_ajax\\.js)", - "html": "]+id=\\\"recaptcha_image", + "html": "(]+id=\\\"recaptcha_image|]+recaptcha|document\\.getElementById\\('recaptcha)", "env": "^Recaptcha$" }, "Red Hat": { @@ -1606,7 +1610,9 @@ }, "Squarespace": { "cats": [ 1 ], - "html": "Squarespace\\.Constants\\.CURRENT_MODULE_ID" + "html": "Squarespace\\.Constants\\.CURRENT_MODULE_ID", + "headers": { "X-ServedBy": "squarespace" }, + "env": "^Squarespace" }, "Squiz Matrix": { "cats": [ 1 ], @@ -1705,7 +1711,7 @@ }, "Twitter Bootstrap": { "cats": [ 18 ], - "script": "twitter\\.github\\.com/bootstrap", + "script": "(twitter\\.github\\.com/bootstrap|bootstrap(\\.js|\\.min\\.js))", "html": "]+bootstrap[^>]+css", "env": "^Twipsy$\\;confidence:50" }, diff --git a/drivers/html/images/icons/Google PageSpeed.png b/drivers/html/images/icons/Google PageSpeed.png new file mode 100644 index 000000000..6d482a838 Binary files /dev/null and b/drivers/html/images/icons/Google PageSpeed.png differ diff --git a/drivers/html/js/wappalyzer.js b/drivers/html/js/wappalyzer.js index e5791c7d5..44c7cf0ff 100644 --- a/drivers/html/js/wappalyzer.js +++ b/drivers/html/js/wappalyzer.js @@ -89,7 +89,13 @@ var wappalyzer = (function() { attrs[attr[0]] = attr[1]; } } else { - attrs.regex = new RegExp(attr.replace('/', '\\\/'), 'i'); // Escape slashes in regular expression + try { + attrs.regex = new RegExp(attr.replace('/', '\\\/'), 'i'); // Escape slashes in regular expression + } catch (e) { + attrs.regex = new RegExp(); + + w.log(e + ': ' + attr, 'warn'); + } } }); diff --git a/drivers/php/apps.json b/drivers/php/apps.json index 05e4a18f6..000a27d19 100644 --- a/drivers/php/apps.json +++ b/drivers/php/apps.json @@ -680,6 +680,10 @@ "cats": [ 5 ], "script": "(maps\\.google\\.com/maps\\?file=api(&v=([\\d\\.]+))?|maps\\.google\\.com/maps/api/staticmap)\\;version:API v\\3" }, + "Google PageSpeed": { + "cats": [ 23, 33 ], + "headers": { "X-Mod-Pagespeed": ".*" } + }, "Google Sites": { "cats": [ 1 ], "url": "sites.google.com" @@ -1159,7 +1163,7 @@ "New Relic": { "cats": [ 10 ], "html": "]+>(var NREUMQ=NREUMQ|if \\(!NREUMQ\\.f)", - "env": "^NREUMQ$" + "env": "^NREUM" }, "Nginx": { "cats": [ 22 ], @@ -1433,7 +1437,7 @@ "reCAPTCHA": { "cats": [ 16 ], "script": "(api-secure\\.recaptcha\\.net|recaptcha_ajax\\.js)", - "html": "]+id=\\\"recaptcha_image", + "html": "(]+id=\\\"recaptcha_image|]+recaptcha|document\\.getElementById\\('recaptcha)", "env": "^Recaptcha$" }, "Red Hat": { @@ -1606,7 +1610,9 @@ }, "Squarespace": { "cats": [ 1 ], - "html": "Squarespace\\.Constants\\.CURRENT_MODULE_ID" + "html": "Squarespace\\.Constants\\.CURRENT_MODULE_ID", + "headers": { "X-ServedBy": "squarespace" }, + "env": "^Squarespace" }, "Squiz Matrix": { "cats": [ 1 ], @@ -1705,7 +1711,7 @@ }, "Twitter Bootstrap": { "cats": [ 18 ], - "script": "twitter\\.github\\.com/bootstrap", + "script": "(twitter\\.github\\.com/bootstrap|bootstrap(\\.js|\\.min\\.js))", "html": "]+bootstrap[^>]+css", "env": "^Twipsy$\\;confidence:50" }, diff --git a/drivers/php/js/wappalyzer.js b/drivers/php/js/wappalyzer.js index e5791c7d5..44c7cf0ff 100644 --- a/drivers/php/js/wappalyzer.js +++ b/drivers/php/js/wappalyzer.js @@ -89,7 +89,13 @@ var wappalyzer = (function() { attrs[attr[0]] = attr[1]; } } else { - attrs.regex = new RegExp(attr.replace('/', '\\\/'), 'i'); // Escape slashes in regular expression + try { + attrs.regex = new RegExp(attr.replace('/', '\\\/'), 'i'); // Escape slashes in regular expression + } catch (e) { + attrs.regex = new RegExp(); + + w.log(e + ': ' + attr, 'warn'); + } } }); diff --git a/share/apps.json b/share/apps.json index c4798821e..000a27d19 100644 --- a/share/apps.json +++ b/share/apps.json @@ -1163,7 +1163,7 @@ "New Relic": { "cats": [ 10 ], "html": "]+>(var NREUMQ=NREUMQ|if \\(!NREUMQ\\.f)", - "env": "^NREUMQ$" + "env": "^NREUM" }, "Nginx": { "cats": [ 22 ], @@ -1437,7 +1437,7 @@ "reCAPTCHA": { "cats": [ 16 ], "script": "(api-secure\\.recaptcha\\.net|recaptcha_ajax\\.js)", - "html": "]+id=\\\"recaptcha_image", + "html": "(]+id=\\\"recaptcha_image|]+recaptcha|document\\.getElementById\\('recaptcha)", "env": "^Recaptcha$" }, "Red Hat": { @@ -1610,7 +1610,9 @@ }, "Squarespace": { "cats": [ 1 ], - "html": "Squarespace\\.Constants\\.CURRENT_MODULE_ID" + "html": "Squarespace\\.Constants\\.CURRENT_MODULE_ID", + "headers": { "X-ServedBy": "squarespace" }, + "env": "^Squarespace" }, "Squiz Matrix": { "cats": [ 1 ], @@ -1709,7 +1711,7 @@ }, "Twitter Bootstrap": { "cats": [ 18 ], - "script": "(twitter\\.github\\.com/bootstrap|bootstrap(.js|.min.js))", + "script": "(twitter\\.github\\.com/bootstrap|bootstrap(\\.js|\\.min\\.js))", "html": "]+bootstrap[^>]+css", "env": "^Twipsy$\\;confidence:50" }, diff --git a/share/js/wappalyzer.js b/share/js/wappalyzer.js index e5791c7d5..44c7cf0ff 100644 --- a/share/js/wappalyzer.js +++ b/share/js/wappalyzer.js @@ -89,7 +89,13 @@ var wappalyzer = (function() { attrs[attr[0]] = attr[1]; } } else { - attrs.regex = new RegExp(attr.replace('/', '\\\/'), 'i'); // Escape slashes in regular expression + try { + attrs.regex = new RegExp(attr.replace('/', '\\\/'), 'i'); // Escape slashes in regular expression + } catch (e) { + attrs.regex = new RegExp(); + + w.log(e + ': ' + attr, 'warn'); + } } });