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

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.xdnf.cn/news/8440.html

相关文章:

  • 广告反作弊都有哪些方法
  • 双击重复请求的方法
  • Linux (4)——冯诺依曼体系结构、操作系统及进程
  • OpenLayers 中 `ol/extent` 模块深度解析
  • 【90页DOC】鞋服行业-安踏集团数字化转型案(2025)
  • Unity 踩坑记录 UnityWebRequest.Delete(url) downloadHandler 空指针
  • 数智浪潮下,解锁情绪自由密码
  • 一个使用布隆过滤器来做幂等性校验的例子
  • 【IEEE会议推荐】第五届区块链技术与信息安全国际会议
  • 服务业的数字化转型:GEO赋能客户体验升级
  • 相同,对称,平衡,右视图(二叉树)
  • MySQL:备份还原数据库(mysqldump)
  • [250522] x-cmd 更新日志:v0.5.12 ~ v0.5.14
  • 互联网大厂Java求职面试:云原生架构与AI应用集成解决方案
  • 线程池详解
  • PyTorch中多项分布中随机采样(multinomial)和张量范数(norm)函数使用详解
  • 大腾智能 PDM 系统:全生命周期管理重塑制造企业数字化转型路径
  • 根据参数量,如何推断需要多少数据才能够使模型得到充分训练?
  • 【全解析】EN18031标准下的DLM删除机制
  • JVM监控工具
  • Vue-js
  • python3.7版本,如何安装pyppeteer
  • 对比Java、Python和C++的数据库操作生态
  • 数学建模MathAI智能体-2025电工杯A题实战
  • NV066NV074美光固态颗粒NV084NV085
  • PyQt学习系列09-应用程序打包与部署
  • 关系数据库基础入门
  • 1538. 【中山市第十一届信息学邀请赛决赛】互质(different)
  • MDK的编译过程及文件类型全解
  • 集群、容器云与裸金属服务器的全面对比分析