Anfragen library https-get über proxy führt zu error

Senden möchten, einen einfachen get-request über einen proxy. Ich habe die "Proxy-Authorization' und 'Authorization' - Header, glaube nicht, ich brauchte die 'Authorization' - header, aber hat es trotzdem.

import requests
URL = 'https://www.google.com'
sess = requests.Session()
user = 'someuser'
password = 'somepass'
token = base64.encodestring('%s:%s'%(user,password)).strip()
sess.headers.update({'Proxy-Authorization':'Basic %s'%token})
sess.headers['Authorization'] = 'Basic %s'%token
resp = sess.get(URL)

Bekomme ich die folgende Fehlermeldung:

requests.packages.urllib3.exceptions.ProxyError: Cannot connect to proxy. Socket error: Tunnel connection failed: 407 Proxy Authentication Required.

Jedoch wenn ich die URL auf einfache http://www.google.com es funktioniert gut.

Tun Proxys verwenden Sie Basic -, Digest-oder eine andere Art der Authentifizierung für https? Ist es die proxy-server-spezifisch ist? Wie kann ich entdecken, dass die info? Ich brauche, um dies zu erreichen mit den Anforderungen der Bibliothek.

UPDATE

Sein scheint, dass mit HTTP-Anfragen, die wir zu Durchlaufen haben, in einer Proxy-Authorization header, aber mit HTTPS-Anforderungen, die wir brauchen, um format der proxy-URL mit username und Passwort

#HTTP
import requests, base64
URL = 'http://www.google.com'
user = <username>
password = <password>
proxy = {'http': 'http://<IP>:<PORT>}
token = base64.encodestring('%s:%s' %(user, password)).strip()
myheader = {'Proxy-Authorization': 'Basic %s' %token}
r = requests.get(URL, proxies = proxies, headers = myheader)
print r.status_code # 200


#HTTPS
import requests
URL = 'https://www.google.com'
user = <username>
password = <password>
proxy = {'http': 'http://<user>:<password>@<IP>:<PORT>}
r = requests.get(URL, proxies = proxy)
print r.status_code  # 200

Beim senden eines HTTP-request, wenn ich Sie aus dem Kopf und übergeben Sie einen proxy-formatiert mit user/pass, bekomme ich einen 407-Antwort.

Beim senden einer HTTPS-Anforderung, wenn ich den pass in der überschrift und lassen Sie die unformatierte proxy bekomme ich eine ProxyError erwähnt.

Ich bin mit Anfragen 2.0.0, und ein Squid proxy-caching web server. Warum funktioniert der header-option Arbeit für HTTPS? Warum wird der formatierte proxy nicht für HTTP?

Authentifizierung proxy-server bestimmten ist. Sie würden entdecken Sie die erforderliche Konfiguration durch sprechen mit jemandem, verantwortlich für den proxy-server, oder vielleicht die Dokumentation Lesen. Sie könnten versuchen, konfigurieren Sie Ihren browser verwenden, der proxy-server und sehen, ob Sie bekommen können, dass die Arbeit als eine Möglichkeit der Erprobung verschiedener Konfigurationen.

InformationsquelleAutor mingxiao | 2013-10-23

Schreibe einen Kommentar