4

我目前正在运行的脚本植酮包拉从谷歌Analytics的数据(即基于客户对象)谷歌API +代理+ httplib2的

- >我的脚本的作品完美,没有任何代理。

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

继httplib2的文档1我想:

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

但没有奏效。 我总是超时错误,使用或不使用代理信息(参数所以proxy_info不考虑)

包(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:(数组索引超出范围)

在此期间, 当我使用包,这个简单的代码WO RKS完美

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

的问题是,需要以适应googleapiclient要求,并提供一个htpplib2.Http()客户对象。

回答

1

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

+0

能否更精确地描述您的解决方案? – Liso

+1

确实!我有一个脚本与Python 3.4失败,但运行良好的Python 2.7。行为上唯一的区别似乎是,pyhon 3.4试图直接连接到谷歌,而在2.7以下它正确地通过代理。 – chutz

+0

absolutly - @Liso在Python 3中没有考虑到代理信息。*但在Python 2. * – Phil27

0

,而不是使用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())