当前位置: 首页 > news >正文

Python requests代理(Proxy)使用教程

在Python中使用requests库设置代理(Proxy)非常简单,以下是详细步骤和常见场景说明:


一、基础代理设置

import requestsproxies = {"http": "http://10.10.1.10:3128",  # HTTP代理"https": "http://10.10.1.10:1080"  # HTTPS代理(注意协议头可能不同)
}response = requests.get("https://example.com", proxies=proxies)
print(response.text)

二、全局代理设置(所有请求自动使用)

# 通过环境变量设置(推荐)
import os
os.environ["HTTP_PROXY"] = "http://10.10.1.10:3128"
os.environ["HTTPS_PROXY"] = "http://10.10.1.10:1080"# 之后所有requests请求自动使用代理
response = requests.get("https://example.com")

三、需要认证的代理

如果代理需要用户名和密码:

proxies = {"http": "http://username:password@10.10.1.10:3128","https": "http://username:password@10.10.1.10:1080"
}response = requests.get("https://example.com", proxies=proxies)

四、使用SOCKS代理

需先安装依赖:

pip install requests[socks]

代码示例:

proxies = {"http": "socks5://127.0.0.1:1080",  # SOCKS5代理"https": "socks5://127.0.0.1:1080"
}response = requests.get("https://example.com", proxies=proxies)

五、异常处理

添加代理可能失败时的处理:

try:response = requests.get("https://example.com", proxies=proxies, timeout=5)response.raise_for_status()
except requests.exceptions.ProxyError as e:print(f"代理连接失败: {e}")
except requests.exceptions.RequestException as e:print(f"请求异常: {e}")

六、最佳实践建议

  1. 使用Session对象:保持代理设置一致性

    session = requests.Session()
    session.proxies.update(proxies)
    response = session.get("https://example.com")
    
  2. 代理池管理:对爬虫项目建议使用代理池轮换

    proxies_list = ["http://proxy1:port","http://proxy2:port"
    ]
    # 随机选择一个代理
    proxy = random.choice(proxies_list)
    
  3. 安全提示

    • 避免在代码中硬编码敏感信息(如密码)
    • 使用环境变量或配置文件存储代理凭证
    • 遵守目标网站的robots.txt规则

常见问题排查

  • 代理无效:检查代理地址、端口、协议是否匹配
  • 连接超时:尝试更换代理或调整timeout参数
  • SSL错误:添加verify=False(临时方案,不推荐长期使用)
    response = requests.get("https://example.com", proxies=proxies, verify=False)
    

如果需要更高级的配置(如自定义适配器),可参考requests官方文档。

相关文章:

  • 【ESP32】ESP-IDF开发 | 低功耗蓝牙开发 | GAP协议 + 设备扫描例程
  • 【PyTorch】colab上跑VGG(深度学习)数据集是 CIFAR10
  • Python 一等函数( 把函数视作对象)
  • AtCoder ABC402 A~D 题解
  • 五分钟学会如何基本使用JJWT!!!
  • Linux系统编程 day6 进程间通信mmap
  • 借助LlamaIndex实现简单Agent
  • Day2—3:前端项目uniapp壁纸实战
  • 深入理解 MCP 协议:开启 AI 交互新时代
  • 【人工智能】再谈探索AI幻觉及其解决方案(进一步整理)
  • 信创开发:开启信息自主创新、国产替代新时代
  • [Java微服务组件]注册中心P3-Nacos中的设计模式1-观察者模式
  • mysql控制单表数据存储及单实例表创建
  • 生物化学笔记:医学免疫学原理23 免疫检查点分子与肿瘤免疫治疗(PD-1抑制剂黑色素瘤)
  • 【进程信号】五、信号集操作接口详解
  • SICAR标准功能块 FB1514 “Robot_request_FB”
  • 增量式PID基础解析与代码实例:温控系统
  • 有效的完全平方数--LeetCode
  • HFSS3(limy)——建模学习记录
  • 工业级MIFI解决方案:打造低时延、高可靠性的Wi-Fi网络快速部署体系!
  • 合肥打造全球首个无人艇超级工厂,请看《浪尖周报》第21期
  • 特朗普就防卫负担施压日本,石破茂:防卫费应由我们自主决定
  • 文理医工“四轮驱动”,复旦六大新工科创新学院核心团队均亮相
  • 老年人越“懒”越健康,特别是这5种“懒”
  • 推动中阿合作“向新而行”,这场论坛在上海松江举行
  • 嘉兴乌镇一化工公司仓库火灾后,当地召开火灾警示现场会