|
|
@ -11,303 +11,176 @@ wappalyzer =
|
|
|
|
prevUrl: '',
|
|
|
|
prevUrl: '',
|
|
|
|
regexDomain: /^[a-z0-9._\-]+\.[a-z]+$/,
|
|
|
|
regexDomain: /^[a-z0-9._\-]+\.[a-z]+$/,
|
|
|
|
appsDetected: 0,
|
|
|
|
appsDetected: 0,
|
|
|
|
checkUnique: [],
|
|
|
|
checkUnique: {},
|
|
|
|
currentTab: false,
|
|
|
|
currentTab: false,
|
|
|
|
lastHref: '',
|
|
|
|
|
|
|
|
prefs: null,
|
|
|
|
prefs: null,
|
|
|
|
autoDetect: true,
|
|
|
|
autoDetect: true,
|
|
|
|
enableTracking: true,
|
|
|
|
enableTracking: true,
|
|
|
|
newInstall: false,
|
|
|
|
newInstall: false,
|
|
|
|
showAppNames: 3,
|
|
|
|
showAppNames: 3,
|
|
|
|
history: [],
|
|
|
|
history: {},
|
|
|
|
hitCount: 0,
|
|
|
|
hitCount: 0,
|
|
|
|
isBookmarklet: false,
|
|
|
|
isBookmarklet: false,
|
|
|
|
req: false,
|
|
|
|
req: false,
|
|
|
|
|
|
|
|
|
|
|
|
app: [
|
|
|
|
apps: {
|
|
|
|
'phpBB',
|
|
|
|
'phpBB': { html: /(Powered by (<a href=("|')[^>]+)?phpBB|<meta name=("|')copyright("|') [^>]+phpBB Group)/i },
|
|
|
|
'WordPress',
|
|
|
|
'WordPress': { html: /(<link rel=("|')stylesheet("|') [^>]+wp-content|<meta name=("|')generator("|') [^>]+WordPress)/i },
|
|
|
|
'MediaWiki',
|
|
|
|
'MediaWiki': { html: /(<meta name=("|')generator("|') [^>]+MediaWiki|<a[^>]+>Powered by MediaWiki<\/a>)/i },
|
|
|
|
'Joomla',
|
|
|
|
'Joomla': { html: /(<meta name=("|')generator("|') [^>]+Joomla|<!\-\- JoomlaWorks "K2")/i, headers: { 'X-Content-Encoded-By': /Joomla/ } },
|
|
|
|
'Drupal',
|
|
|
|
'Drupal': { html: /(<script [^>]+drupal\.js|jQuery\.extend\(Drupal\.settings, \{|Drupal\.extend\(\{ settings: \{|<link[^>]+sites\/(default|all)\/themes\/|<style.+sites\/(default|all)\/(themes|modules)\/)/i, headers: { 'X-Drupal-Cache': /.*/ } },
|
|
|
|
'Kolibri CMS',
|
|
|
|
'Kolibri CMS': { html: /<meta name=("|')copyright("|') [^>]+Kolibri/i },
|
|
|
|
'vBulletin',
|
|
|
|
'vBulletin': { html: /<meta name=("|')generator("|') [^>]+vBulletin/i },
|
|
|
|
'SMF',
|
|
|
|
'SMF': { html: /<script .+\s+var smf_/i },
|
|
|
|
'IPB',
|
|
|
|
'IPB': { html: /<script [^>]+jscripts\/ips_/i },
|
|
|
|
'Coppermine',
|
|
|
|
'Coppermine': { html: /<!--Coppermine Photo Gallery/i },
|
|
|
|
'MiniBB',
|
|
|
|
'MiniBB': { html: /<a href=("|')[^>]+minibb.+\s+<!--End of copyright link/i },
|
|
|
|
'punBB',
|
|
|
|
'punBB': { html: /Powered by <a href=("|')[^>]+punbb/i },
|
|
|
|
'XMB',
|
|
|
|
'XMB': { html: /<!-- Powered by XMB/i },
|
|
|
|
'YaBB',
|
|
|
|
'YaBB': { html: /Powered by <a href=("|')[^>]+yabbforum/i },
|
|
|
|
's9y',
|
|
|
|
's9y': { html: /<meta name=("|')Powered-By("|') [^>]+Serendipity/i },
|
|
|
|
'e107',
|
|
|
|
'e107': { html: /<script [^>]+e107\.js/i },
|
|
|
|
'PHP-Fusion',
|
|
|
|
'PHP-Fusion': { html: /Powered by <a href=("|')[^>]+php-fusion/i },
|
|
|
|
'DokuWiki',
|
|
|
|
'DokuWiki': { html: /<meta name=("|')generator("|') [^>]+DokuWiki/i },
|
|
|
|
'Squarespace',
|
|
|
|
'Squarespace': { html: /Squarespace\.Constants\.CURRENT_MODULE_ID/i },
|
|
|
|
'MyBB',
|
|
|
|
'MyBB': { html: /(<script .+\s+<!--\s+lang\.no_new_posts|<a[^>]* title=("|')Powered By MyBB)/i },
|
|
|
|
'FluxBB',
|
|
|
|
'FluxBB': { html: /Powered by (<strong>)?<a href=("|')[^>]+fluxbb/i },
|
|
|
|
'Vanilla',
|
|
|
|
'Vanilla': { html: /<body id=("|')(DiscussionsPage|vanilla)/i, headers: { 'X-Powered-By': /Vanilla/ } },
|
|
|
|
'TYPO3',
|
|
|
|
'TYPO3': { html: /(<meta name=("|')generator("|') [^>]+TYPO3|<(script[^>]* src|link[^>]* href)=[^>]*fileadmin)/i, url: /\/typo3/i },
|
|
|
|
'Prestashop',
|
|
|
|
'Prestashop': { html: /(<meta name=("|')generator("|') [^>]+PrestaShop|Powered by <a href=("|')[^>]+PrestaShop)/i },
|
|
|
|
'Zen Cart',
|
|
|
|
'Zen Cart': { html: /<meta name=("|')generator("|') [^>]+Zen Cart/i },
|
|
|
|
'osCommerce',
|
|
|
|
'osCommerce': { html: /<!-- header_eof \/\/-->/i },
|
|
|
|
'WikkaWiki',
|
|
|
|
'WikkaWiki': { html: /(Powered by <a href=("|')[^>]+WikkaWiki|<meta name=("|')generator("|') [^>]+WikkaWiki)/i },
|
|
|
|
'osCSS',
|
|
|
|
'osCSS': { html: /<body onload=("|')window\.defaultStatus='oscss templates';("|')/i },
|
|
|
|
'Google Analytics',
|
|
|
|
'Google Analytics': { html: /(\.google\-analytics\.com\/ga\.js|<script src=("|')[^"]+google-analytics\.com\/urchin\.js("|'))/i },
|
|
|
|
'Crazy Egg',
|
|
|
|
'Crazy Egg': { html: /<script type=("|')text\/javascript("|') src=("|')http:\/\/cetrk\.com\/pages\/scripts\/[0-9]+\/[0-9]+\.js("|')/ },
|
|
|
|
'OneStat',
|
|
|
|
'OneStat': { html: /var p=("|')http("|')\+\(d\.URL\.indexOf\('https:'\)==0\?'s':''\)\+("|'):\/\/stat\.onestat\.com\/stat\.aspx\?tagver/i },
|
|
|
|
'Clicky',
|
|
|
|
'Clicky': { html: /<script src=("|')http:\/\/static\.getclicky\.com/i },
|
|
|
|
'Quantcast',
|
|
|
|
'Quantcast': { html: /<script[^>]* src=("|')http:\/\/edge\.quantserve\.com\/quant\.js("|')>/i },
|
|
|
|
'StatCounter',
|
|
|
|
'StatCounter': { html: /<script[^>]* src=("|')http:\/\/www\.statcounter\.com\/counter\/counter/i },
|
|
|
|
'W3Counter',
|
|
|
|
'W3Counter': { html: /<script[^>]* src=("|')http:\/\/www\.w3counter\.com\/tracker\.js("|')>/i },
|
|
|
|
'Site Meter',
|
|
|
|
'Site Meter': { html: /<script[^>]* src=("|')http:\/\/[^.]+\.sitemeter.com\/js\/counter\.js\?site=/i },
|
|
|
|
'CubeCart',
|
|
|
|
'CubeCart': { html: /Powered by <a href=.http:\/\/www\.cubecart\.com/i },
|
|
|
|
'jQuery',
|
|
|
|
'jQuery': { html: /<script[^>]* src=("|')[^>]*jquery[^>]*\.js/i },
|
|
|
|
'MooTools',
|
|
|
|
'MooTools': { html: /<script[^>]* src=("|')[^>]*mootools[^>]*\.js("|')/i },
|
|
|
|
'Prototype',
|
|
|
|
'Prototype': { html: /<script[^>]* src=("|')[^>]*prototype\.js("|')/i },
|
|
|
|
'MochiKit',
|
|
|
|
'MochiKit': { html: /<script[^>]* src=("|')[^>]*MochiKit\.js/i },
|
|
|
|
'viennaCMS',
|
|
|
|
'viennaCMS': { html: /powered by <a href=("|')[^>]+viennacms/i },
|
|
|
|
'Movable Type',
|
|
|
|
'Movable Type': { html: /<meta name=("|')generator("|') [^>]+Movable Type/i },
|
|
|
|
'Tumblr',
|
|
|
|
'Tumblr': { html: /<iframe src=("|')http:\/\/www\.tumblr\.com/i, url: /^(www.)?.+\.tumblr\.com/i, headers: { 'X-Tumblr-Usec': /.*/ } },
|
|
|
|
'Google Friend Connect',
|
|
|
|
'Google Friend Connect': { html: /<script[^>]* src=("|')[^>]*google.com\/friendconnect/i },
|
|
|
|
'MyBlogLog',
|
|
|
|
'MyBlogLog': { html: /<script[^>]* src=("|')[^>]*pub\.mybloglog\.com/i },
|
|
|
|
'Google Maps',
|
|
|
|
'Google Maps': { html: /<script[^>]* src=("|')[^>]*maps\.google\.com\/maps\?file=api/i },
|
|
|
|
'AWStats',
|
|
|
|
'AWStats': { html: /<meta name=("|')generator("|') [^>]+AWStats/i },
|
|
|
|
'phpMyAdmin',
|
|
|
|
'phpMyAdmin': { html: /(var pma_absolute_uri = '|PMA_sendHeaderLocation\(|<title>phpMyAdmin<\/title>)/i },
|
|
|
|
'phpDocumentor',
|
|
|
|
'phpDocumentor': { html: /<!-- Generated by phpDocumentor/ },
|
|
|
|
'BigDump',
|
|
|
|
'BigDump': { html: /<!-- <h1>BigDump: Staggered MySQL Dump Importer/ },
|
|
|
|
'MODx',
|
|
|
|
'MODx': { html: /(<a[^>]+>Powered by MODx<\/a>|var el= \$\('modxhost'\);|<script type=("|')text\/javascript("|')>var MODX_MEDIA_PATH = "media";)/i },
|
|
|
|
'VP-ASP',
|
|
|
|
'VP-ASP': { html: /(<a[^>]+>Powered By VP\-ASP Shopping Cart<\/a>|<script[^>]* src=("|')[^>]*vs350\.js)/ },
|
|
|
|
'SPIP',
|
|
|
|
'SPIP': { html: /<meta name=("|')generator("|') [^>]+SPIP/i, headers: { 'X-Spip-Cache': /.*/ } },
|
|
|
|
'Plesk',
|
|
|
|
'Plesk': { html: /<script[^>]* src=("|')[^>]*common\.js\?plesk/i },
|
|
|
|
'Magento',
|
|
|
|
'Magento': { html: /var BLANK_URL = '[^>]+js\/blank\.html'/i },
|
|
|
|
'DirectAdmin',
|
|
|
|
'DirectAdmin': { html: /<a[^>]+>DirectAdmin<\/a> Web Control Panel/i },
|
|
|
|
'cPanel',
|
|
|
|
'cPanel': { html: /<!-- cPanel/i },
|
|
|
|
'webEdition',
|
|
|
|
'webEdition': { html: /(<meta name=("|')generator("|') [^>]+webEdition|<meta name=("|')DC.title("|') [^>]+webEdition)/i },
|
|
|
|
'CMS Made Simple',
|
|
|
|
'CMS Made Simple': { html: /<meta name=("|')generator("|') [^>]+CMS Made Simple/i },
|
|
|
|
'xtCommerce',
|
|
|
|
'xtCommerce': { html: /(<meta name=("|')generator("|') [^>]+xt:Commerce|<div class=("|')copyright("|')>.+<a[^>]+>xt:Commerce)/i },
|
|
|
|
'BIGACE',
|
|
|
|
'BIGACE': { html: /(<meta name=("|')generator("|') [^>]+BIGACE|Powered by <a href=("|')[^>]+BIGACE|<!--\s+Site is running BIGACE)/i },
|
|
|
|
'Ubercart',
|
|
|
|
'Ubercart': { html: /<script[^>]* src=("|')[^>]*uc_cart\/uc_cart_block\.js/i },
|
|
|
|
'TYPOlight',
|
|
|
|
'TYPOlight': { html: /(<!--\s+This website is powered by (TYPOlight|Contao)|<link[^>]+(typolight|contao).css)/i },
|
|
|
|
'posterous',
|
|
|
|
'posterous': { html: /<div class=("|')posterous/i },
|
|
|
|
'papaya CMS',
|
|
|
|
'papaya CMS': { html: /<link[^>]*\/papaya-themes\//i },
|
|
|
|
'eZ Publish',
|
|
|
|
'eZ Publish': { html: /<meta name=("|')generator("|') [^>]+eZ Publish/i },
|
|
|
|
'script.aculo.us',
|
|
|
|
'script.aculo.us': { html: /<script[^>]* src=("|')[^>]*scriptaculous\.js("|')/i },
|
|
|
|
'dojo',
|
|
|
|
'dojo': { html: /<script[^>]* src=("|')[^>]*dojo(\.xd)?\.js("|')/i },
|
|
|
|
'ExtJS',
|
|
|
|
'ExtJS': { html: /<script[^>]* src=("|')[^>]*ext\-base\.js("|')/i },
|
|
|
|
'WebPublisher',
|
|
|
|
'WebPublisher': { html: /<meta name=("|')generator("|') [^>]+WEB\|Publisher/i },
|
|
|
|
'ConversionLab',
|
|
|
|
'ConversionLab': { html: /<script[^>]* src=("|')http:\/\/conversionlab\.trackset\.com\/track\/tsend\.js("|')/ },
|
|
|
|
'Koego',
|
|
|
|
'Koego': { html: /<script[^>]* src=("|')http\:\/\/tracking\.koego\.com\/end\/ego\.js("|')/ },
|
|
|
|
'YUI',
|
|
|
|
'YUI': { html: /<script[^>]* src=("|')[^'"]*(\/yui\/|yui\.yahooapis\.com)[^'"]*("|')/ },
|
|
|
|
'VisualPath',
|
|
|
|
'VisualPath': { html: /<script[^>]* src=("|')http:\/\/visualpath[^\/]*\.trackset\.it\/[^\/]+\/track\/include\.js("|')/ },
|
|
|
|
'WebGUI',
|
|
|
|
'WebGUI': { html: /<meta name=("|')generator("|') [^>]+WebGUI/i },
|
|
|
|
'Plone',
|
|
|
|
'Plone': { html: /<meta name=("|')generator("|') [^>]+Plone/i },
|
|
|
|
'CS Cart',
|
|
|
|
'CS Cart': { html: / Powered by (<a href=.http:\/\/www\.cs\-cart\.com|CS\-Cart)/i },
|
|
|
|
'Web Optimizer',
|
|
|
|
'Web Optimizer': { html: /<title [^>]*lang=("|')wo("|')>/ },
|
|
|
|
'K2',
|
|
|
|
'K2': { html: /<!\-\- JoomlaWorks "K2"/ },
|
|
|
|
'AddThis',
|
|
|
|
'AddThis': { html: /<script[^>]* src=("|')[^>]*addthis\.com\/js/ },
|
|
|
|
'Koobi',
|
|
|
|
'Koobi': { html: /<meta name=("|')generator("|') [^>]+Koobi/i },
|
|
|
|
'XiTi',
|
|
|
|
'XiTi': { html: /<[^>]+src=("|')[^>]+xiti.com\/hit.xiti/i },
|
|
|
|
'Kampyle',
|
|
|
|
'Kampyle': { html: /<script[^>]* src=("|')http:\/\/cf\.kampyle\.com\/k_button\.js("|')/ },
|
|
|
|
'ClickTale',
|
|
|
|
'ClickTale': { html: /if\(typeof ClickTale(Tag)*==("|')function("|')\)/ },
|
|
|
|
'Yahoo! Web Analytics',
|
|
|
|
'Yahoo! Web Analytics': { html: /<script[^>]* src=("|')[^>]*http:\/\/d\.yimg\.com\/mi\/ywa\.js/ },
|
|
|
|
'XOOPS',
|
|
|
|
'XOOPS': { html: /<meta name=("|')generator("|') [^>]+XOOPS/i },
|
|
|
|
'Amiro.CMS',
|
|
|
|
'Amiro.CMS': { html: /<meta name=("|')generator("|') [^>]+Amiro/i },
|
|
|
|
'Blogger',
|
|
|
|
'Blogger': { html: /<meta content=("|')blogger("|') [^>]+generator/i, url: /^(www.)?.+\.blogspot\.com/i },
|
|
|
|
'DataLife Engine',
|
|
|
|
'DataLife Engine': { html: /<meta name=("|')generator("|') [^>]+DataLife Engine/i },
|
|
|
|
'Nedstat',
|
|
|
|
'Nedstat': { html: /sitestat\(("|')http:\/\/nl\.sitestat\.com/ },
|
|
|
|
'Microsoft ASP.NET',
|
|
|
|
'Microsoft ASP.NET': { html: /<input[^>]+name=("|')__VIEWSTATE/ },
|
|
|
|
'Yandex.Metrika',
|
|
|
|
'Yandex.Metrika': { html: /<script[^>]* src=("|')[^"']+mc\.yandex\.ru\/metrika\/watch\.js("|')/ },
|
|
|
|
'Snoobi',
|
|
|
|
'Snoobi': { html: /<script[^>]* src=("|')[^"']+snoobi\.com\/snoop\.php/ },
|
|
|
|
'Moogo',
|
|
|
|
'Moogo': { html: /<script[^>]* src=("|')[^"']+kotisivukone.js/ },
|
|
|
|
'Trac',
|
|
|
|
'Trac': { html: /(<a id=("|')tracpowered)/i },
|
|
|
|
'MantisBT',
|
|
|
|
'MantisBT': { html: /<img[^>]+ alt=("|')Powered by Mantis Bugtracker/i },
|
|
|
|
'Bugzilla',
|
|
|
|
'Bugzilla': { html: /<[^>]+(id|title|name)=("|')bugzilla/i },
|
|
|
|
'Redmine',
|
|
|
|
'Redmine': { html: /(<meta name=("|')description("|')Redmine("|')|Powered by <a href=("|')[^>]+Redmine)/i },
|
|
|
|
'2z Project',
|
|
|
|
'2z Project': { html: /<meta name=("|')generator("|') [^>]+2z project/i },
|
|
|
|
'Get Satisfaction',
|
|
|
|
'Get Satisfaction': { html: /var feedback_widget = new GSFN\.feedback_widget\(feedback_widget_options\)/ },
|
|
|
|
'Swiftlet',
|
|
|
|
'Swiftlet': { html: /(<meta name=("|')generator("|') [^>]+Swiftlet|Powered by <a href=("|')[^>]+Swiftlet)/i, headers: { 'X-Swiftlet-Cache': /.*/, 'X-Powered-By': /Swiftlet/ } },
|
|
|
|
'YouTube',
|
|
|
|
'YouTube': { html: /<(param|embed)[^>]+youtube\.com\/v/i },
|
|
|
|
'Vimeo',
|
|
|
|
'Vimeo': { html: /<(param|embed)[^>]+vimeo\.com\/moogaloop/i },
|
|
|
|
'blip.tv',
|
|
|
|
'blip.tv': { html: /<(param|embed)[^>]+blip\.tv\/play/i },
|
|
|
|
'SWFObject',
|
|
|
|
'SWFObject': { html: /<script[^>]+swfobject\.js/i },
|
|
|
|
'Textpattern CMS',
|
|
|
|
'Textpattern CMS': { html: /<meta name=("|')generator("|') [^>]+Textpattern/i },
|
|
|
|
'1C-Bitrix',
|
|
|
|
'1C-Bitrix': { html: /(<link[^>]+components\/bitrix|<script[^>]+1c\-bitrix)/i },
|
|
|
|
'InstantCMS',
|
|
|
|
'InstantCMS': { html: /<meta name=("|')generator("|') [^>]+InstantCMS/i },
|
|
|
|
'MaxSite CMS',
|
|
|
|
'MaxSite CMS': { html: /<meta name=("|')generator("|') [^>]+MaxSite CMS/i },
|
|
|
|
'S.Builder',
|
|
|
|
'S.Builder': { html: /<meta name=("|')generator("|') [^>]+S\.Builder/i },
|
|
|
|
'openEngine',
|
|
|
|
'openEngine': { html: /<meta[^>]+openEngine/i },
|
|
|
|
'SiteEdit',
|
|
|
|
'SiteEdit': { html: /<meta name=("|')generator("|') [^>]+SiteEdit/i },
|
|
|
|
'Kentico CMS',
|
|
|
|
'Kentico CMS': { html: /<meta name=("|')generator("|') [^>]+Kentico CMS/i },
|
|
|
|
'ShareThis',
|
|
|
|
'ShareThis': { html: /<script[^>]+ src=("|')[^"']+w\.sharethis\.com\//i },
|
|
|
|
'chartbeat',
|
|
|
|
'chartbeat': { html: /function loadChartbeat\(\) {/i },
|
|
|
|
'Meebo',
|
|
|
|
'Meebo': { html: /(<iframe id=("|')meebo\-iframe("|')|Meebo\('domReady'\))/ },
|
|
|
|
'Gravity Insights',
|
|
|
|
'Gravity Insights': { html: /gravityInsightsParams\.site_guid = '/ },
|
|
|
|
'Disqus',
|
|
|
|
'Disqus': { html: /(<div[^>]+id=("|')disqus_thread("|')|<script[^>]+disqus_url)/ },
|
|
|
|
'reCAPTCHA',
|
|
|
|
'reCAPTCHA': { html: /(<div[^>]+id=("|')recaptcha_image|<script[^>]+ src=("|')https:\/\/api\-secure\.recaptcha\.net)/ },
|
|
|
|
'DotNetNuke',
|
|
|
|
'DotNetNuke': { html: /(<meta name=("|')generator("|') [^>]+DotNetNuke|<!\-\- by DotNetNuke Corporation)/i },
|
|
|
|
'jQuery UI',
|
|
|
|
'jQuery UI': { html: /<script[^>]* src=("|')[^>]*jquery\-ui[^>]*\.js/i },
|
|
|
|
'Typekit',
|
|
|
|
'Typekit': { html: /<script[^>]* src=("|')[^>]*use.typekit.com/i },
|
|
|
|
'Mint',
|
|
|
|
'Mint': { html: /<script[^>]* src=("|')[^>]*mint\/\?js/i },
|
|
|
|
'cufon',
|
|
|
|
'cufon': { html: /(<script[^>]* src=("|')[^>]*cufon\-yui\.js|<script[^>]*>[^<]+Cufon\.now\(\))/i },
|
|
|
|
'sIFR',
|
|
|
|
'sIFR': { html: /<script[^>]* src=("|')[^>]*sifr\.js/i },
|
|
|
|
'Mollom'
|
|
|
|
'Mollom': { html: /(<script[^>]* src=("|')[^>]*mollom\.js|<img[^>]+\/.mollom\/.com)/i },
|
|
|
|
],
|
|
|
|
'YUI Doc': { html: /<html[^>]* yuilibrary\.com\/rdf\/[0-9.]+\/yui\.rdf/i },
|
|
|
|
|
|
|
|
'Piwik': { html: /var piwikTracker = Piwik\.getTracker\(/i },
|
|
|
|
match: [
|
|
|
|
'SOBI 2': { html: /(<!\-\- start of Sigsiu Online Business Index|<div[^>]* class=("|')sobi2)/i },
|
|
|
|
/(Powered by (<a href=("|')[^>]+)?phpBB|<meta name=("|')copyright("|') [^>]+phpBB Group)/i,
|
|
|
|
'DreamWeaver': { html: /(<!\-\-[^>]*(InstanceBeginEditable|Dreamweaver[^>]+target|DWLayoutDefaultTable)|function MM_preloadImages\(\) {)/ },
|
|
|
|
/(<link rel=("|')stylesheet("|') [^>]+wp-content|<meta name=("|')generator("|') [^>]+WordPress)/i,
|
|
|
|
'FrontPage': { html: /<meta name=("|')GENERATOR("|') [^>]+Microsoft FrontPage/i },
|
|
|
|
/(<meta name=("|')generator("|') [^>]+MediaWiki|<a[^>]+>Powered by MediaWiki<\/a>)/i,
|
|
|
|
'TypePad': { html: /<meta name=("|')generator("|') [^>]+typepad/i, url: /^(www.)?.+\.typepad\.com/i },
|
|
|
|
/<meta name=("|')generator("|') [^>]+Joomla/i,
|
|
|
|
'LiveJournal': { url: /^(www.)?.+\.livejournal\.com/i },
|
|
|
|
/(<script [^>]+drupal\.js|jQuery\.extend\(Drupal\.settings, \{|Drupal\.extend\(\{ settings: \{|<link[^>]+sites\/(default|all)\/themes\/|<style.+sites\/(default|all)\/(themes|modules)\/)/i,
|
|
|
|
'Vox': { url: /^(www.)?.+\.vox\.com/i },
|
|
|
|
/<meta name=("|')copyright("|') [^>]+Kolibri/i,
|
|
|
|
'xajax': { html: /<script[^>]* src=("|')[^>]*xajax_core\.js/i },
|
|
|
|
/<meta name=("|')generator("|') [^>]+vBulletin/i,
|
|
|
|
'OpenCart': { html: /Powered By <a href=("|')[^>]+OpenCart/i },
|
|
|
|
/<script .+\s+var smf_/i,
|
|
|
|
'SQL Buddy': { html: /(<title>SQL Buddy<\/title>|<[^>]+onclick=("|')sideMainClick\(("|')home\.php)/i },
|
|
|
|
/<script [^>]+jscripts\/ips_/i,
|
|
|
|
'phpPgAdmin': { html: /(<title>phpPgAdmin<\/title>|<span class=("|')appname("|')>phpPgAdmin)/i },
|
|
|
|
/<!--Coppermine Photo Gallery/i,
|
|
|
|
'Flyspray': { html: /(<a[^>]+>Powered by Flyspray|<map id=("|')projectsearchform)/ },
|
|
|
|
/<a href=("|')[^>]+minibb.+\s+<!--End of copyright link/i,
|
|
|
|
'swift.engine': { headers: { 'X-Powered-By': /swift\.engine/ } },
|
|
|
|
/Powered by <a href=("|')[^>]+punbb/i,
|
|
|
|
'sNews': { html: /<meta name=("|')Generator("|') [^>]+sNews/ },
|
|
|
|
/<!-- Powered by XMB/i,
|
|
|
|
'Plura': { html: /<iframe src="http:\/\/pluraserver\.com/ },
|
|
|
|
/Powered by <a href=("|')[^>]+yabbforum/i,
|
|
|
|
'comScore': { html: /<iframe[^>]* (id=("|')comscore("|')|scr=[^>]+comscore)/ },
|
|
|
|
/<meta name=("|')Powered-By("|') [^>]+Serendipity/i,
|
|
|
|
'Google Font API': { html: /<link[^>]* href=("|')http:\/\/fonts\.googleapis\.com/ },
|
|
|
|
/<script [^>]+e107\.js/i,
|
|
|
|
'CO2Stats': { html: /src=("|')http:\/\/www\.co2stats\.com\/propres\.php/ },
|
|
|
|
/Powered by <a href=("|')[^>]+php-fusion/i,
|
|
|
|
'Woopra': { html: /<script[^>]* src=("|')[^>]*static\.woopra\.com/i }
|
|
|
|
/<meta name=("|')generator("|') [^>]+DokuWiki/i,
|
|
|
|
},
|
|
|
|
/Squarespace\.Constants\.CURRENT_MODULE_ID/i,
|
|
|
|
|
|
|
|
/(<script .+\s+<!--\s+lang\.no_new_posts|<a[^>]* title=("|')Powered By MyBB)/i,
|
|
|
|
init: function()
|
|
|
|
/Powered by (<strong>)?<a href=("|')[^>]+fluxbb/i,
|
|
|
|
|
|
|
|
/<body id=("|')DiscussionsPage("|')/i,
|
|
|
|
|
|
|
|
/(<meta name=("|')generator("|') [^>]+TYPO3|<(script[^>]* src|link[^>]* href)=[^>]*fileadmin)/i,
|
|
|
|
|
|
|
|
/Powered by <a href=("|')[^>]+PrestaShop/i,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+Zen Cart/i,
|
|
|
|
|
|
|
|
/<!-- header_eof \/\/-->/i,
|
|
|
|
|
|
|
|
/(Powered by <a href=("|')[^>]+WikkaWiki|<meta name=("|')generator("|') [^>]+WikkaWiki)/i,
|
|
|
|
|
|
|
|
/<body onload=("|')window\.defaultStatus='oscss templates';("|')/i,
|
|
|
|
|
|
|
|
/(\.google\-analytics\.com\/ga\.js|<script src=("|')[^"]+google-analytics\.com\/urchin\.js("|'))/i,
|
|
|
|
|
|
|
|
/<script type=("|')text\/javascript("|') src=("|')http:\/\/cetrk\.com\/pages\/scripts\/[0-9]+\/[0-9]+\.js("|')/,
|
|
|
|
|
|
|
|
/var p=("|')http("|')\+\(d\.URL\.indexOf\('https:'\)==0\?'s':''\)\+("|'):\/\/stat\.onestat\.com\/stat\.aspx\?tagver/i,
|
|
|
|
|
|
|
|
/<script src=("|')http:\/\/static\.getclicky\.com/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')http:\/\/edge\.quantserve\.com\/quant\.js("|')>/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')http:\/\/www\.statcounter\.com\/counter\/counter/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')http:\/\/www\.w3counter\.com\/tracker\.js("|')>/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')http:\/\/[^.]+\.sitemeter.com\/js\/counter\.js\?site=/i,
|
|
|
|
|
|
|
|
/Powered by <a href=.http:\/\/www\.cubecart\.com/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*jquery[^>]*\.js/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*mootools[^>]*\.js("|')/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*prototype\.js("|')/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*MochiKit\.js/i,
|
|
|
|
|
|
|
|
/powered by <a href=("|')[^>]+viennacms/i,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+Movable Type/i,
|
|
|
|
|
|
|
|
/<iframe src=("|')http:\/\/www\.tumblr\.com/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*google.com\/friendconnect/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*pub\.mybloglog\.com/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*maps\.google\.com\/maps\?file=api/i,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+AWStats/i,
|
|
|
|
|
|
|
|
/var pma_absolute_uri = '/i,
|
|
|
|
|
|
|
|
/<!-- Generated by phpDocumentor/,
|
|
|
|
|
|
|
|
/<!-- <h1>BigDump: Staggered MySQL Dump Importer/,
|
|
|
|
|
|
|
|
/(<a[^>]+>Powered by MODx<\/a>|var el= \$\('modxhost'\);|<script type=("|')text\/javascript("|')>var MODX_MEDIA_PATH = "media";)/i,
|
|
|
|
|
|
|
|
/(<a[^>]+>Powered By VP\-ASP Shopping Cart<\/a>|<script[^>]* src=("|')[^>]*vs350\.js)/,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+SPIP/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*common\.js\?plesk/i,
|
|
|
|
|
|
|
|
/var BLANK_URL = '[^>]+js\/blank\.html'/i,
|
|
|
|
|
|
|
|
/<a[^>]+>DirectAdmin<\/a> Web Control Panel/i,
|
|
|
|
|
|
|
|
/<!-- cPanel/i,
|
|
|
|
|
|
|
|
/(<meta name=("|')generator("|') [^>]+webEdition|<meta name=("|')DC.title("|') [^>]+webEdition)/i,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+CMS Made Simple/i,
|
|
|
|
|
|
|
|
/(<meta name=("|')generator("|') [^>]+xt:Commerce|<div class=("|')copyright("|')>.+<a[^>]+>xt:Commerce)/i,
|
|
|
|
|
|
|
|
/(<meta name=("|')generator("|') [^>]+BIGACE|Powered by <a href=("|')[^>]+BIGACE|<!--\s+Site is running BIGACE)/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*uc_cart\/uc_cart_block\.js/i,
|
|
|
|
|
|
|
|
/(<!--\s+This website is powered by TYPOlight|<link[^>]+typolight.css)/i,
|
|
|
|
|
|
|
|
/<div class=("|')posterous/i,
|
|
|
|
|
|
|
|
/<link[^>]*\/papaya-themes\//i,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+eZ Publish/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*scriptaculous\.js("|')/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*dojo(\.xd)?\.js("|')/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*ext\-base\.js("|')/i,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+WEB\|Publisher/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')http:\/\/conversionlab\.trackset\.com\/track\/tsend\.js("|')/,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')http\:\/\/tracking\.koego\.com\/end\/ego\.js("|')/,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^'"]*(\/yui\/|yui\.yahooapis\.com)[^'"]*("|')/,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')http:\/\/visualpath[^\/]*\.trackset\.it\/[^\/]+\/track\/include\.js("|')/,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+WebGUI/i,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+Plone/i,
|
|
|
|
|
|
|
|
/ Powered by (<a href=.http:\/\/www\.cs\-cart\.com|CS\-Cart)/i,
|
|
|
|
|
|
|
|
/<title [^>]*lang=("|')wo("|')>/,
|
|
|
|
|
|
|
|
/<!-- JoomlaWorks "K2"/,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*addthis\.com\/js/,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+Koobi/i,
|
|
|
|
|
|
|
|
/<[^>]+src=("|')[^>]+xiti.com\/hit.xiti/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')http:\/\/cf\.kampyle\.com\/k_button\.js("|')/,
|
|
|
|
|
|
|
|
/if\(typeof ClickTale(Tag)*==("|')function("|')\)/,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*http:\/\/d\.yimg\.com\/mi\/ywa\.js/,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+XOOPS/i,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+Amiro/i,
|
|
|
|
|
|
|
|
/<meta content=("|')blogger("|') [^>]+generator/i,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+DataLife Engine/i,
|
|
|
|
|
|
|
|
/sitestat\(("|')http:\/\/nl\.sitestat\.com/,
|
|
|
|
|
|
|
|
/<input[^>]+name=("|')__VIEWSTATE/,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^"']+mc\.yandex\.ru\/metrika\/watch\.js("|')/,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^"']+snoobi\.com\/snoop\.php/,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^"']+kotisivukone.js/,
|
|
|
|
|
|
|
|
/(<a id=("|')tracpowered)/i,
|
|
|
|
|
|
|
|
/<img[^>]+ alt=("|')Powered by Mantis Bugtracker/i,
|
|
|
|
|
|
|
|
/<[^>]+(id|title|name)=("|')bugzilla/i,
|
|
|
|
|
|
|
|
/(<meta name=("|')description("|')Redmine("|')|Powered by <a href=("|')[^>]+Redmine)/i,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+2z project/i,
|
|
|
|
|
|
|
|
/var feedback_widget = new GSFN\.feedback_widget\(feedback_widget_options\)/,
|
|
|
|
|
|
|
|
/(<meta name=("|')generator("|') [^>]+Swiftlet|Powered by <a href=("|')[^>]+Swiftlet)/i,
|
|
|
|
|
|
|
|
/<(param|embed)[^>]+youtube\.com\/v/i,
|
|
|
|
|
|
|
|
/<(param|embed)[^>]+vimeo\.com\/moogaloop/i,
|
|
|
|
|
|
|
|
/<(param|embed)[^>]+blip\.tv\/play/i,
|
|
|
|
|
|
|
|
/<script[^>]+swfobject\.js/i,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+Textpattern/i,
|
|
|
|
|
|
|
|
/(<link[^>]+components\/bitrix|<script[^>]+1c\-bitrix)/i,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+InstantCMS/i,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+MaxSite CMS/i,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+S\.Builder/i,
|
|
|
|
|
|
|
|
/<meta[^>]+openEngine/i,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+SiteEdit/i,
|
|
|
|
|
|
|
|
/<meta name=("|')generator("|') [^>]+Kentico CMS/i,
|
|
|
|
|
|
|
|
/<script[^>]+ src=("|')[^"']+w\.sharethis\.com\//i,
|
|
|
|
|
|
|
|
/function loadChartbeat\(\) {/i,
|
|
|
|
|
|
|
|
/(<iframe id=("|')meebo\-iframe("|')|Meebo\('domReady'\))/,
|
|
|
|
|
|
|
|
/gravityInsightsParams\.site_guid = '/,
|
|
|
|
|
|
|
|
/(<div[^>]+id=("|')disqus_thread("|')|<script[^>]+disqus_url)/,
|
|
|
|
|
|
|
|
/(<div[^>]+id=("|')recaptcha_image|<script[^>]+ src=("|')https:\/\/api\-secure\.recaptcha\.net)/,
|
|
|
|
|
|
|
|
/(<meta name=("|')generator("|') [^>]+DotNetNuke|<!\-\- by DotNetNuke Corporation)/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*jquery\-ui[^>]*\.js/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*use.typekit.com/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*mint\/\?js/i,
|
|
|
|
|
|
|
|
/(<script[^>]* src=("|')[^>]*cufon\-yui\.js|<script[^>]*>[^<]+Cufon\.now\(\))/i,
|
|
|
|
|
|
|
|
/<script[^>]* src=("|')[^>]*sifr\.js/i,
|
|
|
|
|
|
|
|
/(<script[^>]* src=("|')[^>]*mollom\.js|<img[^>]+\/.mollom\/.com)/i
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
appDomain: [
|
|
|
|
|
|
|
|
'Blogger',
|
|
|
|
|
|
|
|
'TypePad',
|
|
|
|
|
|
|
|
'LiveJournal',
|
|
|
|
|
|
|
|
'Vox',
|
|
|
|
|
|
|
|
'TYPO3'
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
matchDomain: [
|
|
|
|
|
|
|
|
/(www.)?.+\.blogspot\.com$/i,
|
|
|
|
|
|
|
|
/(www.)?.+\.typepad\.com$/i,
|
|
|
|
|
|
|
|
/(www.)?.+\.livejournal\.com$/i,
|
|
|
|
|
|
|
|
/(www.)?.+\.vox\.com$/i,
|
|
|
|
|
|
|
|
/\/typo3/i
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
init: function()
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if ( wappalyzer.isBookmarklet )
|
|
|
|
if ( wappalyzer.isBookmarklet )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Preferences
|
|
|
|
// Preferences
|
|
|
|
wappalyzer.prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefService).getBranch('wappalyzer.');
|
|
|
|
wappalyzer.prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefService).getBranch('wappalyzer.');
|
|
|
|
|
|
|
|
|
|
|
|
wappalyzer.prefs.QueryInterface(Components.interfaces.nsIPrefBranch2);
|
|
|
|
wappalyzer.prefs.QueryInterface(Components.interfaces.nsIPrefBranch2);
|
|
|
@ -318,11 +191,11 @@ wappalyzer =
|
|
|
|
wappalyzer.enableTracking = wappalyzer.prefs.getBoolPref('enableTracking');
|
|
|
|
wappalyzer.enableTracking = wappalyzer.prefs.getBoolPref('enableTracking');
|
|
|
|
wappalyzer.newInstall = wappalyzer.prefs.getBoolPref('newInstall');
|
|
|
|
wappalyzer.newInstall = wappalyzer.prefs.getBoolPref('newInstall');
|
|
|
|
|
|
|
|
|
|
|
|
// Open page after installation
|
|
|
|
// Open page after installation
|
|
|
|
if ( wappalyzer.newInstall )
|
|
|
|
if ( wappalyzer.newInstall )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
wappalyzer.prefs.setBoolPref('newInstall', false);
|
|
|
|
wappalyzer.prefs.setBoolPref('newInstall', false);
|
|
|
|
|
|
|
|
|
|
|
|
gBrowser.addEventListener('load', wappalyzer.installSuccess, false);
|
|
|
|
gBrowser.addEventListener('load', wappalyzer.installSuccess, false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -343,20 +216,20 @@ wappalyzer =
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
switch(data)
|
|
|
|
switch(data)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case 'autoDetect':
|
|
|
|
case 'autoDetect':
|
|
|
|
wappalyzer.autoDetect = wappalyzer.prefs.getBoolPref('autoDetect');
|
|
|
|
wappalyzer.autoDetect = wappalyzer.prefs.getBoolPref('autoDetect');
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 'enableTracking':
|
|
|
|
case 'enableTracking':
|
|
|
|
wappalyzer.enableTracking = wappalyzer.prefs.getBoolPref('enableTracking');
|
|
|
|
wappalyzer.enableTracking = wappalyzer.prefs.getBoolPref('enableTracking');
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 'showAppNames':
|
|
|
|
case 'showAppNames':
|
|
|
|
wappalyzer.showAppNames = wappalyzer.prefs.getIntPref('showAppNames');
|
|
|
|
wappalyzer.showAppNames = wappalyzer.prefs.getIntPref('showAppNames');
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
@ -367,11 +240,13 @@ wappalyzer =
|
|
|
|
|
|
|
|
|
|
|
|
wappalyzer.analyzePage(doc, true, false);
|
|
|
|
wappalyzer.analyzePage(doc, true, false);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
onUrlChange: function()
|
|
|
|
onUrlChange: function(request)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var doc = gBrowser.selectedBrowser.contentDocument;
|
|
|
|
var doc = gBrowser.selectedBrowser.contentDocument;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
doc.request = request;
|
|
|
|
|
|
|
|
|
|
|
|
wappalyzer.analyzePage(doc, false, false);
|
|
|
|
wappalyzer.analyzePage(doc, false, false);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
@ -401,9 +276,8 @@ wappalyzer =
|
|
|
|
if ( url.spec != wappalyzer.prevUrl )
|
|
|
|
if ( url.spec != wappalyzer.prevUrl )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
wappalyzer.prevUrl = url.spec;
|
|
|
|
wappalyzer.prevUrl = url.spec;
|
|
|
|
|
|
|
|
|
|
|
|
// A tiny pauze to let the page load, otherwise some elements are displayed incorrectly in FF 3.5
|
|
|
|
wappalyzer.onUrlChange(request);
|
|
|
|
setTimeout('wappalyzer.onUrlChange()', 50);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
@ -421,13 +295,6 @@ wappalyzer =
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if ( doc.location.href == gBrowser.selectedBrowser.contentDocument.location.href )
|
|
|
|
if ( doc.location.href == gBrowser.selectedBrowser.contentDocument.location.href )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if ( wappalyzer.lastHref == doc.location.href )
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
wappalyzer.lastHref = doc.location.href;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
wappalyzer.currentTab = true;
|
|
|
|
wappalyzer.currentTab = true;
|
|
|
|
|
|
|
|
|
|
|
|
wappalyzer.clearDetectedApps();
|
|
|
|
wappalyzer.clearDetectedApps();
|
|
|
@ -436,48 +303,59 @@ wappalyzer =
|
|
|
|
|
|
|
|
|
|
|
|
if ( wappalyzer.autoDetect || ( !wappalyzer.autoDetect && manualDetect ) )
|
|
|
|
if ( wappalyzer.autoDetect || ( !wappalyzer.autoDetect && manualDetect ) )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// Scan URL for patterns
|
|
|
|
// Scan URL, domain and response headers for patterns
|
|
|
|
for ( i = 0; i < wappalyzer.appDomain.length; i ++ )
|
|
|
|
var html = doc.documentElement.innerHTML;
|
|
|
|
{
|
|
|
|
|
|
|
|
if ( typeof(wappalyzer.checkUnique[wappalyzer.appDomain[i]]) == 'undefined' ) // Don't scan for apps that have already been detected
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var regexDomain = wappalyzer.matchDomain[i];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( typeof(doc.domain) != 'undefined' )
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if ( regexDomain.test(doc.domain) )
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
wappalyzer.showApp(wappalyzer.appDomain[i], doc, doCount);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Scan HTML for patterns
|
|
|
|
|
|
|
|
var html = doc.getElementsByTagName('html')[0].innerHTML;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( html.length > 50000 ) // Prevent large documents from slowing things down
|
|
|
|
if ( html.length > 50000 ) // Prevent large documents from slowing things down
|
|
|
|
{
|
|
|
|
{
|
|
|
|
html = html.substring(0, 25000) + html.substring(html.length - 25000, html.length);
|
|
|
|
html = html.substring(0, 25000) + html.substring(html.length - 25000, html.length);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if ( html )
|
|
|
|
if ( html )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
for ( i = 0; i < wappalyzer.app.length; i ++ )
|
|
|
|
for ( var appName in wappalyzer.apps )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if ( typeof(wappalyzer.checkUnique[wappalyzer.app[i]]) == 'undefined' ) // Don't scan for apps that have already been detected
|
|
|
|
if ( typeof(wappalyzer.checkUnique[appName]) == 'undefined' ) // Don't scan for apps that have already been detected
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var regex = wappalyzer.match[i];
|
|
|
|
// Scan HTML
|
|
|
|
|
|
|
|
if ( typeof(wappalyzer.apps[appName].html) != 'undefined' )
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var regex = wappalyzer.apps[appName].html;
|
|
|
|
|
|
|
|
|
|
|
|
if ( regex.test(html) )
|
|
|
|
if ( regex.test(html) )
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
wappalyzer.showApp(appName, doc, doCount);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Scan URL
|
|
|
|
|
|
|
|
if ( typeof(wappalyzer.apps[appName].url) != 'undefined' && typeof(doc.location.href) != 'undefined' )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if ( wappalyzer.currentTab || wappalyzer.isBookmarklet )
|
|
|
|
var regex = wappalyzer.apps[appName].url;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( regex.test(doc.location.href) )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
wappalyzer.showApp(wappalyzer.app[i], doc, doCount);
|
|
|
|
wappalyzer.showApp(appName, doc, doCount);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Scan response header
|
|
|
|
|
|
|
|
if ( typeof(wappalyzer.apps[appName].headers) != 'undefined' && typeof(doc.request) != 'undefined' )
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
for ( var header in wappalyzer.apps[appName].headers )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
wappalyzer.report(wappalyzer.app[i], doc.domain);
|
|
|
|
var regex = wappalyzer.apps[appName].headers[header];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if ( regex.test(doc.request.nsIHttpChannel.getResponseHeader(header)) )
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
wappalyzer.showApp(appName, doc, doCount);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch(e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -490,6 +368,13 @@ wappalyzer =
|
|
|
|
|
|
|
|
|
|
|
|
showApp: function(detectedApp, doc, doCount)
|
|
|
|
showApp: function(detectedApp, doc, doCount)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
if ( !wappalyzer.currentTab && !wappalyzer.isBookmarklet )
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
wappalyzer.report(detectedApp, doc.domain);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if ( detectedApp && typeof(wappalyzer.checkUnique[detectedApp]) == 'undefined' )
|
|
|
|
if ( detectedApp && typeof(wappalyzer.checkUnique[detectedApp]) == 'undefined' )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
domain = doc.domain;
|
|
|
|
domain = doc.domain;
|
|
|
@ -516,7 +401,7 @@ wappalyzer =
|
|
|
|
panel.setAttribute('tooltiptext', tooltiptext);
|
|
|
|
panel.setAttribute('tooltiptext', tooltiptext);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if ( wappalyzer.showAppNames == 3 )
|
|
|
|
if ( wappalyzer.showAppNames == 3 )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
child.setAttribute('onmouseover', 'wappalyzer.showLabels(true)');
|
|
|
|
child.setAttribute('onmouseover', 'wappalyzer.showLabels(true)');
|
|
|
|
child.setAttribute('onmouseout', 'wappalyzer.showLabels(false)');
|
|
|
|
child.setAttribute('onmouseout', 'wappalyzer.showLabels(false)');
|
|
|
@ -539,7 +424,7 @@ wappalyzer =
|
|
|
|
child.setAttribute('style', 'display: none;');
|
|
|
|
child.setAttribute('style', 'display: none;');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if ( wappalyzer.showAppNames == 3 )
|
|
|
|
if ( wappalyzer.showAppNames == 3 )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
child.setAttribute('onmouseover', 'wappalyzer.showLabels(true)');
|
|
|
|
child.setAttribute('onmouseover', 'wappalyzer.showLabels(true)');
|
|
|
|
child.setAttribute('onmouseout', 'wappalyzer.showLabels(false)');
|
|
|
|
child.setAttribute('onmouseout', 'wappalyzer.showLabels(false)');
|
|
|
@ -550,11 +435,12 @@ wappalyzer =
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var e = document.getElementById('wappalyzer-bookmarklet-apps');
|
|
|
|
var e = document.getElementById('wappalyzer-bookmarklet-apps');
|
|
|
|
|
|
|
|
|
|
|
|
e.innerHTML =
|
|
|
|
e.innerHTML =
|
|
|
|
( wappalyzer.appsDetected ? e.innerHTML : '' ) +
|
|
|
|
( wappalyzer.appsDetected ? e.innerHTML : '' ) +
|
|
|
|
|
|
|
|
'<a href="' + wappalyzer.homeUrl + 'stats/app/' + escape(wappalyzer.app[i]) + '" style="color: #332;">' +
|
|
|
|
wappalyzer.app[i] +
|
|
|
|
wappalyzer.app[i] +
|
|
|
|
'<br/>'
|
|
|
|
'</a><br/>'
|
|
|
|
;
|
|
|
|
;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -563,22 +449,23 @@ wappalyzer =
|
|
|
|
wappalyzer.report(detectedApp, domain);
|
|
|
|
wappalyzer.report(detectedApp, domain);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* */
|
|
|
|
if ( !wappalyzer.isBookmarklet )
|
|
|
|
// Enable application statistics menu item
|
|
|
|
{
|
|
|
|
var e = document.getElementById('wappalyzer-app-stats');
|
|
|
|
// Enable application statistics menu item
|
|
|
|
|
|
|
|
var e = document.getElementById('wappalyzer-app-stats');
|
|
|
|
|
|
|
|
|
|
|
|
e.parentNode.setAttribute('disabled', false);
|
|
|
|
e.parentNode.setAttribute('disabled', false);
|
|
|
|
|
|
|
|
|
|
|
|
var child = document.createElement('menuitem');
|
|
|
|
var child = document.createElement('menuitem');
|
|
|
|
|
|
|
|
|
|
|
|
child.setAttribute('label', detectedApp);
|
|
|
|
child.setAttribute('label', detectedApp);
|
|
|
|
child.setAttribute('class', 'menuitem-iconic');
|
|
|
|
child.setAttribute('class', 'menuitem-iconic');
|
|
|
|
child.setAttribute('type', '');
|
|
|
|
child.setAttribute('type', '');
|
|
|
|
child.setAttribute('image', 'chrome://wappalyzer/skin/app_icons/' + detectedApp + '.ico');
|
|
|
|
child.setAttribute('image', 'chrome://wappalyzer/skin/app_icons/' + detectedApp + '.ico');
|
|
|
|
child.setAttribute('oncommand', 'wappalyzer.openTab(\'' + wappalyzer.homeUrl + 'stats/app/' + escape(detectedApp) + '\');');
|
|
|
|
child.setAttribute('oncommand', 'wappalyzer.openTab(\'' + wappalyzer.homeUrl + 'stats/app/' + escape(detectedApp) + '\');');
|
|
|
|
|
|
|
|
|
|
|
|
e.appendChild(child);
|
|
|
|
e.appendChild(child);
|
|
|
|
/* */
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
wappalyzer.appsDetected ++;
|
|
|
|
wappalyzer.appsDetected ++;
|
|
|
|
|
|
|
|
|
|
|
@ -672,7 +559,7 @@ wappalyzer =
|
|
|
|
clearDetectedApps: function()
|
|
|
|
clearDetectedApps: function()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
wappalyzer.appsDetected = 0;
|
|
|
|
wappalyzer.appsDetected = 0;
|
|
|
|
wappalyzer.checkUnique = [];
|
|
|
|
wappalyzer.checkUnique = [];
|
|
|
|
|
|
|
|
|
|
|
|
// Show Wappalyzer icon
|
|
|
|
// Show Wappalyzer icon
|
|
|
|
document.getElementById('wappalyzer-icon').style.display = 'inline';
|
|
|
|
document.getElementById('wappalyzer-icon').style.display = 'inline';
|
|
|
@ -684,7 +571,7 @@ wappalyzer =
|
|
|
|
{
|
|
|
|
{
|
|
|
|
e.removeChild(e.childNodes.item(0));
|
|
|
|
e.removeChild(e.childNodes.item(0));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Clear tooltip
|
|
|
|
// Clear tooltip
|
|
|
|
var panel = document.getElementById('wappalyzer-panel');
|
|
|
|
var panel = document.getElementById('wappalyzer-panel');
|
|
|
|
|
|
|
|
|
|
|
@ -695,7 +582,7 @@ wappalyzer =
|
|
|
|
e = document.getElementById('wappalyzer-app-stats');
|
|
|
|
e = document.getElementById('wappalyzer-app-stats');
|
|
|
|
|
|
|
|
|
|
|
|
e.parentNode.setAttribute('disabled', true);
|
|
|
|
e.parentNode.setAttribute('disabled', true);
|
|
|
|
|
|
|
|
|
|
|
|
while ( e.childNodes.length > 0 )
|
|
|
|
while ( e.childNodes.length > 0 )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
e.removeChild(e.childNodes.item(0));
|
|
|
|
e.removeChild(e.childNodes.item(0));
|
|
|
@ -714,9 +601,9 @@ wappalyzer =
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
installSuccess: function()
|
|
|
|
installSuccess: function()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
gBrowser.removeEventListener('load', wappalyzer.installSuccess, false);
|
|
|
|
gBrowser.removeEventListener('load', wappalyzer.installSuccess, false);
|
|
|
|
|
|
|
|
|
|
|
|
wappalyzer.openTab(wappalyzer.homeUrl + 'install/success/');
|
|
|
|
wappalyzer.openTab(wappalyzer.homeUrl + 'install/success/');
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
@ -732,9 +619,9 @@ wappalyzer =
|
|
|
|
wappalyzer.isBookmarklet = true;
|
|
|
|
wappalyzer.isBookmarklet = true;
|
|
|
|
|
|
|
|
|
|
|
|
if ( !document.getElementById('wappalyzer-bookmarklet') )
|
|
|
|
if ( !document.getElementById('wappalyzer-bookmarklet') )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var body = document.getElementsByTagName('body')[0];
|
|
|
|
var body = document.getElementsByTagName('body')[0];
|
|
|
|
|
|
|
|
|
|
|
|
if ( body )
|
|
|
|
if ( body )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var container = document.createElement('div');
|
|
|
|
var container = document.createElement('div');
|
|
|
|