我目前正在运行一个脚本来从 Google Analytics 中提取数据 googleapiclient Python 包(基于 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
下载了socks package (v1.5.6) 并尝试“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: (元组索引超出范围)
同时,
当我使用 requests包裹,这个简单的代码完美运行 :
os.environ["HTTP_PROXY"] = "http://user:pwd@someproxy:80"
req = requests.get("http://www.google.com")
问题是需要配合
googleapiclient
要求并提供 htpplib2.Http()
客户对象。
最佳答案
而不是使用 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())
关于proxy - Google API + 代理 + httplib2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36784437/