当前位置: 首页 > 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官方文档。

http://www.xdnf.cn/news/38323.html

相关文章:

  • Transformer(李宏毅)
  • C语言数据结构顺序表
  • 面试题--随机(一)
  • 每日算法-250419
  • 实验扩充 LED显示4*4键位值
  • 航电春季赛(七)1010 网格计数
  • python(八)-数据类型转换
  • 【C++算法】66.栈_比较含退格的字符串
  • linux软件仓库
  • 【AIVS】OPENAIVS开源视频推理系统简介
  • 【内置函数】84个Python内置函数全整理
  • 嘉立创原理图、PCB常见问题
  • 8.5/Q1,Charls最新文章解读
  • JavaScript 变量命名规范
  • LeetCode 2563.统计公平数对的数目:排序 + 二分查找
  • 行为审计软件:企业合规与内部监控的数字守门人
  • 硬件工程师面试常见问题(3)
  • Linux下使用C++获取硬件信息
  • Spring Cloud CircuitBreaker服务熔断+隔离+限流
  • 【解决】torch引入过程中的ImportError: __nvJitLinkAddData_12_1, version libnvJitLink.so.12
  • 编程技能:调试04,逐语句命令
  • 08-DevOps-向Harbor上传自定义镜像
  • 【数字IC进阶】整数除3和模3的高效实现
  • 网络开发基础(游戏方向)之 概念名词
  • ESP32-S3上跑通红外重复码发送(7)
  • Linux cmp 命令使用详解
  • SQL注入绕过一些过滤的方式
  • 【数据结构】_栈和队列相关面试题
  • Photoshop安装与配置--简单攻略版
  • 数字化转型四步走:企业的进化密码