469,568 Members | 1,439 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,568 developers. It's quick & easy.

Python HTTP digest authentication woes...

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=%2FNo wPlaying&Recurse=Yes"

But

when I use my python script, I get rejected:
https://192.168.1.102/TiVoConnect?Co...er&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=QueryC ontainer&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

Jul 21 '05 #1
2 7167
I hacked this a little bit and it seems to do the trick.
import urllib2

theurl =
"192.168.0.25/TiVoConnect?Container=%2FNowPlaying&Command=QueryC ontainer&Recurse=Yes"
print theurl

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

authhandler = urllib2.HTTPDigestAuthHandler()
authhandler.add_password("TiVo DVR",
"192.168.0.25", username, password)
opener = urllib2.build_opener(authhandler)
urllib2.install_opener(opener)
try:
pagehandle = urllib2.urlopen(protocol + theurl)
print pagehandle.readlines()
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']
Cheers

Dave

Aug 8 '05 #2

john wrote:
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=%2FNo wPlaying&Recurse=Yes"

But

when I use my python script, I get rejected:
https://192.168.1.102/TiVoConnect?Co...er&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=QueryC ontainer&Recurse=Yes"
print


Oh yeah - I didn't spot this before....

theurl =
"192.168.1.102/TiVoConnect?Con*tainer=%2FNowPlaying&Command=Q*uer yContainer&Recurse=Yes"
this includes the parameters - which it shouldn't.

:-)

Fuzzy
http://www.voidspace.org.uk/python

Aug 8 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

reply views Thread by Emile van Sebille | last post: by
1 post views Thread by David Mertz, Ph.D. | last post: by
13 posts views Thread by Brad Tilley | last post: by
3 posts views Thread by John Reese | last post: by
2 posts views Thread by trapeze.jsg | last post: by
13 posts views Thread by BartlebyScrivener | last post: by
reply views Thread by suresh191 | last post: by
4 posts views Thread by guiromero | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.