Google API + 代理 + httplib2
Google API + proxy + httplib2
我目前 运行 一个脚本,用于从 Google Analytics 和 googleapiclient Python package (that is based on httplib2 客户端对象中提取数据)
--> 我的脚本在没有任何代理的情况下运行完美。
但是我必须把它放在我的公司代理后面,所以我需要调整我的 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)
与此同时,
当我使用 requests 包时,这个简单的代码工作得很好:
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())
我目前 运行 一个脚本,用于从 Google Analytics 和 googleapiclient Python package (that is based on httplib2 客户端对象中提取数据)
--> 我的脚本在没有任何代理的情况下运行完美。
但是我必须把它放在我的公司代理后面,所以我需要调整我的 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)
与此同时, 当我使用 requests 包时,这个简单的代码工作得很好:
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())