Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>The Firefox XPI format does not prevent you from simply extracting the contents of the plugin to examine the source code.</p> <p>While I cannot find a canonical public repository, it looks like someone has systematically downloaded and extracted all the available XPIs and created a GitHub repository out of them.</p> <p><a href="https://github.com/avian2/noscript">https://github.com/avian2/noscript</a></p> <p>If you'd like to do it yourself, XPI files are just standard ZIP files, so if you want to extract one yourself you can simply point an extraction program at it.</p> <p>Here's an example of doing that from the command line:</p> <pre><code>mkdir noscript_source cd noscript_source curl -LO https://addons.mozilla.org/firefox/downloads/file/219550/noscript_security_suite-2.6.6.8-fx+fn+sm.xpi unzip noscript_security_suite-2.6.6.8-fx+fn+sm.xpi </code></pre> <p>That yields a directory structure that looks like this:</p> <pre><code>. ├── GPL.txt ├── META-INF │ ├── manifest.mf │ ├── zigbert.rsa │ └── zigbert.sf ├── NoScript_License.txt ├── chrome │ └── noscript.jar ├── chrome.manifest ├── components │ └── noscriptService.js ├── defaults │ └── preferences │ └── noscript.js ├── install.rdf ├── mozilla.cfg └── noscript_security_suite-2.6.6.8-fx+fn+sm.xpi </code></pre> <p>Then the main code is located inside <code>chrome/noscript.jar</code>. You can extract that to get at the JavaScript that makes up the bulk of the plugin:</p> <pre><code>cd chrome/ unzip noscript.jar </code></pre> <p>Which will yield the main source tree:</p> <pre><code>. ├── content │ └── noscript │ ├── ABE.g │ ├── ABE.js │ ├── ABELexer.js │ ├── ABEParser.js │ ├── ASPIdiocy.js │ ├── ChannelReplacement.js │ ├── ClearClickHandler.js │ ├── ClearClickHandlerLegacy.js │ ├── Cookie.js │ ├── DNS.js │ ├── DOM.js │ ├── ExternalFilters.js │ ├── FlashIdiocy.js │ ├── HTTPS.js │ ├── Lang.js │ ├── NoScript_License.txt │ ├── PlacesPrefs.js │ ├── Plugins.js │ ├── Policy.js │ ├── Profiler.js │ ├── Removal.js │ ├── RequestWatchdog.js │ ├── STS.js │ ├── ScriptSurrogate.js │ ├── Strings.js │ ├── URIValidator.js │ ├── about.xul │ ├── antlr.js │ ├── clearClick.js │ ├── clearClick.xul │ ├── frameOptErr.xhtml │ ├── iaUI.js │ ├── noscript.js │ ├── noscript.xbl │ ├── noscriptBM.js │ ├── noscriptBMOverlay.xul │ ├── noscriptOptions.js │ ├── noscriptOptions.xul │ ├── noscriptOverlay.js │ ├── noscriptOverlay.xul │ ├── options-mobile.xul │ └── overlay-mobile.xul ├── locale └── skin </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload