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

Python爬虫设置IP代理

设置代理(Proxy)

作用:
当网站检测到某个IP的访问频率过高时,可能会封禁该IP。通过使用代理服务器,可以定期更换IP地址,避免被识别和封锁。

优势:
让网站无法追踪真实请求来源,提升爬虫的隐蔽性和稳定性。

分类:

透明代理

  • 特点:目标网站能检测到你在使用代理,并知道你的真实IP地址。

  • 适用性:不符合隐藏真实IP的需求。

匿名代理

  • 特点:目标网站知道你使用了代理,但无法获取你的真实IP。

  • 适用性:提供基础匿名性,但仍有被识别的风险。

高匿代理(推荐)

  • 特点:目标网站既无法检测代理使用,也无法获取真实IP。

  • 适用性:最适合爬虫场景,隐蔽性最高。

IP可以自己在网上搜免费的或者购买IP代理池

# 导入必要的库
from urllib.request import Request, build_opener  # 用于创建请求和打开器
from fake_useragent import UserAgent  # 用于生成随机User-Agent
from urllib.request import ProxyHandler  # 用于设置代理# 定义目标URL
url = 'http://httpbin.org/get'# 设置请求头,使用随机生成的Chrome浏览器User-Agent
headers = {'User-Agent': UserAgent().chrome
}# 创建请求对象,传入URL和请求头
request = Request(url, headers=headers)# 设置代理(注释展示了不同格式的代理配置)
# 格式1: 带用户名密码的代理
# handler = ProxyHandler({"http": "username:password@ip:port"})
# 格式2: 实际用户名密码和代理IP端口的示例(已注释,避免暴露敏感信息)
# handler = ProxyHandler({"http": "dtxqwxkb:scocqa4e@180.103.123.171:16818"})
# 格式3: 仅IP和端口的代理(无认证)
# handler = ProxyHandler({"http": "ip:port"})
# 实际使用的代理配置(当前启用的是无认证代理)
handler = ProxyHandler({"http": "180.103.123.171:16818"})# 创建带有代理配置的打开器
opener = build_opener(handler)# 发送请求并获取响应
response = opener.open(request)# 打印响应内容(解码为UTF-8字符串)
print(response.read().decode('utf-8'))  

实现自动更换代理IP:

方法1:从代理池随机选择(需提前准备IP列表)
import random
from urllib.request import Request, build_opener, ProxyHandler
from fake_useragent import UserAgent# 代理池(示例IP,需替换为实际可用的代理)
proxy_pool = ["180.103.123.171:16818","203.156.124.82:8080","45.167.124.10:9999"
]# 随机选择一个代理
proxy = random.choice(proxy_pool)
handler = ProxyHandler({"http": proxy})# 创建请求
url = 'http://httpbin.org/get'
headers = {'User-Agent': UserAgent().chrome}
request = Request(url, headers=headers)# 发送请求
opener = build_opener(handler)
response = opener.open(request)
print(f"当前代理IP: {proxy}")
print(response.read().decode('utf-8'))

 方法2:通过API动态获取新IP(需代理服务商支持)

import requests
from urllib.request import Request, build_opener, ProxyHandler
from fake_useragent import UserAgent# 从代理服务商API获取新IP(示例API,需替换为实际接口)
def get_new_proxy():api_url = "https://your-proxy-service.com/api/get-ip"response = requests.get(api_url).json()return f"{response['ip']}:{response['port']}"# 动态获取代理
proxy = get_new_proxy()
handler = ProxyHandler({"http": proxy})# 创建请求
url = 'http://httpbin.org/get'
headers = {'User-Agent': UserAgent().chrome}
request = Request(url, headers=headers)# 发送请求
opener = build_opener(handler)
response = opener.open(request)
print(f"当前代理IP: {proxy}")
print(response.read().decode('utf-8'))

http://www.lryc.cn/news/2385572.html

相关文章:

  • Adminer 连接mssql sqlserver
  • C++系统IO
  • 利用 Python 爬虫获取唯品会 VIP 商品详情:实战指南
  • DELL EMC PowerStore BBU更换手册
  • css五边形
  • 三种常见脉冲神经网络编码方式解读
  • Go语言实战:使用 excelize 实现多层复杂Excel表头导出教程
  • STM32F103 HAL多实例通用USART驱动 - 高效DMA+RingBuffer方案,量产级工程模板
  • HTML回顾
  • 机器视觉6-halcon高级教程
  • YOLOv8 的双 Backbone 架构:解锁目标检测新性能
  • 1.4 TypeScript 编译是如何工作的?
  • 【HTML-4】HTML段落标签:构建内容结构的基础
  • 国际前沿知识系列五:时间序列建模方法在头部撞击运动学测量数据降噪中的应用
  • 未授权访问漏洞利用链实战总结
  • Centos上搭建 OpenResty
  • Web 服务、 Nfs 服务器以及 Dns 服务器综合实验
  • 保证数据库 + redis在读写分离场景中事务的一致性
  • 汇编语言的子程序魔法:解锁四则运算的奥秘
  • 快速解决Linux 中yum镜像拉取失败问题
  • C#核心概念解析:析构函数、readonly与this关键字
  • HarmonyOS基础组件:Button三种类型的使用
  • 深入理解设计模式之适配器模式
  • 预训练模型:深度学习的通用特征引擎
  • C++题解(33)2025年顺德区中小学生程序设计展示活动(初中组C++)U560876 美丽数(一)和 U560878 美丽数(二)题解
  • 产业互联网+三融战略:重构企业增长密码
  • centos yum源,docker源
  • 通过设备节点获取已注册的 i2c client
  • Centos系统资源镜像配置
  • 【Linux网络篇】:Socket网络套接字以及简单的UDP网络程序编写