How Instapaper works.
Marco Arment on how Instapaper works:
The bookmarklet has a mechanism to save pages from sites that require logins for full content, such as the Wall Street Journal and Harper’s, by sending a copy of the page’s HTML from the customer’s browser to the server. It’s like automating the “Save as…” menu item: if you have your own account for these sites and can see the page in your browser, you can save it to Instapaper.
The way it does this is ridiculous: instead of calling a simple GET request to save the page, since an entire page’s contents would quickly overrun any URL-length limits in the stack, it injects a FORM with a POST action and populates a hidden value with the page contents.
But form-data requests from browsers aren’t Gzip-compressed, so the resulting data is huge and needs to be sent over people’s (often slow, often mobile) upstream connections. So I found an open-source DEFLATE implementation in Javascript—really—and the bookmarklet compresses the page data right there in the browser before sending it.
The whole procedure is hideously complex, but works incredibly well.
I love it. That’s just the sort of hack-y stuff that I write but usually don’t admit. Maybe I should start writing about the weird code I cobble together to run my various sites.
If you’re not using Instapaper, you must. It justifies the existence of the iPad. It’s completely changed how I read long-form writing.

5 Comments