Force SSL for Wikipedia (for advanced users)

May 22nd, 2010

I like using HTTPS whenever possible. Usually this is as simple as adding a single letter to a URL, but some sites have separate domains for SSL. The Wikimedia sites are a great example of this; they share the domain secure.wikimedia.org and use the first elements of the path to specify the site.

Now, I could have set up a Greasemonkey script to redirect me once I hit an unsecure Wikipedia page, but then it's too late. (I'm usually going directly to the article via web search results.) I could also use Greasemonkey to rewrite URLs in web pages, but that's a mess. Instead, I wanted to intercept any requests to unsecure Wikipedia and redirect them on the fly, before they even left my machine. Here's how I set up my browser to always use SSL for Wikimedia sites:

  1. Have Apache with virtual hosts and Mozilla Firefox with FoxyProxy
  2. In my default virtual host:
    <Directory /var/www/>
    	RewriteEngine On
    	RewriteBase /
    	RewriteCond ${HTTP_HOST} !.*mycomputername.*
    	RewriteRule . rewriter.php [L]
    </Directory>
  3. And this file at /var/www/rewriter.php:
    <?php
    
    $host = $_SERVER['HTTP_HOST'];
    $path = $_SERVER['REQUEST_URI'];
    
    // ensure path is not of form http://...
    if(strpos($path, '/') !== 0) {
    	$start = "http://$host/";
    	if(strpos($path, $start) === 0) {
    		$path = substr($path, strlen($start) - 1); // include slash
    	} else {
    		die();
    	}
    }
    
    if(preg_match('/([a-z0-9]+)\.wikipedia\.org/', $host, $m_domain)) {
    	header("Location: https://secure.wikimedia.org/wikipedia/{$m_domain[1]}{$path}");
    	die();
    }
    
    ?>
  4. Then set up a proxy in FoxyProxy, early in the chain, called "rewriter". Set it to a SOCKS 5 proxy at localhost:80, using the whitelist regex http://[a-z]+\.wikipedia\.org/.*

Obviously, the setup as written here only gets Wikipedia, but it could easily be expanded to Wiktionary, Wikibooks, Wikimedia Commons, and other sister sites.

I'll delete any tech-support questions in the comments area, so don't ask them. This guide is for advanced users only. Discussions of potential improvements are welcome.

Bahamas trip: Day 11

July 1st, 2009

It is my last day in the Bahamas, for now. After breakfast I have just enough time to walk out to the North Point, where I hear tell there might be some San Salvador rock iguanas, a critically endangered subspecies. It seems that some of them may have swum across the harbor from the cay where the main local population lives. (I express an interest in taking closeup photos, and am warned that they may attempt to eat my camera...)

Read full entry »

Bahamas trip: Day 10

June 30th, 2009

In the morning, my dad picks up Mr. Forbes from his house and drives him back to GRC. Just as they arrive, the power cuts out, so Mr. Forbes can't sharpen his machete. Too bad, 'cause we're gonna be in the bush again today.

Read full entry »

Bahamas trip: Day 9

June 29th, 2009

My companions go off to interview Erma Pratt after breakfast, but I'm too tired from the previous night, so I stay in and catch up on photos, blogging, and communication with the outside world. It's a hard decision: Erma's grandmother Sophia was one of the last midwives on the island, and an amazing woman... but I'm exhausted.

Read full entry »

Bahamas trip: Day 8

June 28th, 2009

Another interview this morning! Mary Allen invites us to breakfast on her balcony, heaping our plates with potatoes, omelette, and buttered toast. After breakfast, my dad and Kathleen follow her inside to conduct the interview (and afterwards attend a church service), while I wander on the beach. The beach is half sand, half exceedingly sharp karst limestone. I see thousands of nerites and hundreds of little hermit crabs, some lovely (empty) conch shells, and a couple of tide pool fish.

Read full entry »