You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何利用SSR代理配置Python requests.get访问境外网站?附版本信息

使用Python requests结合ShadowsocksR代理访问外网

首先,你得确保你的ShadowsocksR-dotnet4.0客户端已经正常运行,并且开启了本地SOCKS5代理——默认情况下,SSR客户端会在本地的1080端口提供SOCKS5代理服务(你可以在客户端的设置面板里确认具体端口,比如有些用户会改成10800之类的)。

1. 安装必要的依赖

requests库本身不原生支持SOCKS5代理,所以需要安装额外的包来补全这个功能:

pip install requests[socks]
# 或者单独安装pysocks,效果完全一致
# pip install pysocks

如果你的Python3.6.8遇到版本兼容问题,可以指定兼容的pysocks版本:

pip install pysocks==1.7.1

2. 在requests中配置代理

有两种常用的配置方式,你可以根据需求选择:

方式一:单请求单独设置代理

每次调用requests.get()时,通过proxies参数指定代理,适合只需要个别请求走代理的场景:

import requests

# 这里的端口要和你的SSR客户端本地代理端口完全匹配
proxies = {
    'http': 'socks5://localhost:1080',
    'https': 'socks5://localhost:1080'
}

try:
    # 测试访问外网站点,比如Google
    response = requests.get('https://www.google.com', proxies=proxies, timeout=10)
    response.raise_for_status()  # 自动检测请求是否成功
    print("请求成功,状态码:", response.status_code)
    # 可以打印部分响应内容验证连接有效性
    print(response.text[:500])
except requests.exceptions.RequestException as e:
    print(f"请求失败:{e}")

方式二:全局设置代理(Session对象)

如果希望所有requests请求都自动走代理,可以用Session对象统一配置,适合批量请求的场景:

import requests

# 创建Session并绑定代理配置
session = requests.Session()
session.proxies = {
    'http': 'socks5://localhost:1080',
    'https': 'socks5://localhost:1080'
}

try:
    # 用session发起的所有请求都会自动使用代理
    response = session.get('https://www.google.com', timeout=10)
    response.raise_for_status()
    print("请求成功,状态码:", response.status_code)
except requests.exceptions.RequestException as e:
    print(f"请求失败:{e}")

3. 关键注意事项

  • 务必确认SSR客户端处于正常运行状态,且本地代理端口没有被其他程序占用;
  • 如果你的SSR客户端修改过默认端口,一定要把代码里的1080改成你实际使用的端口;
  • 测试时优先选择稳定的外网站点(比如Google),避免因目标站点本身的问题导致误判。

内容的提问来源于stack exchange,提问作者Oldhunter H

火山引擎 最新活动