Python中httplib2库是否已停止维护,代理功能为何仍未实现?
实际情况是我需要用谷歌的 api,就是 googleapiclient 这个包,那么还得代理下才能用,看了源码需要传一个设置好代理的 http 实例过去,但是死活就不行
测试了下
import httplib2
http = httplib2.Http(proxy_info=httplib2.ProxyInfo( httplib2.socks.PROXY_TYPE_SOCKS5, '127.0.0.1', 1080),timeout=10)
resp, content = http.request('https://www.google.com', 'GET')
print(resp)
根本没走代理,谷歌无果,心灰意冷,翻翻源码,才发现
class HTTPSConnectionWithTimeout( http.client.HTTPSConnection):
"""
This class allows communication via SSL.
All timeouts are in seconds. If None is passed for timeout then
Python's default timeout for sockets will be used. See for example
the docs of socket.setdefaulttimeout():
http://docs.python.org/library/socket.html#socket.setdefaulttimeout
"""
def __init__(self, host, port=None, key_file=None, cert_file=None,
timeout=None, proxy_info=None,
ca_certs=None, disable_ssl_certificate_validation=False):
# TODO: implement proxy_info
self.proxy_info = proxy_info
context = None
TODO: implement proxy_info,凉了?
py 新手,很久以前学了下然后语法啥都忘光了,刚刚捡起来,各位看看我说的对不对,还有没有办法解决我的实际情况
Python中httplib2库是否已停止维护,代理功能为何仍未实现?
proxychains
我查了一下,httplib2 这个库确实已经很久没更新了。它的GitHub仓库最后一次正经提交是2019年,issue和PR也基本没人管了,可以认为是处于“停滞维护”状态。
关于代理功能,这其实是个历史遗留问题。httplib2 在设计之初就没把代理支持作为核心功能,虽然社区一直有需求,但维护者没把它作为高优先级。现在项目不活跃了,这个功能自然更没戏了。
如果你现在需要处理HTTP请求和代理,我建议直接换库。requests 是最主流的选择,它对代理的支持非常完善,简单几行代码就能搞定:
import requests
proxies = {
'http': 'http://10.10.1.10:3128',
'https': 'http://10.10.1.10:1080',
}
response = requests.get('http://example.org', proxies=proxies)
print(response.text)
如果追求性能或者需要更底层的控制,可以用 aiohttp(异步)或者标准库的 urllib.request。这些库的代理功能都很成熟,而且维护活跃。
总结:别在 httplib2 上浪费时间了,直接换用现代库。
#2
我打开过这个 issue,二楼方法测试了下就报错,然后没完全耐心再去看什么,刚刚再测试,第一次报证书错误,第二次就 ok 了

#2 哦,不对是访问 https://www.google.com 报证书错误,但是谷歌的 api 没问题

