python HTTP Client - 代理请求作为GET参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python HTTP Client - 代理请求作为GET参数相关的知识,希望对你有一定的参考价值。
我在防火墙后面,需要以http://the-proxy-gateway.set?url=https%3A%2F%2Fapi.stripe.com
的格式做所有请求。
所以我需要将所需的URL作为GET参数传递(并且还要对请求进行uri编码)。
如何配置标准Python http客户端(requests,urllib2或其他)来执行此操作?
答案
我可能会遗漏一些东西,但这种似乎只是一个常规的request.get
与params
设置。
此示例在代理URL是伪造的意义上不起作用,但如果您查看错误消息(为简洁起见而修改),则该参数似乎已正确编码。
In[2]: import requests
...:
...: PROXY_URL = 'http://the-proxy-gateway.set'
...:
...:
...: def proxy_as_get(url):
...: r = requests.get(PROXY_URL, params={'url': url})
...: r.raise_for_status()
...: return r.json() # ???
...:
In[3]: r = proxy_as_get('https://api.stripe.com')
Traceback (most recent call last):
...
Max retries exceeded with
*****
url: /?url=https%3A%2F%2Fapi.stripe.com
*****
...
另一个例子:
In[2]: import requests
In[3]: PROXY_URL = 'http://the-proxy-gateway.set'
In[4]: params = {'url': 'https://api.stripe.com'}
In[5]: req = requests.Request('GET', PROXY_URL, params=params)
In[6]: prepped = req.prepare()
In[7]: prepped.url
Out[7]: 'http://the-proxy-gateway.set/?url=https%3A%2F%2Fapi.stripe.com'
以上是关于python HTTP Client - 代理请求作为GET参数的主要内容,如果未能解决你的问题,请参考以下文章
Android笔记 - Binder之Client请求Service代理对象