[python] MS Windows, ISA, urllib a proxy autentizace?

Petr Prikryl PrikrylP na skil.cz
Úterý Červen 20 12:16:36 CEST 2006


Dík aspoň za potvrzení, že jsem na dobré stopě, ale...

Martin Blazik
> mozna by stalo za to, se na tu stranku prece jen podivat :)
> Je tam primo priklad na to co potrebujes.
> http://docs.python.org/lib/urllib2-examples.html
> Jinak ja pouzivam nasledujici kod, ale to je bez autentifikace.
> 
> import urllib2
> 
> def download(proxy, url, postData = ''):
> 	proxyHandler = urllib2.ProxyHandler({'http': proxy})
> 	opener = urllib2.build_opener(proxyHandler)
> 	if postData:
> 		f = opener.open(url, postData)
> 	else:
> 		f = opener.open(url)
> 	data = f.read()
> 	return data

... tohle jsem právě zkoušel v následující podobě (skutečná
jména a hesla zaměněna):

=============================================================
import urllib2

proxy_handler = urllib2.ProxyHandler({'http': 'http://mujserver1:8080/'})
proxy_auth_handler = urllib2.HTTPBasicAuthHandler()
proxy_auth_handler.add_password('DOMENA', 'mujserver2', 'jmeno', 'heslo')

opener = urllib2.build_opener(proxy_handler, proxy_auth_handler)
f = opener.open('http://www.py.cz/')
s = f.read()
f.close()

print s
=============================================================

Hlásí mi to tohle:

C:\tmp>python tst4.py
Traceback (most recent call last):
  File "tst4.py", line 8, in ?
    f = opener.open('http://www.py.cz/')
  File "C:\Python24\lib\urllib2.py", line 364, in open
    response = meth(req, response)
  File "C:\Python24\lib\urllib2.py", line 471, in http_response
    response = self.parent.error(
  File "C:\Python24\lib\urllib2.py", line 402, in error
    return self._call_chain(*args)
  File "C:\Python24\lib\urllib2.py", line 337, in _call_chain
    result = func(*args)
  File "C:\Python24\lib\urllib2.py", line 480, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 407: Proxy Authentication Required ( The ISA Serve
r requires authorization to fulfill the request. Access to the Web Proxy service
 is denied.  )

Zjevně buď nestačí urllib2.HTTPBasicAuthHandler() nebo nějak špatně
zadávám parametry. Překládám si 'realm' správně jako doménu
(takovou tu windowsovskou)?

proxy_auth_handler = urllib2.HTTPBasicAuthHandler()
proxy_auth_handler.add_password('realm', 'host', 'username', 'password')

pepr


Další informace o konferenci Python