Django - 如何使用代理发出请求?

时间:2015-10-03 07:46:00

标签: python django

我正在遵循本指南:https://ultimatedjango.com/blog/how-to-consume-rest-apis-with-django-python-reques/

我想知道如何使用代理发出这些请求?我在想这个部分应该修改一下:

def save_embed(request):

    if request.method == "POST":
        form = SubmitEmbed(request.POST)
        if form.is_valid():
            url = form.cleaned_data['url']
            r = requests.get('http://api.embed.ly/1/oembed?key=' + settings.EMBEDLY_KEY + '&url=' + url)

有更简单的方法吗?我想每次使用相同的代理来获得相同的API密钥。 (2-3个api键) 干杯

2 个答案:

答案 0 :(得分:0)

您可以将"proxies" argument传递给request.get方法,该方法包含用于不同协议的代理服务器字典,因此代码将变为。

def save_embed(request):
    if request.method == "POST":
        form = SubmitEmbed(request.POST)
        if form.is_valid():
            url = form.cleaned_data['url']
            proxies = {
                "http": "http://123.123.123.123:1234",
                "https": "https://123.123.123.123:1234",
            }
            r = requests.get('http://api.embed.ly/1/oembed?key=' + settings.EMBEDLY_KEY + '&url=' + url, proxies=proxies)

答案 1 :(得分:0)

您还可以通过设置环境变量HTTP_PROXY和HTTPS_PROXY来配置代理。

$ export HTTP_PROXY="http://10.10.1.10:3128"
$ export HTTPS_PROXY="http://10.10.1.10:1080"

$ python
>>> import requests
>>> requests.get('http://example.org')

参考:https://2.python-requests.org//en/latest/user/advanced/#proxies

如果在响应服务器仅处理来自列入白名单的IP的请求的本地开发环境中使用该方法,则建议使用此方法。