Singlefile Firefox



Extract Firefox Addon Source Code: This instructable will show you how to extract the source code from any Firefox addon. It requires nothing more than a ZIP extraction utility and a text editor if you choose to edit and repack the source.

  1. SingleFileZ is a fork of the SingleFile Firefox and Chrome extension with better file compression Want to save an entire web page for offline reference? There are add-ons which can help you, such as SingleFile, or its fork SingleFileZ.
  2. Hardening Firefox itself: you can take a look at this user.js that you can put in your profile folder: GitHub - pyllyukko/user.js: user.js - Firefox configuration hardening and searching the web for 'hardening firefox' will surely give some inspiration, it does for us:).
I should probably try this. I wonder how it will compare with what I'm doing:Singlefile

I simply use the browser's (Firefox) save page feature (ctl-s). Then every now and then, I convert the folder with these pages to a squashfs image (which de-duplicates all the CSS, JS, image files that are saved multiple times). I then use shell tools to search (ls grep locate etc.). This doesn't save the URL, but I also maintain a private 'bookmarks' Git repository for more interesting bits where each bookmarked resource gets its own file (in a descriptive hierarchy), along with thoughts and notes.

What works well is that I am somewhat selective, complete trash doesn't end up being archived, it's pretty space efficient. It's also simple to wade through (in the shell), each saving action is just a file and folder pair. Also often I use the reader mode Firefox feature, and then save that (i.e. I save what I saw, not what was delivered). What doesn't work so well is that saving the page is often a bit of a hassle, often Firefox reports save errors then I just ctl-s again to see if the previous attempt succeeded, if not, hit the reload icon in the download task list which apparently forces it. Also, that it saves embedded videos, haven't figured out yet how to disable that, so periodically I remove videos again. Also, when saving multiple pages from the same site, links to other pages don't go to the local mirror. (In cases where it's important, I use wget -m -k.)

The data URI scheme is a uniform resource identifier (URI) scheme that provides a way to include data in-line in Web pages as if they were external resources. It is a form of file literal or here document. This technique allows normally separate elements such as images and style sheets to be fetched in a single Hypertext Transfer Protocol (HTTP) request, which may be more efficient than multiple HTTP requests,[1] and used by several browser extensions to package images as well as other multimedia contents in a single HTML file for page saving.[2][3] As of 2021, data URIs are fully supported by most major browsers, and partially supported in Internet Explorer.[4]

Syntax[edit]

The syntax of data URIs was defined in Request for Comments (RFC) 2397, published in August 1998,[5] and follows the URI scheme syntax. A data URI consists of:

  • The scheme, data. It is followed by a colon (:).
  • An optional media type. The media type part may include one or more parameters, in the format attribute=value, separated by semicolons (;) . A common media type parameter is charset, specifying the character set of the media type, where the value is from the IANA list of character set names.[6] If one is not specified, the media type of the data URI is assumed to be text/plain;charset=US-ASCII.
  • An optional base64 extensionbase64, separated from the preceding part by a semicolon. When present, this indicates that the data content of the URI is binary data, encoded in ASCII format using the Base64 scheme for binary-to-text encoding. The base64 extension is distinguished from any media type parameters by virtue of not having a =value component and by coming after any media type parameters. Since Base64 encoded data is approximately 33% larger than original data, it is recommended to use Base64 data URIs only if the server supports HTTP compression or embedded files are smaller than 1KB.
  • The data, separated from the preceding part by a comma (,). The data is a sequence of zero or more octets represented as characters. The comma is required in a data URI, even when the data part has zero length. The characters permitted within the data part include ASCII upper and lowercase letters, digits, and many ASCII punctuation and special characters. Note that this may include characters, such as colon, semicolon, and comma which are delimiters in the URI components preceding the data part. Other octets must be percent-encoded. If the data is Base64-encoded, then the data part may contain only valid Base64 characters.[7] Note that Base64-encoded data: URIs use the standard Base64 character set (with '+' and '/' as characters 62 and 63) rather than the so-called 'URL-safe Base64' character set.

Examples of data URIs showing most of the features are:

data:text/vnd-example+xyz;foo=bar;base64,R0lGODdh
data:text/plain;charset=UTF-8;page=21,the%20data:1234,5678 (outputs: 'the data:1234,5678')

The minimal data URI is data:,, consisting of thescheme, no media-type, and zero-length data.

Thus, within the overall URI syntax, a data URI consists of a scheme and a path, with no authority part, query string, or fragment. The optional media type, the optional base64 indicator, and the data are all parts of theURI path.

Examples of use[edit]

HTML[edit]

An HTML fragment embedding a picture of a small red dot:

In this example, the lines are broken for formatting purposes. In actual URIs,including data URIs, control characters (ASCII 0 to 31, and 127) and spaces (ASCII 32) are 'excluded characters'. This means that whitespace characters are not permitted in data URIs. However, in the context of HTML 4 and HTML 5, linefeeds within an element attribute value (such as the 'src' above) are ignored[citation needed]. So the data URI above would be processed ignoring the linefeeds, giving the correct result. But note that this is an HTML feature, not a data URI feature, and in other contexts, it is not possible to rely on whitespace within the URI being ignored.

CSS[edit]

Firefox Singlefile Addon

A Cascading Style Sheets (CSS) rule that includes a background image:

In this example, the + <linefeed> line terminatorsare a feature of CSS, indicating continuation on the next line. These would be removed by the CSS stylesheet processor, and the data URI would be reconstituted without whitespace, making it correct, since whitespace is not allowed within the data component of a data:URI.

JavaScript[edit]

A JavaScript statement that opens an embedded subwindow, as for a footnote link:

SVG[edit]

Example of an SVG image with embedded JPEG images

A Scalable Vector Graphic image containing an embedded JPEG image encoded in Base64:

Malware and phishing[edit]

Singlefile Firefox Download

The data URI can be utilized to construct attack pages that attempt to obtain usernames and passwords from unsuspecting web users. It can also be used to get around cross-site scripting (XSS) restrictions, embedding the attack payload fully inside the address bar, and hosted via URL shortening services rather than needing a full website that is controlled by a third party.[8] As a result, some browsers now block webpages from navigating to data URIs.[9]

References[edit]

Singlefile Firefox Android

  1. ^'Using Data URIs to Speed Up Your Website'. Treehouse Blog. 27 March 2014.
  2. ^'SingleFile - Chrome Web Store'. Chrome Web Store. Retrieved 25 August 2018.
  3. ^'SingleFile – Add-ons for Firefox'. Firefox Add-ons. Retrieved 25 August 2018.
  4. ^Deveria, Alexis (July 2015). 'Can I use...' Retrieved 31 August 2015.
  5. ^Masinter, L (August 1998). 'RFC 2397 - The 'data' URL scheme'. Internet Engineering Task Force. Retrieved 2008-08-12.
  6. ^Freed, Ned; Dürst, Martin, eds. (20 December 2013). 'Character Sets'. Internet Assigned Numbers Authority. Retrieved 31 August 2015.
  7. ^Berners-Lee, Tim; Fielding, Roy; Masinter, Larry (January 2005). 'Uniform Resource Identifiers (URI): Generic Syntax'. Internet Engineering Task Force. Retrieved 31 August 2015.
  8. ^Phishing without a webpage – researcher reveals how a link itself can be malicious, Naked Security by Sophos, 31 AUG 2012 https://nakedsecurity.sophos.com/2012/08/31/phishing-without-a-webpage-researcher-reveals-how-a-link-itself-can-be-malicious/
  9. ^'Data URLs - HTTP | MDN'. MDN Web Docs. Mozilla. Retrieved 11 May 2018.
Retrieved from 'https://en.wikipedia.org/w/index.php?title=Data_URI_scheme&oldid=1018201985'