2.7.x-Serie. Wenn die Basisauthentifizierung angewendet wird, wenn der http-Proxy mit urllib2 durchlaufen wird.
client => proxy => target
↑ Hier
Dies ist in Ordnung, wenn Sie die Referenz oder die Referenz imitieren, die beim normalen Google herauskommt.
#!/usr/bin/env python
import urllib2
proxy = urllib2.ProxyHandler({
'http': 'http://username:password@proxy:8080'
})
auth = urllib2.HTTPBasicAuthHandler()
opener = urllib2.build_opener(proxy, auth)
urllib2.install_opener(opener)
conn = urllib2.urlopen('http://target/')
print conn.read()
Dadurch wird der Header "Proxy-Authorization" hinzugefügt.
client => proxy => target
↑ Hier
In diesem Fall müssen Sie den Header "Authorization" anstelle des Headers "Proxy-Authorization" hinzufügen. Unabhängig davon, wie viel ich gesucht und versucht habe, ist die Methode mit Handler nicht herausgekommen Es kann nicht geholfen werden, also habe ich es geschafft, es zu lösen, indem ich den Header manuell berechnet und hinzugefügt habe.
#!/usr/bin/env python
import urllib2
import base64
proxy = urllib2.ProxyHandler({
'http':'http://proxy:8080'
})
opener = urllib2.build_opener(proxy)
base64string = base64.encodestring('%s:%s' % ("username", "password"))
opener.addheaders = [ ("Authorization", "Basic %s" % base64string) ]
conn = opener.open('http://target/')
print conn.read()
Ich frage mich, ob es mit Handler eine richtige Lösung gibt.
pip requests
Wenn benutzt
Es war das Verhalten von "Proxy-Authorization".
#!/usr/bin/env python
import requests
proxies = {
"http": "http://username:password@proxy:8080",
}
ret = requests.get("http://target/", proxies=proxies)
print ret
Recommended Posts