4

Ich laufe derzeit ein Skript Daten von Google Analytics ziehen mit Phyton-Paket (das basiert auf Client-Objekt)Google API + Proxy + httplib2

-> Mein Skript einfach und ohne Proxy .

Aber ich muss es hinter meinem Firmen-Proxy setzen, also muss ich mein httplib2.Http() - Objekt anpassen, um Proxy-Informationen einzubetten.

Nach httplib2 doc 1 Ich habe versucht:

pi = httplib2.proxy_info_from_url('http://user:[email protected]:80') 
httplib2.Http(proxy_info=pi).request("http://www.google.com") 

Aber es hat nicht funktioniert. Ich bekomme immer ein Auszeit Fehler, mit oder ohne Proxy-Informationen (so im Parameter Proxy-Info wird nicht berücksichtigt)

Ich heruntergeladen Socken in Paket (v1.5.6) und auch versucht, zu „wrapmodule“ httplib2 als hier beschrieben: https://github.com/jcgregorio/httplib2/issues/205

socks.setdefaultproxy(socks.PROXY_TYPE_HTTP, "proxyna", port=80, username='p.tisserand', password='Telematics12') 
socks.wrapmodule(httplib2) 
h = httplib2.Http() 
h.request("http://google.com") 

Aber ich bekomme einen Indexerror: (Tupelindex außerhalb des Bereichs)

in der Zwischenzeit Wenn ich das Paket verwenden, dieser einfache Code wo rks perfekt:

os.environ["HTTP_PROXY"] = "http://user:[email protected]:80" 
req = requests.get("http://www.google.com") 

Das Problem ist, dass Bedarf mit googleapiclient Anforderungen zu passen und bietet ein htpplib2.Http() Client-Objekt.

Antwort

1

Ich beschloss, meine Web-App in Python 2 zu rekodieren, immer noch mit dem httplib2-Paket. Proxy-Informationen werden jetzt berücksichtigt. Es funktioniert jetzt.

+0

Können Sie bitte Ihre Lösung genauer beschreiben? – Liso

+1

In der Tat! Ich habe ein Skript, das mit Python 3.4 fehlschlägt, aber läuft gut mit Python 2.7. Und der einzige Unterschied im Verhalten scheint zu sein, dass es mit pyhon 3.4 versucht, direkt mit Google zu verbinden, während es unter 2.7 den Proxy korrekt durchläuft. – chutz

+0

absolut - @Liso die Proxy-Info wird nicht in Python 3. * aber in Python 2 berücksichtigt. * – Phil27

0

anstatt Python2, ich glaube, Sie besser versuchen würde mit httplib2shim

Sie einen Blick auf dieses Tutorial auf meinem Blog haben: https://dinatam.com/fr/python-3-google-api-proxy/

In einfachen Worten, ersetzen Sie einfach diese Art von Code :

from httplib2 import Http 
http_auth = credentials.authorize(Http()) 

durch dieses:

import httplib2shim 
http_auth = credentials.authorize(httplib2shim.Http())