[Tutor] urllib2 with a proxy

kbond kbond at free.fr
Sat Nov 6 20:59:17 CET 2004


Thank you for your help kent.
Already the second time that you are helping me.
In fact I face this proxy trouble right after your first answer I was 
about to try your suggestion to solve the clientForm trouble when this 
proxy came into the danse.  :-)

When I started my project I was far to imagine that talking to the world 
wide web was that difficult by script.
Unfortunatly I will not be able to test before monday because I do not 
use a proxy at home.
Do you have an idea of what are realm and  host in the add_password() 
method?
I am making the assomption that host stand for the host I want to 
contact but I do not have any idea of what realm is?
Do you know how I can get it? Why firefox don't need this information to 
go out?

You will find below the code I will try on monday.
Thank you for your help

*Code*
import urllib2
# set up authentication info
authinfo = urllib2.HTTPBasicAuthHandler()
#add_password('realm', 'host', 'username', 'password')
authinfo.add_password(None, "http://google.com", 'userName', 'pwd')
proxy_support = urllib2.ProxyHandler({"http" : "http//:proxy:8080"})
# build a new opener that adds authentication and caching FTP handlers
opener = urllib2.build_opener(proxy_support, 
authinfo,urllib2.CacheFTPHandler())
# install it
urllib2.install_opener(opener)
f = urllib2.urlopen('http://google.com')
buf = f.read()
print buf
f.close()

Kent Johnson wrote:

> I'm not familiar with this library but looking at your code and the 
> docs I can make some guesses where the problem might be:
> - The second argument to ProxyHandler should be a complete URL, e.g. 
> 'http://proxy:8080'. This is the cause of the exception you are seeing.
> - Try using a HTTPBasicAuthHandler instead of a HTTPDigestAuthHandler 
> unless you are sure your proxy uses digest authentication
> - You should pass an instance of CacheFTPHandler to build_opener, not 
> the class itself. In other words, pass CacheFTPHandler() with 
> parentheses.
>
> HTH
> Kent
>
> At 10:56 AM 11/6/2004 -0500, kbond wrote:
>
>> hello,
>>
>> I am trying to get access an internet page  using urllib2. I am able 
>> to do so form home where I do not have proxy but for some reason I am 
>> unable to do it form my company.
>>
>> I found many ressource on the internet explaining how to do it but I 
>> was unable to apply it to my contexte. The interesting thing is that 
>> I did manage to configure Firefox (my fovourite browser) so I guess  
>> I should have all the information to do it by script.
>> I think I am doing something is the usage of "add_password". Could 
>> you please explain me what realm and host are? and how can I get them?
>>
>> You will find bellow my firefox configuration.
>> It would be great If someone can help me to put all this together.
>> Thank you for your help
>>
>> *Code*
>> import urllib2
>> # set up authentication info
>> authinfo = urllib2.HTTPDigestAuthHandler()
>> #proxy_auth_handler.add_password('realm', 'host', 'username', 
>> 'password')
>> authinfo.add_password(None, "http://google.com", 'userName', 'pwd')  * *
>> proxy_support = urllib2.ProxyHandler({"http" : "proxy:8080"})
>> # build a new opener that adds authentication and caching FTP handlers
>> opener = urllib2.build_opener(proxy_support, 
>> authinfo,urllib2.CacheFTPHandler)
>> # install it
>> urllib2.install_opener(opener)
>> f = urllib2.urlopen('http://google.com')
>> buf = f.read()
>> print buf
>> f.close()
>>
>> *Error Message*
>>
>> Traceback (most recent call last):
>>  File "test.py", line 18, in ?
>>    f = urllib2.urlopen('http://google.com')
>>  File "E:\users\install\Python\lib\urllib2.py", line 129, in urlopen
>>    return _opener.open(url, data)
>>  File "E:\users\install\Python\lib\urllib2.py", line 326, in open
>>    '_open', req)
>>  File "E:\users\install\Python\lib\urllib2.py", line 306, in _call_chain
>>    result = func(*args)
>>  File "E:\users\install\Python\lib\urllib2.py", line 491, in <lambda>
>>    lambda r, proxy=url, type=type, meth=self.proxy_open: \
>>  File "E:\users\install\Python\lib\urllib2.py", line 498, in proxy_open
>>    if '@' in host:
>> TypeError: iterable argument required
>>
>> *Firefox configuration*
>>
>>
>> _______________________________________________
>> Tutor maillist  -  Tutor at python.org
>> http://mail.python.org/mailman/listinfo/tutor
>
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
>



More information about the Tutor mailing list