It seems that Google is performing a redirection based on the User-Agent in your request. So if you include a real User-Agent - something copied from a real web browser - the request should work correctly.
Here is some example php code that works for me:
$location = 'http://www.google.com/searchbyimage?image_url=https://www.google.com/images/nav_logo117.png';
do {
$ch = curl_init($location);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.0; rv:20.0) Gecko/20100101 Firefox/20.0');
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = str_replace("\r\n","\n",$data);
list($headers, $data) = explode("\n\n", $data, 2);
$headers = explode("\n",$headers);
$location = null;
foreach ($headers as $header)
if (stripos($header, 'Location:', 0) === 0)
$location = trim(substr($header,9));
} while ($http_code == 302 && $location != null);
echo $data;