POST with basic auth and cookie from python?

Michael Foord fuzzyman at
Sat Sep 4 12:12:21 CEST 2004

Dan Stromberg <strombrg at> wrote in message news:<pan.2004. at>...
> If I wanted to write a python script that performs basic auth, gets a
> cookie, and then does an http POST using the cookie for authentication,
> what would be the best python API to write to?
> Does someone already have example code that does something like this?
> Thanks.

Well... I know *part* of the solution ! I'm also struggling with http
authentiction from python. The cookie part is easy, ClientCookie (or
cookielib if you use Python 2.4) will automatically handle the cookies
for you.See
 for details of how to do that part.

I have also sussed out how to do basic authentication the first time
round (get an error code 401 from the server, repeat the request with
the username and password encoded into the header).

My test CGI at
has an example of how to do this.

req = reqfun(theurl, None, {'User-agent' : 'Mozilla/4.0 (compatible;
MSIE 5.5; Windows NT)'})
if data['name'] and data['pass']:
    import base64
    base64string = base64.encodestring('%s:%s' % (data['name'],
    req.add_header("Authorization", "Basic %s" % base64string)

(Which I took from another cookbook recipe I think).

After that it gets more complicated because that username/password is
valid for a whole 'realm' - and I've really struggled finding
documentation on http realms. I have the added problem that I'm doing
this all in a CGI - so any auth handlers I create aren't persistent
across consecutive page accesses - so I may need to save this
password/realm information between page accesses... yuck.

You might not have that problem and may be able to install an auth
handler with the realm information as part of your opener. If it's
really *just* the cookie providing authentication though you shouldn't
have a problem. In the meantime I've got a book on http on order from

Oh - if anyone can help on this it would be great !! What the heck is
a realm and how do they work !!



More information about the Python-list mailing list