Proxy Authentication??

jepler epler jepler.lnk at lnk.ispi.net
Sun Aug 20 10:45:09 EDT 2000


On Sun, 20 Aug 2000 21:37:11 +1000, Steven Adams
 <adams_s at lab.eng.usyd.edu.au> wrote:
>Hi all,
>
>does anyone know how to get a python script to deal with proxy servers that
>require authentication (username,password)?

Sorry to followup a second time, but here is the code I was thinking of.
Best of luck!

>From: jepler at inetnebr.com (Jeff Epler)
Subject: urllib.py patch: proxy authentication
Date: 27 Jan 2000 00:00:00 GMT
Message-ID: <slrn88vbmb.pl8.jepler at craie.inetnebr.com>
X-NNTP-Posting-Host: craie.housenet
X-Trace: news2.randori.com 948940498 206.131.194.26 (Wed, 26 Jan 2000 18:34:58 
PST)
Newsgroups: comp.lang.python

The following patch adds support for proxies like
        http_proxy=http://USER:PASS@host:port/
which would formerly confuse the urllib into giving a traceback about a
non-numeric port number. (the PASS at host:port portion)

This patch is probably not ready for inclusion as-is, because the CVS
version of python has a modified urllib that is too far distant for this
patch to apply.  (This is relative to 1.5.2)  If I get around to to
a patch that will apply to the CVS tree as well, I will submit this
patch again.

Other than that, I believe I have tried to live up to the standards asked
for in Python patches.

I confirm that, to the best of my knowledge and belief, this
contribution is free of any claims of third parties under
copyright, patent or other rights or interests ("claims").  To
the extent that I have any such claims, I hereby grant to CNRI a
nonexclusive, irrevocable, royalty-free, worldwide license to
reproduce, distribute, perform and/or display publicly, prepare
derivative versions, and otherwise use this contribution as part
of the Python software and its related documentation, or any
derivative versions thereof, at no cost to CNRI or its licensed
users, and to authorize others to do so.

I acknowledge that CNRI may, at its sole discretion, decide
whether or not to incorporate this contribution in the Python
software and its related documentation.  I further grant CNRI
permission to use my name and other identifying information
provided to CNRI by me for use in connection with the Python
software and its related documentation.


--- urllib.py.orig      Wed Jan 26 20:22:36 2000
+++ urllib.py   Wed Jan 26 20:25:06 2000
@@ -230,11 +230,13 @@
                 user_passwd, host = splituser(host)
                 host = unquote(host)
             realhost = host
+            proxy_passwd = None
         else:
             host, selector = url
             urltype, rest = splittype(selector)
             url = rest
             user_passwd = None
+            proxy_passwd, host = splituser(host)
             if string.lower(urltype) != 'http':
                 realhost = None
             else:
@@ -245,6 +247,11 @@
                     selector = "%s://%s%s" % (urltype, realhost, rest)
             #print "proxy via http:", host, selector
         if not host: raise IOError, ('http error', 'no host given')
+        if proxy_passwd:
+            import base64
+            pauth = string.strip(base64.encodestring(proxy_passwd))
+        else:
+            pauth = None
         if user_passwd:
             import base64
             auth = string.strip(base64.encodestring(user_passwd))
@@ -258,6 +265,7 @@
         else:
             h.putrequest('GET', selector)
         if auth: h.putheader('Authorization', 'Basic %s' % auth)
+        if auth: h.putheader('Proxy-Authorization', 'Basic %s' % pauth)
         if realhost: h.putheader('Host', realhost)
         for args in self.addheaders: apply(h.putheader, args)
         h.endheaders()



More information about the Python-list mailing list