[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