problem using http proxy with urllib.py and urllib2.py

Raymond Yee yee at uclink.berkeley.edu
Sun Mar 12 01:48:59 CET 2000


I'm having problems with using python with a proxy server.  (In my case,
my proxy server is another PC on the other end of a WebGear Aviator Pro
wireless connection -- and the proxy server software is WinProxy 2.1 by
Ositis.) I'm running Python 1.52 for Win32 on Win98; PythonWin build
128).

For example, if I run the following code (which is based on urllib
looking in the environment variable for proxy servers -- see
http://x42.deja.com/getdoc.xp?AN=581031376 ):

import os os.environ['http_proxy'] = "http://192.168.247.2:80"

import urllib u = urllib.urlopen("http://www.yahoo.com") print
u.info() print u.read()

I get the following output:

Proxy-agent: Ositis-WinProxy for WebGear Connection: close Pragma:
no-cache Cache-Control: no-cache Content-Type: text/html
Content-Encoding: 7bit Content-Length: 161

<HEAD><TITLE>403 Forbidden</TITLE></HEAD> <BODY><H1>403
Forbidden</H1> <P>The request was not properly formatted.  A
possible security risk detected.</P> </BODY>

I know that a module urllib2.py
(http://the-tech.mit.edu/~jeremy/python/urllib2.py) has been
written to deal with a number of problems in urllib.py.  When I run the
same code (replacing references to urllib replaced by urllib2, I get the
following error:

Traceback (innermost last):
  File "D:\Apps\Python\Pythonwin\pywin\framework\scriptutils.py", line
310, in RunScript
    exec codeObject in __main__.__dict__
  File "C:\WINDOWS\Desktop\try.py", line 5, in ?
    u = urllib2.urlopen("http://www.yahoo.com")
  File "D:\Apps\Python\Lib\urllib2.py", line 137, in urlopen
    return _opener.open(url, data)
  File "D:\Apps\Python\Lib\urllib2.py", line 321, in open
    '_open', req)
  File "D:\Apps\Python\Lib\urllib2.py", line 300, in _call_chain
    result = apply(func, args)
  File "D:\Apps\Python\Lib\urllib2.py", line 735, in http_open
    return self.parent.error('http', req, fp, code, msg, hdrs)
  File "D:\Apps\Python\Lib\urllib2.py", line 347, in error
    return apply(self._call_chain, args)
  File "D:\Apps\Python\Lib\urllib2.py", line 300, in _call_chain
    result = apply(func, args)
  File "D:\Apps\Python\Lib\urllib2.py", line 426, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 403: Forbidden


What am I doing wrong?  I know that the proxy server works -- I have no
problems using either Netscape or IE with the proxy server set to
192.168.247.2.  Moreover, the following Perl program works:

use LWP::UserAgent;

 $ua = new LWP::UserAgent;
 $ua->proxy(['http'] => 'http://192.168.247.2:80');

 $req = new HTTP::Request 'GET',"http://www.yahoo.com";;

 $res = $ua->request($req);
 print $res->content if $res->is_success;


Any insight would be much appreciated.

Thanks in advance from a Python newbie,

-Raymond Yee





More information about the Python-list mailing list