urllib2 выполняет прозрачное перенаправление, но, как вы сказали, вы можете создать подкласс HTTPRedirectHandler и использовать его в качестве средства открытия для получения необходимых значений.
import urllib2
class SmartRedirectHandler(urllib2.HTTPRedirectHandler):
def http_error_302(self, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_302(self, req, fp,
code, msg,
headers)
result.status = code
result.headers = headers
return result
request = urllib2.Request("http://wp.me")
opener = urllib2.build_opener(SmartRedirectHandler())
obj = opener.open(request)
print 'The original headers where', obj.headers
print 'The Redirect Code was', obj.status
Любые дополнительные атрибуты, которые вы можете установить для своего запроса вSmartRedirectHandler, может быть сделан доступным для вас через результат.