Python中使用代理的完整教程

目录

  • HTTP全局代理:环境变量方式
  • HTTP全局代理:代码实现方式
  • SOCKS全局代理
  • 针对部分请求设置代理
  • 推荐
  • 本文介绍几种在Python里使用代理的方式,假定代理运行在本机,HTTP代理端口为1231, SOCKS5代理端口为8080。

    HTTP全局代理:环境变量方式

    在命令行里配置如下环境变量,然后执行Python脚本,Python在进行网络请求时就会使用配置的代理。

    export http_proxy="http://127.0.0.1:1231"
    export https_proxy="http://127.0.0.1:1231"
    

    HTTP全局代理:代码实现方式

    也可以在Python代码里添加如下内容,效果与上面的方式相同:

    import os
    os.environ["http_proxy"] = "http://127.0.0.1:1231"
    os.environ["https_proxy"] = "http://127.0.0.1:1231"
    

    SOCKS全局代理

    通过设置环境变量的方式通常只能使用HTTP代理。要使用全局SOCKS代理可以使用tsocks.

    安装tsocks后,编辑/etc/tsocks.conf,以使用端口为8080的本地SOCKS5代理为例:

    server = 127.0.0.1
    server_port = 8080 
    server_type = 5
    

    配置完成后在原来的脚本执行命令前添加tsocks即可使用,例如:

    tsocks python3 myscript.py
    

    针对部分请求设置代理

    前面的几种方式会为所有的HTTP请求设置代理,如果只想让部分请求使用代理,可以使用requests的proxies参数:

    import requests
    proxies = {'http': "socks5://127.0.0.1:8080",
               'https': "socks5://127.0.0.1:8080"}
    print(requests.get(url, proxies=proxies).content)
    例如下载图片,可使用:
    ```python
    with requests.get(url, proxies=proxies, stream=True) as r:
        if r.status_code != 200:
            return
        with open(path, 'wb') as f:
            for chunk in r.iter_content(chunk_size=8192): 
                f.write(chunk)
     
    

    推荐

    这里推荐一个免费好用的sock5.io,支持免费使用

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python中使用代理的完整教程

    发表评论