代理配置

更新时间:

在软件开发中,代理就像是一个“中间人”,它帮我们控制对某个功能或资源的访问。使用代理可以实现权限检查、记录操作日志、缓存数据、延迟加载等功能,而不用改动原来的代码。这样可以让程序更安全、运行更快,也更容易维护和扩展。本文为您介绍V2.0 Python SDK对于网络代理的配置方式。

代理类型

V2.0 Python SDK中,仅支持HTTP代理。可通过http_proxyhttps_proxyno_proxy参数进行设置:

  • http_proxy用于指定代理服务器地址,仅对HTTP协议的请求生效。

  • https_proxy用于指定代理服务器地址,仅对HTTPS协议的请求生效。

  • no_proxy用于指定无需通过代理访问的地址列表,多个地址之间用逗号分隔,支持域名和IP地址格式。

代理配置方式

说明

代理配置优先级为:RuntimeOptions配置->Config配置->环境变量,优先级依次降低。

  • 通过运行时参数(RuntimeOptions)配置代理,仅对使用了该运行时参数的请求有效。

    示例代码如下:

    import os
    
    from alibabacloud_ecs20140526.client import Client as EcsClient
    from alibabacloud_ecs20140526.models import DescribeRegionsRequest
    from alibabacloud_tea_openapi.models import Config
    from alibabacloud_tea_util.models import RuntimeOptions
    
    config = Config(
        access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
        access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
        endpoint='ecs-cn-hangzhou.aliyuncs.com',
        protocol='https',  # 请求协议与HTTP代理配置参数有关,httpsProxy仅对https协议有效,httpProxy仅对http协议有效。
    )
    ecs_client = EcsClient(config)
    
    # 在RuntimeOptions中配置代理
    runtimeOptions = RuntimeOptions(
        http_proxy='http://127.0.0.1:9898',
        https_proxy='http://user:password@127.0.0.1:8989',
        no_proxy='127.0.0.1,localhost,localdomain.com'
    )
    request = DescribeRegionsRequest()
    response = ecs_client.describe_regions_with_options(request, runtimeOptions)
    print(response.body)
    
  • 在初始化客户端阶段,通过Config类配置代理,对所有请求都生效。

    示例代码如下:

    import os
    
    from alibabacloud_ecs20140526.client import Client as EcsClient
    from alibabacloud_ecs20140526.models import DescribeRegionsRequest
    from alibabacloud_tea_openapi.models import Config
    from alibabacloud_tea_util.models import RuntimeOptions
    
    config = Config(
        access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
        access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
        endpoint='ecs-cn-hangzhou.aliyuncs.com',
        protocol='https',  # 请求协议与HTTP代理配置参数有关,httpsProxy仅对https协议有效,httpProxy仅对http协议有效。
        # 代理配置
        http_proxy='http://127.0.0.1:9898',
        https_proxy='http://user:password@127.0.0.1:8989',
        no_proxy='127.0.0.1,localhost,localdomain.com'
    )
    ecs_client = EcsClient(config)
    
    runtimeOptions = RuntimeOptions()
    request = DescribeRegionsRequest()
    response = ecs_client.describe_regions_with_options(request, runtimeOptions)
    print(response.body)
    
  • 通过环境变量配置代理:

    说明

    不支持在环境变量中配置no_proxy

    • 通过环境变量参数HTTP_PROXYhttp_proxy指定代理服务器地址。

    • 通过环境变量参数HTTPS_PROXYhttps_proxy指定代理服务器地址。

相关文档

代理配置相关实践文档,请参见HTTP代理配置实践