Google API + 代理 + httplib2

Google API + proxy + httplib2

我目前 运行 一个脚本,用于从 Google Analytics 和 Python package (that is based on 客户端对象中提取数据)

--> 我的脚本在没有任何代理的情况下运行完美。

但是我必须把它放在我的公司代理后面,所以我需要调整我的 httplib2.Http() 对象来嵌入代理信息。

关注 httplib2 文档 1 我尝试了:

pi = httplib2.proxy_info_from_url('http://user:pwd@someproxy:80')
httplib2.Http(proxy_info=pi).request("http://www.google.com")

但是没有用。 无论是否有代理信息,我总是会收到超时错误(因此不考虑参数中的 proxy_info)

我还在 PySocks 包 (v1.5.6) 中下载了 socks,并尝试 "wrapmodule" httplib2,如下所述: 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")

但是我得到一个 IndexError: (tuple index out of range)

与此同时, 当我使用 包时,这个简单的代码工作得很好:

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

问题是需要满足 googleapiclient 要求并提供 htpplib2.Http() 客户端对象。

我决定在 Python 2 中重新编码我的 Web 应用程序,仍然使用 httplib2 包。 现在考虑代理信息。现在可以使用了。

而不是使用 Python2,我认为你最好尝试使用 httplib2shim

您可以在我的博客上查看此教程: https://dinatam.com/fr/python-3-google-api-proxy/

简单来说,就是把这种代码替换掉:

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

来自这个:

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