Python の urllib.urlopen や urllib.urlretrieve で URL にアクセすると、FancyURLopener オブジェクトが生成されて、これが目的の URL にアクセスする。ユーザーエージェントの値もこの FancyURLopener オブジェクトが持っている。なので、これを変えてやればいい。次のように FancyURLopener のサブクラスを作ってユーザーエージェントの値を設定し、urllib._urlopenr に代入してやればいい。
class Myopener(urllib.FancyURLopener): version = "Mozilla" urllib._urlopener = Myopener()
これで、urllib のデフォルトでは跳ね返されてしまう URL にもアクセスできるようになる。
参考ページ:
cf. http://docs.python.jp/2/library/urllib.html#urllib._urlopener