Série 2.7.x. Lorsque l'authentification de base est appliquée lors du passage par le proxy http avec urllib2.
client => proxy => target
↑ Ici
Ce n'est pas grave si vous imitez la référence ou celle qui sort lorsque vous recherchez normalement sur Google.
#!/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()
Cela ajoutera l'en-tête Proxy-Authorization
.
client => proxy => target
↑ Ici
Dans ce cas, vous devez ajouter l'en-tête ʻAuthorization au lieu de l'en-tête
Proxy-Authorization`.
Cependant, peu importe combien j'ai cherché et essayé, la méthode utilisant Handler n'est pas sortie, donc
Il n'y a aucune aide pour cela, alors j'ai réussi à le résoudre en calculant manuellement l'en-tête et en l'ajoutant.
#!/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()
Je me demande s'il existe une solution appropriée en utilisant Handler.
pip requests
Lorsqu'ils sont utilisés
C'était le comportement de "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