pythonurllib2

How do I prevent Python's urllib(2) from following a redirect


I am currently trying to log into a site using Python however the site seems to be sending a cookie and a redirect statement on the same page. Python seems to be following that redirect thus preventing me from reading the cookie send by the login page. How do I prevent Python's urllib (or urllib2) urlopen from following the redirect?


Solution

  • You could do a couple of things:

    1. Build your own HTTPRedirectHandler that intercepts each redirect
    2. Create an instance of HTTPCookieProcessor and install that opener so that you have access to the cookiejar.

    This is a quick little thing that shows both

    import urllib2
    
    #redirect_handler = urllib2.HTTPRedirectHandler()
    
    class MyHTTPRedirectHandler(urllib2.HTTPRedirectHandler):
        def http_error_302(self, req, fp, code, msg, headers):
            print "Cookie Manip Right Here"
            return urllib2.HTTPRedirectHandler.http_error_302(self, req, fp, code, msg, headers)
    
        http_error_301 = http_error_303 = http_error_307 = http_error_302
    
    cookieprocessor = urllib2.HTTPCookieProcessor()
    
    opener = urllib2.build_opener(MyHTTPRedirectHandler, cookieprocessor)
    urllib2.install_opener(opener)
    
    response =urllib2.urlopen("WHEREEVER")
    print response.read()
    
    print cookieprocessor.cookiejar