python - 如何使用 Python 向 Twilio API 提供代理信息

标签 python python-3.x proxy twilio twilio-api

看起来 Twilio API 已更新,他们不再能够导入 from twilio.rest.resources import Connection 这意味着向您展示如何设置代理的文档/答案使用 Connection 类不再有效。

即:

from twilio.rest.resources import Connection
from twilio.rest.resources.connection import PROXY_TYPE_HTTP

Connection.set_proxy_info(
    "proxy.server",
    3128,
    proxy_type=PROXY_TYPE_HTTP
)`

不起作用,因为没有可从中导入的资源类。

使用 Python 3 和 Twilio 的最新代码为 Twilio Python 库设置代理信息的正确方法是什么?

Github 上记录了一个关于此的问题,但目前还没有具体的解决方案 https://github.com/twilio/twilio-python/issues/327

最佳答案

此处为 Twilio 开发人员布道师。

正如 GitHub 上的问题所说,我们已经从 urllib2 切换到 Requests,但并未在默认 TwilioHttpClient 中提供所有选项,例如代理。该问题还建议您子类化 HttpClient 以自己添加代理。

据我所知,您可以只复制现有 TwilioHttpClient 的大部分内容将代理添加到 session 对象。像这样:

from requests import Request, Session

from twilio.http import HttpClient, get_cert_file
from twilio.http.response import Response


class ProxiedTwilioHttpClient(HttpClient):
    """
    General purpose HTTP Client for interacting with the Twilio API
    """
    def request(self, method, url, params=None, data=None, headers=None, auth=None, timeout=None,
                allow_redirects=False):

        session = Session()
        session.verify = get_cert_file()
        session.proxies = {
                              "https" : "https://x.x.x.x:yy"
                          }

        request = Request(method.upper(), url, params=params, data=data, headers=headers, auth=auth)

        prepped_request = session.prepare_request(request)
        response = session.send(
            prepped_request,
            allow_redirects=allow_redirects,
            timeout=timeout,
        )

        return Response(int(response.status_code), response.content.decode('utf-8'))

注意在request方法中间对session.proxies的调用

然后,当您实例化您的 Client 时,包括您的新 ProxiedTwilioHttpClient

from twilio.rest import Client
from proxied_twilio_http_client import ProxiedTwilioHttpClient

client = Client(account_sid, auth_token, http_client=ProxiedTwilioHttpClient())

让我知道这是否有帮助。

关于python - 如何使用 Python 向 Twilio API 提供代理信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43597379/

相关文章:

python - 在 try/except 子句中传递字典

python - 重复元组的正确约定是什么?

python - 我正在尝试计算 txt 文件中的所有字母,然后按降序显示

c# - C#设置IE代理

python - Http响应错误: This request is not authorized to perform this operation using this permission in Python Azure Function

python - pandas read_csv 最后一列包含逗号

python - 我可以访问包含另一个类的对象列表的对象的属性吗

reactjs - 在运行 react 应用程序的 Docker 容器中代理 API 请求

http - urllib3 - 无法设置 http 代理

python - 我需要在文件中仅使用 find() 命令编写一个 Python 程序来打印所有包含 Python 的行