Image courtesy of Open Clip Art Library |
I checked if there's a plugin for that and it seems there is. You can install Remove Google Redirects from Chrome Web Store. Being a paranoid weirdo like I am that still wasn't enough. I already had a Squid proxy that I had configured to make it so that you couldn't even know that some websites were blocked by my ISP(Sonera). It made sense to try and figure out if there was a trick that I could do with squid that allows me to get rid of the middle man(Google) in the redirect process.
And behold for the creators of Squid have indeed been so wise as to add a way to mangle the urls. All I had to do was to write a script that takes the url, checks if it's a google redirect url and if so, parses the url to get the actual url where we want to go and return that. The example on Squid feature page was a good place to start and this is what I came up with:
Perl Version
#!/usr/bin/perl
use URI;
use URI::QueryParam;
$|=1;
while (<>) {
chomp;
@X = split;
$url = $X[1];
#check if this is a google redirect url
if ($url =~ /\/\/.*\.google\.[^\/]+\/url/) {
my $uri = URI->new($url);
$url = $uri->query_param("url");
print $X[0]." 302:$url\n";
} else {
print $X[0]." \n";
}
}
PHP Version
#!/usr/bin/php
<?php
function convertUrlQuery($query) {
$queryParts = explode('&', $query);
$params = array();
foreach ($queryParts as $param) {
$item = explode('=', $param);
$params[$item[0]] = $item[1];
}
return $params;
}
while(1){
$line = trim(fgets(STDIN)); // reads one line from STDIN
$params = explode(" ", $line);
$pattern = '/\/\/.*\.google\.[^\/]+\/url/';
if (preg_match($pattern, $params[1], $matches, PREG_OFFSET_CAPTURE, 3)) {
$parts = parse_url($params[1]);
$query = convertUrlQuery($parts['query']);
$url = urldecode($query['url']);
echo $params[0]." 302:$url\n";
} else {
echo $params[0]." \n";
}
}
In the end I like that with Perl I didn't have to write any functions for simple things like url parsing, but unless I package this as an installable package I could not just drop it in and expect it to work since I had to install the extra stuff as modules.(Yes I could have written my own implementation, but I'm not that much into reinventing the wheel. Also I was a bit impatient to get the script ready so I could see the results) With the PHP version I could just drop it in and as long as I had PHP installed it would work.
I strongly recommend adding a line in squid.conf It really makes a difference.
url_rewrite_program /path/to/googleredirectrewriter
No comments:
Post a Comment