├── resources ├── icon.pdn ├── icon.png ├── apps │ ├── eZ.ico │ ├── Elgg.ico │ ├── IPB.ico │ ├── MODx.ico │ ├── SMF.ico │ ├── WPML.ico │ ├── YUI.ico │ ├── dojo.ico │ ├── gmap.png │ ├── iis.ico │ ├── mybb.ico │ ├── ning.ico │ ├── owa.ico │ ├── php.ico │ ├── sdpy.ico │ ├── sifr.gif │ ├── spdy.ico │ ├── webs.ico │ ├── xiti.ico │ ├── yola.ico │ ├── AdSense.gif │ ├── BIGACE.ico │ ├── Blogger.ico │ ├── Closure.png │ ├── Disqus.ico │ ├── Drupal.ico │ ├── ExtJS.ico │ ├── Fatwire.ico │ ├── Joomla.ico │ ├── Koobi.ico │ ├── LifeRay.ico │ ├── Magento.ico │ ├── OpenTag.ico │ ├── OpenX.ico │ ├── Piwik.ico │ ├── Plone.ico │ ├── TYPO3.ico │ ├── Tumblr.ico │ ├── TypePad.ico │ ├── WebGUI.ico │ ├── Wibiya.ico │ ├── XOOPS.ico │ ├── addthis.png │ ├── agility.png │ ├── apache.ico │ ├── asp.net.ico │ ├── avactis.ico │ ├── bbPress.ico │ ├── chitika.ico │ ├── clicky.ico │ ├── contao.ico │ ├── cufon.ico │ ├── dinkly.ico │ ├── ektron.ico │ ├── ember.png │ ├── headjs.gif │ ├── hubspot.ico │ ├── jQuery.ico │ ├── jigsy.ico │ ├── jimdo.ico │ ├── meteor.ico │ ├── miniBB.ico │ ├── mollom.ico │ ├── moodle.png │ ├── muracms.ico │ ├── nette.ico │ ├── nginx.png │ ├── openacs.ico │ ├── opencms.ico │ ├── perch.ico │ ├── phpBB.ico │ ├── pivotx.ico │ ├── raphael.ico │ ├── rightjs.png │ ├── sammyjs.ico │ ├── spine.ico │ ├── twitter.ico │ ├── typekit.ico │ ├── unknown.jpg │ ├── varnish.ico │ ├── webnode.ico │ ├── weebly.ico │ ├── woopra.ico │ ├── xenforo.ico │ ├── zencart.ico │ ├── zepto.png │ ├── 1c-bitrix.ico │ ├── Alfresco.png │ ├── Amiro.CMS.ico │ ├── AmplifyJS.png │ ├── DokuWiki.ico │ ├── Gallery2.ico │ ├── MediaWiki.ico │ ├── MooTools.ico │ ├── PHP-Nuke.ico │ ├── Prototype.ico │ ├── Quantcast.ico │ ├── SWFObject.ico │ ├── Ubercart.ico │ ├── ZenPhoto.ico │ ├── alphacms.ico │ ├── batmanjs.png │ ├── bootstrap.ico │ ├── concrete5.gif │ ├── datalife.ico │ ├── eraincart.ico │ ├── etracker.ico │ ├── expressjs.png │ ├── getsimple.png │ ├── humanstxt.ico │ ├── jQuery_UI.ico │ ├── knockback.png │ ├── modernizr.ico │ ├── mojomotor.ico │ ├── newrelic.ico │ ├── opencart.png │ ├── prostores.ico │ ├── reCaptcha.ico │ ├── sugarcrm.ico │ ├── tomatocms.ico │ ├── uservoice.ico │ ├── vBulletin.ico │ ├── volusion.ico │ ├── ClanSphere.png │ ├── DotNetNuke.ico │ ├── JaliosJCMS.ico │ ├── MovableType.ico │ ├── OpenLayers.ico │ ├── PHP-Fusion.ico │ ├── PrestaShop.ico │ ├── Serendipity.png │ ├── SharePoint.png │ ├── SilverStripe.png │ ├── SiteCatalyst.ico │ ├── Sitefinity.ico │ ├── TikiWikiCms.ico │ ├── Underscore.png │ ├── buysellads.ico │ ├── cappuccino.png │ ├── coremetrics.ico │ ├── handlebars.png │ ├── kissmetrics.ico │ ├── marionette.png │ ├── osCommerce.ico │ ├── shibboleth.png │ ├── squarespace.ico │ ├── CMSMadeSimple.ico │ ├── LiveStreetCms.ico │ ├── jQuery_Mobile.png │ ├── GetSatisfaction.gif │ ├── Google_Analytics.ico │ ├── google-font-api.gif │ ├── script.aculo.us.ico │ ├── lodash.svg │ ├── google.svg │ ├── facebook.svg │ ├── angular.svg │ ├── Backbone.svg │ ├── Wordpress.svg │ └── plus1.svg ├── icon128.png ├── icon32.png ├── icon48.png ├── icon64.png ├── screenshot │ ├── shot1.png │ ├── shot2.png │ ├── shot3.png │ ├── small-tile.png │ └── large-screenshot1.png └── extension │ ├── devtools.html │ ├── framework_pane.html │ ├── background.html │ ├── popup.html │ └── manifest.json ├── src ├── detector │ ├── domain.js │ ├── cssClass.js │ ├── header.js │ ├── htmlContent.js │ ├── scriptTag.js │ ├── metaTag.js │ └── javascript.js ├── constants.js ├── devtools.js ├── common.js ├── helpers │ ├── devtools.js │ └── appInfo.js ├── components │ ├── grid.js │ ├── style.css │ ├── icon.js │ ├── app.js │ └── table.js ├── framework_pane.js ├── main.js ├── detector.js ├── popup.js ├── background.js └── apps.js ├── .gitignore ├── .babelrc ├── README.md ├── webpack.config.js ├── package.json └── LICENSE.txt /resources/icon.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/icon.pdn -------------------------------------------------------------------------------- /resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/icon.png -------------------------------------------------------------------------------- /resources/apps/eZ.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/eZ.ico -------------------------------------------------------------------------------- /resources/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/icon128.png -------------------------------------------------------------------------------- /resources/icon32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/icon32.png -------------------------------------------------------------------------------- /resources/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/icon48.png -------------------------------------------------------------------------------- /resources/icon64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/icon64.png -------------------------------------------------------------------------------- /resources/apps/Elgg.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Elgg.ico -------------------------------------------------------------------------------- /resources/apps/IPB.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/IPB.ico -------------------------------------------------------------------------------- /resources/apps/MODx.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/MODx.ico -------------------------------------------------------------------------------- /resources/apps/SMF.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/SMF.ico -------------------------------------------------------------------------------- /resources/apps/WPML.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/WPML.ico -------------------------------------------------------------------------------- /resources/apps/YUI.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/YUI.ico -------------------------------------------------------------------------------- /resources/apps/dojo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/dojo.ico -------------------------------------------------------------------------------- /resources/apps/gmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/gmap.png -------------------------------------------------------------------------------- /resources/apps/iis.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/iis.ico -------------------------------------------------------------------------------- /resources/apps/mybb.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/mybb.ico -------------------------------------------------------------------------------- /resources/apps/ning.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/ning.ico -------------------------------------------------------------------------------- /resources/apps/owa.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/owa.ico -------------------------------------------------------------------------------- /resources/apps/php.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/php.ico -------------------------------------------------------------------------------- /resources/apps/sdpy.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/sdpy.ico -------------------------------------------------------------------------------- /resources/apps/sifr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/sifr.gif -------------------------------------------------------------------------------- /resources/apps/spdy.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/spdy.ico -------------------------------------------------------------------------------- /resources/apps/webs.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/webs.ico -------------------------------------------------------------------------------- /resources/apps/xiti.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/xiti.ico -------------------------------------------------------------------------------- /resources/apps/yola.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/yola.ico -------------------------------------------------------------------------------- /src/detector/domain.js: -------------------------------------------------------------------------------- 1 | // TODO: for some case we can look at domain to detect the powered technology 2 | -------------------------------------------------------------------------------- /resources/apps/AdSense.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/AdSense.gif -------------------------------------------------------------------------------- /resources/apps/BIGACE.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/BIGACE.ico -------------------------------------------------------------------------------- /resources/apps/Blogger.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Blogger.ico -------------------------------------------------------------------------------- /resources/apps/Closure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Closure.png -------------------------------------------------------------------------------- /resources/apps/Disqus.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Disqus.ico -------------------------------------------------------------------------------- /resources/apps/Drupal.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Drupal.ico -------------------------------------------------------------------------------- /resources/apps/ExtJS.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/ExtJS.ico -------------------------------------------------------------------------------- /resources/apps/Fatwire.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Fatwire.ico -------------------------------------------------------------------------------- /resources/apps/Joomla.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Joomla.ico -------------------------------------------------------------------------------- /resources/apps/Koobi.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Koobi.ico -------------------------------------------------------------------------------- /resources/apps/LifeRay.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/LifeRay.ico -------------------------------------------------------------------------------- /resources/apps/Magento.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Magento.ico -------------------------------------------------------------------------------- /resources/apps/OpenTag.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/OpenTag.ico -------------------------------------------------------------------------------- /resources/apps/OpenX.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/OpenX.ico -------------------------------------------------------------------------------- /resources/apps/Piwik.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Piwik.ico -------------------------------------------------------------------------------- /resources/apps/Plone.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Plone.ico -------------------------------------------------------------------------------- /resources/apps/TYPO3.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/TYPO3.ico -------------------------------------------------------------------------------- /resources/apps/Tumblr.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Tumblr.ico -------------------------------------------------------------------------------- /resources/apps/TypePad.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/TypePad.ico -------------------------------------------------------------------------------- /resources/apps/WebGUI.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/WebGUI.ico -------------------------------------------------------------------------------- /resources/apps/Wibiya.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Wibiya.ico -------------------------------------------------------------------------------- /resources/apps/XOOPS.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/XOOPS.ico -------------------------------------------------------------------------------- /resources/apps/addthis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/addthis.png -------------------------------------------------------------------------------- /resources/apps/agility.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/agility.png -------------------------------------------------------------------------------- /resources/apps/apache.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/apache.ico -------------------------------------------------------------------------------- /resources/apps/asp.net.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/asp.net.ico -------------------------------------------------------------------------------- /resources/apps/avactis.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/avactis.ico -------------------------------------------------------------------------------- /resources/apps/bbPress.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/bbPress.ico -------------------------------------------------------------------------------- /resources/apps/chitika.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/chitika.ico -------------------------------------------------------------------------------- /resources/apps/clicky.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/clicky.ico -------------------------------------------------------------------------------- /resources/apps/contao.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/contao.ico -------------------------------------------------------------------------------- /resources/apps/cufon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/cufon.ico -------------------------------------------------------------------------------- /resources/apps/dinkly.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/dinkly.ico -------------------------------------------------------------------------------- /resources/apps/ektron.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/ektron.ico -------------------------------------------------------------------------------- /resources/apps/ember.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/ember.png -------------------------------------------------------------------------------- /resources/apps/headjs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/headjs.gif -------------------------------------------------------------------------------- /resources/apps/hubspot.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/hubspot.ico -------------------------------------------------------------------------------- /resources/apps/jQuery.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/jQuery.ico -------------------------------------------------------------------------------- /resources/apps/jigsy.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/jigsy.ico -------------------------------------------------------------------------------- /resources/apps/jimdo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/jimdo.ico -------------------------------------------------------------------------------- /resources/apps/meteor.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/meteor.ico -------------------------------------------------------------------------------- /resources/apps/miniBB.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/miniBB.ico -------------------------------------------------------------------------------- /resources/apps/mollom.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/mollom.ico -------------------------------------------------------------------------------- /resources/apps/moodle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/moodle.png -------------------------------------------------------------------------------- /resources/apps/muracms.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/muracms.ico -------------------------------------------------------------------------------- /resources/apps/nette.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/nette.ico -------------------------------------------------------------------------------- /resources/apps/nginx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/nginx.png -------------------------------------------------------------------------------- /resources/apps/openacs.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/openacs.ico -------------------------------------------------------------------------------- /resources/apps/opencms.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/opencms.ico -------------------------------------------------------------------------------- /resources/apps/perch.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/perch.ico -------------------------------------------------------------------------------- /resources/apps/phpBB.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/phpBB.ico -------------------------------------------------------------------------------- /resources/apps/pivotx.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/pivotx.ico -------------------------------------------------------------------------------- /resources/apps/raphael.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/raphael.ico -------------------------------------------------------------------------------- /resources/apps/rightjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/rightjs.png -------------------------------------------------------------------------------- /resources/apps/sammyjs.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/sammyjs.ico -------------------------------------------------------------------------------- /resources/apps/spine.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/spine.ico -------------------------------------------------------------------------------- /resources/apps/twitter.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/twitter.ico -------------------------------------------------------------------------------- /resources/apps/typekit.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/typekit.ico -------------------------------------------------------------------------------- /resources/apps/unknown.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/unknown.jpg -------------------------------------------------------------------------------- /resources/apps/varnish.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/varnish.ico -------------------------------------------------------------------------------- /resources/apps/webnode.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/webnode.ico -------------------------------------------------------------------------------- /resources/apps/weebly.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/weebly.ico -------------------------------------------------------------------------------- /resources/apps/woopra.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/woopra.ico -------------------------------------------------------------------------------- /resources/apps/xenforo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/xenforo.ico -------------------------------------------------------------------------------- /resources/apps/zencart.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/zencart.ico -------------------------------------------------------------------------------- /resources/apps/zepto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/zepto.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | framework-inspector.zip 2 | Thumbs.db 3 | /build 4 | /.idea 5 | node_modules 6 | npm-debug.log 7 | -------------------------------------------------------------------------------- /resources/apps/1c-bitrix.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/1c-bitrix.ico -------------------------------------------------------------------------------- /resources/apps/Alfresco.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Alfresco.png -------------------------------------------------------------------------------- /resources/apps/Amiro.CMS.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Amiro.CMS.ico -------------------------------------------------------------------------------- /resources/apps/AmplifyJS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/AmplifyJS.png -------------------------------------------------------------------------------- /resources/apps/DokuWiki.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/DokuWiki.ico -------------------------------------------------------------------------------- /resources/apps/Gallery2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Gallery2.ico -------------------------------------------------------------------------------- /resources/apps/MediaWiki.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/MediaWiki.ico -------------------------------------------------------------------------------- /resources/apps/MooTools.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/MooTools.ico -------------------------------------------------------------------------------- /resources/apps/PHP-Nuke.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/PHP-Nuke.ico -------------------------------------------------------------------------------- /resources/apps/Prototype.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Prototype.ico -------------------------------------------------------------------------------- /resources/apps/Quantcast.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Quantcast.ico -------------------------------------------------------------------------------- /resources/apps/SWFObject.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/SWFObject.ico -------------------------------------------------------------------------------- /resources/apps/Ubercart.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Ubercart.ico -------------------------------------------------------------------------------- /resources/apps/ZenPhoto.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/ZenPhoto.ico -------------------------------------------------------------------------------- /resources/apps/alphacms.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/alphacms.ico -------------------------------------------------------------------------------- /resources/apps/batmanjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/batmanjs.png -------------------------------------------------------------------------------- /resources/apps/bootstrap.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/bootstrap.ico -------------------------------------------------------------------------------- /resources/apps/concrete5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/concrete5.gif -------------------------------------------------------------------------------- /resources/apps/datalife.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/datalife.ico -------------------------------------------------------------------------------- /resources/apps/eraincart.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/eraincart.ico -------------------------------------------------------------------------------- /resources/apps/etracker.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/etracker.ico -------------------------------------------------------------------------------- /resources/apps/expressjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/expressjs.png -------------------------------------------------------------------------------- /resources/apps/getsimple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/getsimple.png -------------------------------------------------------------------------------- /resources/apps/humanstxt.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/humanstxt.ico -------------------------------------------------------------------------------- /resources/apps/jQuery_UI.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/jQuery_UI.ico -------------------------------------------------------------------------------- /resources/apps/knockback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/knockback.png -------------------------------------------------------------------------------- /resources/apps/modernizr.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/modernizr.ico -------------------------------------------------------------------------------- /resources/apps/mojomotor.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/mojomotor.ico -------------------------------------------------------------------------------- /resources/apps/newrelic.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/newrelic.ico -------------------------------------------------------------------------------- /resources/apps/opencart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/opencart.png -------------------------------------------------------------------------------- /resources/apps/prostores.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/prostores.ico -------------------------------------------------------------------------------- /resources/apps/reCaptcha.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/reCaptcha.ico -------------------------------------------------------------------------------- /resources/apps/sugarcrm.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/sugarcrm.ico -------------------------------------------------------------------------------- /resources/apps/tomatocms.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/tomatocms.ico -------------------------------------------------------------------------------- /resources/apps/uservoice.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/uservoice.ico -------------------------------------------------------------------------------- /resources/apps/vBulletin.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/vBulletin.ico -------------------------------------------------------------------------------- /resources/apps/volusion.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/volusion.ico -------------------------------------------------------------------------------- /resources/apps/ClanSphere.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/ClanSphere.png -------------------------------------------------------------------------------- /resources/apps/DotNetNuke.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/DotNetNuke.ico -------------------------------------------------------------------------------- /resources/apps/JaliosJCMS.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/JaliosJCMS.ico -------------------------------------------------------------------------------- /resources/apps/MovableType.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/MovableType.ico -------------------------------------------------------------------------------- /resources/apps/OpenLayers.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/OpenLayers.ico -------------------------------------------------------------------------------- /resources/apps/PHP-Fusion.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/PHP-Fusion.ico -------------------------------------------------------------------------------- /resources/apps/PrestaShop.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/PrestaShop.ico -------------------------------------------------------------------------------- /resources/apps/Serendipity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Serendipity.png -------------------------------------------------------------------------------- /resources/apps/SharePoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/SharePoint.png -------------------------------------------------------------------------------- /resources/apps/SilverStripe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/SilverStripe.png -------------------------------------------------------------------------------- /resources/apps/SiteCatalyst.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/SiteCatalyst.ico -------------------------------------------------------------------------------- /resources/apps/Sitefinity.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Sitefinity.ico -------------------------------------------------------------------------------- /resources/apps/TikiWikiCms.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/TikiWikiCms.ico -------------------------------------------------------------------------------- /resources/apps/Underscore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Underscore.png -------------------------------------------------------------------------------- /resources/apps/buysellads.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/buysellads.ico -------------------------------------------------------------------------------- /resources/apps/cappuccino.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/cappuccino.png -------------------------------------------------------------------------------- /resources/apps/coremetrics.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/coremetrics.ico -------------------------------------------------------------------------------- /resources/apps/handlebars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/handlebars.png -------------------------------------------------------------------------------- /resources/apps/kissmetrics.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/kissmetrics.ico -------------------------------------------------------------------------------- /resources/apps/marionette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/marionette.png -------------------------------------------------------------------------------- /resources/apps/osCommerce.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/osCommerce.ico -------------------------------------------------------------------------------- /resources/apps/shibboleth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/shibboleth.png -------------------------------------------------------------------------------- /resources/apps/squarespace.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/squarespace.ico -------------------------------------------------------------------------------- /resources/screenshot/shot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/screenshot/shot1.png -------------------------------------------------------------------------------- /resources/screenshot/shot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/screenshot/shot2.png -------------------------------------------------------------------------------- /resources/screenshot/shot3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/screenshot/shot3.png -------------------------------------------------------------------------------- /resources/apps/CMSMadeSimple.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/CMSMadeSimple.ico -------------------------------------------------------------------------------- /resources/apps/LiveStreetCms.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/LiveStreetCms.ico -------------------------------------------------------------------------------- /resources/apps/jQuery_Mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/jQuery_Mobile.png -------------------------------------------------------------------------------- /resources/apps/GetSatisfaction.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/GetSatisfaction.gif -------------------------------------------------------------------------------- /resources/apps/Google_Analytics.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/Google_Analytics.ico -------------------------------------------------------------------------------- /resources/apps/google-font-api.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/google-font-api.gif -------------------------------------------------------------------------------- /resources/apps/script.aculo.us.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/apps/script.aculo.us.ico -------------------------------------------------------------------------------- /resources/screenshot/small-tile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/screenshot/small-tile.png -------------------------------------------------------------------------------- /resources/extension/devtools.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/screenshot/large-screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nqbao/framework-inspector/HEAD/resources/screenshot/large-screenshot1.png -------------------------------------------------------------------------------- /src/constants.js: -------------------------------------------------------------------------------- 1 | export const EVENT_READY = 'ready'; 2 | export const META_TAG_NAME = 'framework-inspector'; 3 | export const META_TAG_ID = 'framework-inspector-meta'; 4 | -------------------------------------------------------------------------------- /resources/extension/framework_pane.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | 7 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "es2015" 4 | ], 5 | "plugins": [ 6 | ["transform-class-properties"], 7 | ["transform-react-jsx", { "pragma": "h" }] 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/devtools.js: -------------------------------------------------------------------------------- 1 | chrome.devtools.panels.create("Frameworks", 2 | "icon.png", 3 | "framework_pane.html", 4 | function(panel) { 5 | // code invoked on panel creation 6 | } 7 | ); 8 | -------------------------------------------------------------------------------- /src/common.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Framework Inspector 3 | * 4 | * Shared functions among scripts 5 | * 6 | * @author Bao Nguyen 7 | * @license GPLv3 8 | **/ 9 | 10 | // to be added ... -------------------------------------------------------------------------------- /resources/extension/background.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | -------------------------------------------------------------------------------- /resources/extension/popup.html: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 | 9 | 13 | -------------------------------------------------------------------------------- /src/helpers/devtools.js: -------------------------------------------------------------------------------- 1 | // useful tip from this article http://krasimirtsonev.com/blog/article/Chrome-extension-debugging-dev-tools-tab-or-how-to-make-console-log 2 | 3 | export function debug(payload) { 4 | chrome.runtime.sendMessage({ msg: "debug", payload }); 5 | } 6 | 7 | export function openTab(url) { 8 | chrome.runtime.sendMessage({ msg: "openTab", url }); 9 | } 10 | -------------------------------------------------------------------------------- /src/components/grid.js: -------------------------------------------------------------------------------- 1 | import { Component } from 'preact'; 2 | import AppIcon from './icon'; 3 | 4 | export default class Grid extends Component { 5 | render({ apps, openTab }, state) { 6 | 7 | return ( 8 |
9 | {Object.keys(apps).map( 10 | name => 11 | )} 12 |
13 | ); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /resources/apps/lodash.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/helpers/appInfo.js: -------------------------------------------------------------------------------- 1 | export function retriveAppInfo(tabId, callback) { 2 | chrome.extension.sendMessage({ msg: "get", tab: tabId }, callback); 3 | }; 4 | 5 | /** 6 | * Subscribe to app info 7 | */ 8 | export function subscribeAppInfo(tabId, callback) { 9 | const connection = chrome.runtime.connect({ 10 | name: `devtools-pane-${tabId}` 11 | }); 12 | 13 | // just relay message 14 | connection.onMessage.addListener(response => callback(response)); 15 | 16 | return connection; 17 | }; 18 | -------------------------------------------------------------------------------- /src/components/style.css: -------------------------------------------------------------------------------- 1 | body, table { 2 | font-size: 14px; 3 | } 4 | 5 | table { 6 | border-collapse: collapse; 7 | } 8 | 9 | img { 10 | display: inline-block; 11 | vertical-align: middle; 12 | } 13 | 14 | tr td, tr th { 15 | vertical-align: middle; 16 | text-align: left; 17 | border-bottom: 1px solid rgba(0, 0, 0, 0.1); 18 | padding: 6px 2px; 19 | } 20 | 21 | tr td * { 22 | vertical-align: middle; 23 | } 24 | 25 | tr:nth-child(even) td { 26 | background: #f9f9f9; 27 | } 28 | 29 | tr:last-child td { 30 | border-bottom: none; 31 | } 32 | -------------------------------------------------------------------------------- /src/framework_pane.js: -------------------------------------------------------------------------------- 1 | import { debug, openTab } from './helpers/devtools'; 2 | import { h, render } from 'preact'; 3 | import App from './components/app'; 4 | import { subscribeAppInfo } from './helpers/appInfo'; 5 | 6 | // assign global h so preact can work easily 7 | window.h = h; 8 | 9 | // wait for load event 10 | window.onload = () => { 11 | const rootDom = document.getElementById('root'); 12 | let root = render(, rootDom, root); 13 | 14 | const tabId = chrome.devtools.inspectedWindow.tabId; 15 | subscribeAppInfo(tabId, response => { 16 | root = render(, rootDom, root); 17 | }); 18 | }; 19 | -------------------------------------------------------------------------------- /src/components/icon.js: -------------------------------------------------------------------------------- 1 | import { Component } from 'preact'; 2 | 3 | export default class AppIcon extends Component { 4 | handleLinkClick = () => { 5 | this.props.openTab(this.props.url); 6 | }; 7 | 8 | render({ name, title, icon, url, openTab, size }, state) { 9 | const iconSize = size || 32; 10 | 11 | return ( 12 |
13 | 14 | {title 15 | 16 |
17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Framework Inspector 2 | 3 | Detect web frameworks, libraries and tools run on browsing website. 4 | 5 | This is a chrome extension will help web developer to inspect web framework, CMS, Libraries and Tools running on current browsing website. An icon will appear on address bar indicates the detected technologies. Currently, this extension can detect more than 100 popular CMS and tools, and more will be added in future releases. 6 | 7 | This extension originally named ChromeSniffer / AppSpector. 8 | 9 | ## How to test this extension 10 | 11 | Run `npm run build` to build the extension. It will result the built extension under `build` folder. Then you can follow this [link](https://developer.chrome.com/extensions/getstarted#unpacked) to load unpacked extension. 12 | 13 | You can also use `npm run build:watch` to tell the build tool to automatically build when there is new change from the source. 14 | -------------------------------------------------------------------------------- /src/components/app.js: -------------------------------------------------------------------------------- 1 | import { Component } from 'preact'; 2 | // import Grid from './grid'; 3 | import Table from './table'; 4 | import './style.css'; 5 | 6 | export default class App extends Component { 7 | render(props, state) { 8 | const apps = props.apps; 9 | const numApps = apps ? Object.keys(apps).length : 0; 10 | 11 | if (apps === null || apps === undefined) { 12 | return ( 13 |
14 | Analyzing ... 15 |
16 | ); 17 | } else if (numApps === 0) { 18 | return ( 19 |
20 | We are unable to detect any framework or tool on this site. 21 |
22 | ); 23 | } 24 | 25 | return ( 26 |
27 | We found {numApps > 1 ? `${numApps} frameworks or tools` : '1 framework or tool'} available on this site: 28 | 29 | 30 | ); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /resources/apps/google.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/extension/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Framework Inspector", 3 | "manifest_version": 2, 4 | "minimum_chrome_version": "10.0", 5 | "icons": { 6 | "48": "icon48.png", 7 | "128": "icon128.png" 8 | }, 9 | "version": "0.0.1", 10 | "description": "Detect web applications and javascript libraries run on browsing website.", 11 | "background": { 12 | "page": "background.html" 13 | }, 14 | "devtools_page": "devtools.html", 15 | "page_action": { 16 | "default_icon": "icon.png", 17 | "default_title": "Click for more details.", 18 | "default_popup": "popup.html" 19 | }, 20 | "content_scripts": [ 21 | { 22 | "matches": ["http://*/*","https://*/*"], 23 | "js": ["main.js"] 24 | } 25 | ], 26 | "permissions": [ 27 | "tabs", 28 | "webRequest", 29 | "http://*/*", 30 | "https://*/*" 31 | ], 32 | "web_accessible_resources": [ 33 | "detector.js" 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Framework Inspector 3 | * 4 | * Detect apps run on current page and send back to background page. 5 | * Some part of this script was refered from Wappalyzer Firefox Addon. 6 | * 7 | * @author Bao Nguyen 8 | * @license GPLv3 9 | **/ 10 | 11 | import { EVENT_READY, META_TAG_NAME, META_TAG_ID } from './constants'; 12 | 13 | const head = document.getElementsByTagName('head')[0]; 14 | 15 | if (head) { 16 | const script = document.createElement('script'); 17 | script.type = 'text/javascript'; 18 | script.src = chrome.extension.getURL('./detector.js'); 19 | 20 | const meta = document.createElement('meta'); 21 | meta.name = META_TAG_NAME; 22 | meta.id = META_TAG_ID; 23 | head.appendChild(meta); 24 | head.appendChild(script); 25 | 26 | // wait for ready event 27 | meta.addEventListener(EVENT_READY, function () { 28 | const apps = JSON.parse(meta.content); 29 | 30 | if (Object.keys(apps).length > 0) { 31 | chrome.extension.sendMessage({msg: "result", apps: apps}); 32 | } 33 | }); 34 | } 35 | -------------------------------------------------------------------------------- /resources/apps/facebook.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /src/components/table.js: -------------------------------------------------------------------------------- 1 | import { Component } from 'preact'; 2 | 3 | export default class AppTableList extends Component { 4 | renderRow = (name, { title, icon, version }) => { 5 | const fullTitle = title || name; 6 | 7 | return ( 8 | 9 | 13 | 16 | 17 | ) 18 | }; 19 | 20 | render({ apps }, state) { 21 | return ( 22 |
23 |
10 | {fullTitle} 11 |  {fullTitle} 12 | 14 | {version !== -1 ? version : '-'} 15 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | { 32 | Object.keys(apps).map(name => this.renderRow(name, apps[name])) 33 | } 34 | 35 |
NameVersion
36 |
37 | ); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | var CopyWebpackPlugin = require('copy-webpack-plugin'); 2 | 3 | module.exports = { 4 | entry: { 5 | main: "./src/main.js", 6 | detector: "./src/detector.js", 7 | background: "./src/background.js", 8 | popup: "./src/popup.js", 9 | devtools: "./src/devtools.js", 10 | framework_pane: "./src/framework_pane.js" 11 | }, 12 | devtool: 'source-map', 13 | module: { 14 | loaders: [ 15 | { 16 | test: /\.js$/, 17 | exclude: /node_modules/, 18 | loader: 'babel-loader' 19 | }, 20 | { 21 | test: /\.(png|jpg|jpeg)$/, 22 | loader: 'file-loader' 23 | }, 24 | { 25 | test: /\.css$/, 26 | loader: 'style-loader!css-loader' 27 | } 28 | ] 29 | }, 30 | output: { 31 | filename: '[name].js', 32 | path: './build' 33 | }, 34 | plugins: [ 35 | new CopyWebpackPlugin([ 36 | { from: './resources/*.png', to: './', flatten: true }, 37 | { from: './resources/extension/**', to: './', flatten: true }, 38 | { from: './resources/apps/**', to: './apps', flatten: true }, 39 | ]) 40 | ] 41 | }; 42 | -------------------------------------------------------------------------------- /src/detector/cssClass.js: -------------------------------------------------------------------------------- 1 | const rules = { 2 | 'Bootstrap': ['hero-unit', '.carousel-control', '[class^="icon-"]:last-child'] 3 | }; 4 | 5 | /** 6 | * Detect based on defined css classes 7 | */ 8 | export default function detectByCssClass(doc, _apps) { 9 | for (let t in rules) { 10 | if (t in _apps) continue; 11 | 12 | let found = true; 13 | for (let css in rules[t]) { 14 | let act = false; 15 | const name = rules[t][css]; 16 | 17 | /* Iterate through all registered css classes and check for presence */ 18 | for (let cssFile in document.styleSheets) { 19 | for (let cssRule in document.styleSheets[cssFile].cssRules) { 20 | const style = document.styleSheets[cssFile].cssRules[cssRule]; 21 | 22 | if (style && style.selectorText && style.selectorText.indexOf(name) !== -1) { 23 | act = true; 24 | break; 25 | } 26 | } 27 | if (act === true) break; 28 | } 29 | 30 | found = found & act; 31 | } 32 | 33 | if (found === true) { 34 | _apps[t] = -1; 35 | } else { 36 | break; 37 | } 38 | } 39 | 40 | return _apps; 41 | } 42 | -------------------------------------------------------------------------------- /src/detector/header.js: -------------------------------------------------------------------------------- 1 | const knownHeaders = { 2 | 'x-powered-by': { 3 | // 'Ruby on Rails': /Phusion Passenger/, 4 | 'Express.js': /Express/, 5 | 'PHP': /PHP\/?(.*)/, 6 | 'Dinkly': /DINKLY\/?(.*)/, 7 | 'ASP.NET': /ASP\.NET/, 8 | 'Nette': /Nette Framework/ 9 | }, 10 | 'server': { 11 | 'Apache': /Apache\/?(.*)/, 12 | 'nginx': /nginx\/?(.*)/, 13 | 'IIS': /Microsoft-IIS\/?(.*)/ 14 | }, 15 | 'via': { 16 | 'Varnish': /(.*) varnish/ 17 | } 18 | }; 19 | 20 | // Scans through the headers finding matches, and returning the val from appinfo (apps.js) 21 | export default function detectByHeader(headers) { 22 | const appsFound = []; 23 | 24 | // loop through all the headers received 25 | for (var i = headers.length - 1; i >= 0; i--) { 26 | var apps = knownHeaders[headers[i].name.toLowerCase()]; 27 | if (!apps) { 28 | continue; 29 | } 30 | 31 | for (var app in apps) { 32 | const matches = headers[i].value.match(apps[app]); 33 | if (matches) { 34 | const version = matches[1] || -1; 35 | appsFound[app] = version; 36 | } 37 | } 38 | } 39 | 40 | return appsFound; 41 | }; 42 | -------------------------------------------------------------------------------- /src/detector.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Framework Inspector 3 | * 4 | * Detect apps run on current page and send back to background page. 5 | * Some part of this script was refered from Wappalyzer Firefox Addon. 6 | * 7 | * @author Bao Nguyen 8 | * @license GPLv3 9 | **/ 10 | import { EVENT_READY, META_TAG_ID } from './constants'; 11 | import detectByMetaTag from './detector/metaTag'; 12 | import detectByScriptTag from './detector/scriptTag'; 13 | import detectByHtmlContent from './detector/htmlContent'; 14 | import detectByJavascript from './detector/javascript'; 15 | import detectByCssClass from './detector/cssClass'; 16 | 17 | let _apps = {}; 18 | const doc = document.documentElement; 19 | 20 | // run all the steps! 21 | [ 22 | detectByJavascript, 23 | detectByMetaTag, 24 | detectByScriptTag, 25 | detectByCssClass, 26 | detectByHtmlContent 27 | ].forEach(fn => { 28 | _apps = fn(doc, _apps); 29 | }); 30 | 31 | // send back to background page 32 | const meta = document.getElementById(META_TAG_ID); 33 | meta.content = JSON.stringify(_apps); 34 | 35 | // notify Background Page 36 | const done = document.createEvent('Event'); 37 | done.initEvent(EVENT_READY, true, true); 38 | meta.dispatchEvent(done); 39 | -------------------------------------------------------------------------------- /resources/apps/angular.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "framework-inspector", 3 | "version": "1.0.0", 4 | "description": "Detect web applications and javascript libraries run on browsing website.", 5 | "main": "main.js", 6 | "scripts": { 7 | "build": "webpack --config webpack.config.js", 8 | "build:watch": "webpack --config webpack.config.js --watch", 9 | "package": "npm run build && rm -f framework-inspector.zip && zip framework-inspector.zip -r . -x '.git/*' -x './src/*' -x './node_modules/*'", 10 | "test": "echo \"Error: no test specified\" && exit 1" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git+https://github.com/nqbao/framework-inspector.git" 15 | }, 16 | "author": "Bao Nguyen ", 17 | "license": "GPLv3", 18 | "bugs": { 19 | "url": "https://github.com/nqbao/framework-inspector/issues" 20 | }, 21 | "homepage": "https://github.com/nqbao/framework-inspector", 22 | "dependencies": { 23 | "preact": "^7.2.1" 24 | }, 25 | "devDependencies": { 26 | "js-yaml": ">=3.13.1", 27 | "babel-core": "^6.26.3", 28 | "babel-loader": "^6.4.1", 29 | "babel-plugin-syntax-flow": "^6.18.0", 30 | "babel-plugin-syntax-jsx": "^6.18.0", 31 | "babel-plugin-transform-class-properties": "^6.24.1", 32 | "babel-plugin-transform-react-jsx": "^6.24.1", 33 | "babel-preset-es2015": "^6.24.1", 34 | "copy-webpack-plugin": "^4.6.0", 35 | "css-loader": "^0.26.4", 36 | "file-loader": "^0.9.0", 37 | "style-loader": "^0.13.2", 38 | "webpack": "2.2.0-rc.3" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /resources/apps/Backbone.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/popup.js: -------------------------------------------------------------------------------- 1 | import { retriveAppInfo } from './helpers/appInfo'; 2 | 3 | const bg = chrome.extension.getBackgroundPage(); 4 | 5 | chrome.tabs.getSelected(null, function(tab){ 6 | retriveAppInfo(tab.id, function(response) { 7 | const display = document.getElementById('app_list'); 8 | const apps = response && response.apps ? response.apps : {}; 9 | const appinfo = bg.appinfo; 10 | let count = 0; 11 | 12 | for (let appid in apps) { 13 | const app = appinfo[appid] ? appinfo[appid] : {}; 14 | let title = app.title || appid; 15 | 16 | // i'm lazy to fill all kind of the information :( 17 | if (!app.url) app.url = appinfo[''].url.replace('%s',appid); // it's google url 18 | if (!app.icon) app.icon = appinfo[''].icon; 19 | 20 | if( apps[appid] != "-1") { 21 | title = title + ' ' + apps[appid] 22 | } 23 | 24 | // use DOM to avoid error 25 | const link = document.createElement('a'); 26 | 27 | link.target = "_blank"; 28 | link.title = title; 29 | link.href = app.url; 30 | 31 | const icon = document.createElement('img'); 32 | icon.alt = title; 33 | icon.width = 16; 34 | icon.height = 16; 35 | icon.src = "apps/" + app.icon; 36 | 37 | link.appendChild(icon); 38 | display.appendChild(link); 39 | 40 | count++; 41 | } 42 | 43 | // correct the width for better view 44 | if (count < 8) { 45 | display.style.width = (count*20) + "px"; 46 | } else { 47 | display.style.width = "160px"; 48 | } 49 | }); 50 | }); 51 | -------------------------------------------------------------------------------- /resources/apps/Wordpress.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/detector/htmlContent.js: -------------------------------------------------------------------------------- 1 | const rules = { 2 | 'SMF': /