Ao codificar em Python um download de uma URL que o CloudFlare CDN faz cache é necessário informar um “User Agent” e ter suporte à SSLv3, caso contrário você obterá um arquivo com o nome do que requisitou mas que é um HTML com os dizeres:

Error 1010 Ray ID: 29xxxxxxxxxed • 2016-05-08 19:20:51 UTC

Access denied

What happened?

The owner of this website (website.domain.org) has banned your access based on your browser’s signature (xxxxxxxxxxxxxxxx-ua47).

Realizei testes com urllib, urllib2, urllib3 e requests (que usa urllib), com todos ocorreram situações que ou envolveram instalar pacotes demais ou não havia bom suporte à SSLv3.

A solução foi utilizar o PyCurl, que se você usa Tornado e consome alguma API com seu cliente HTTP assíncrono provavelmente já terá instalado no seu ambiente (ou virtualenv).
Segue o código de exemplo:

[code language=”python”] import pycurl

with open(‘testimage.jpg’, ‘wb’) as f:
c = pycurl.Curl()
c.setopt(pycurl.USERAGENT, ‘Mozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)’)
c.setopt(c.URL,’https://website-in-cloudflare-cdn.domain.extension/imagex.jpg’)
c.setopt(c.WRITEDATA, f)
c.perform()
c.close()[/code]

Depois de resolver com o código acima eu encontrei (aqui) onde desativar a checagem de integridade de navegador no CloudFlare (útil para quem é administrador do site):
Settings->CloudFlare Settings->Browser Integrity Check->Toggle Off.