Python HTTP digest authentication woes...

john n00spam-developer at yahoo.com
Sun Jul 17 02:33:56 EDT 2005


I'm trying to access the XML version of my Tivo now playing list with 
python. It uses auth digest HTTP authentication. I could really use 
some help!

I'm able to get this page using curl:
curl --dump-header tivoHeaders --insecure --anyauth --user tivo:8000008 
"https://192.168.1.102/TiVoConnect?Command=QueryContainer&Container=%2FNowPlaying&Recurse=Yes"

But 

when I use my python script, I get rejected:
https://192.168.1.102/TiVoConnect?Container=%2FNowPlaying&Command=QueryContainer&Recurse=Yes
Error 

401
Server: tivo-httpd-1:7.1b-01-2:140
Set-Cookie: sid=DEC2D78EABF48A6D; path=/; expires="Saturday, 
16-Feb-2013 00:00:00 GMT";
WWW-Authenticate: Digest realm="TiVo DVR", nonce="FD08EF226909CA85", qop="auth"
Content-Length: 31
Content-Type: text/html
Connection: close

Digest realm="TiVo DVR", nonce="FD08EF226909CA85", qop="auth"

I've scrounged for examples out there and the couple that I've found 
just don't seem to work for me..

Here's one way I've tried:
=====================================
import urllib2

theurl = 
"192.168.1.102/TiVoConnect?Container=%2FNowPlaying&Command=QueryContainer&Recurse=Yes"
print 

theurl

protocol = 'https://'
username = 'tivo'
password = '8000008'

passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, theurl, username, password)
authhandler = urllib2.HTTPDigestAuthHandler(passman)
opener = urllib2.build_opener(authhandler)
urllib2.install_opener(opener)
try:
pagehandle = urllib2.urlopen(protocol + theurl)
except IOError, e:
if hasattr(e, 'code'):
if e.code != 401:
print 'We got another error'
print e.code
else:
print "Error 401"
print e.headers
print e.headers['www-authenticate']
=======================================

I get 401 every time!
This was taken from an example online almost verbatim, the only major 
thing I changed was HTTPBasicAuthHandler --> HTTPDigestAuthHandler. Any 
ideas or help would be greatly appreciated!

Thanks,
-John




More information about the Python-list mailing list