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

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'))

相关文章:

  • 无法选择最佳操作符(APP) 目录
  • 电子电路:什么是滤波器,什么优势高通滤波器?
  • Photo Sphere Viewer 的迷你地图插件map-plugin
  • 特殊的完全平方数
  • 常见激活函数
  • 表面遮盖显示需要提取器官吗
  • 通过vue-pdf和print-js实现PDF和图片在线预览
  • Cookie、Session、JWT
  • AUTOSAR图解==>AUTOSAR_SRS_MCUDriver
  • 17、Python对象操作全解析:同一运算符、成员运算符与整数缓存机制实战
  • 论文学习记录之《DiffusionVel》
  • Python+requests实现接口自动化测试
  • Linux中的tty与login之间的关系
  • RHCSA Linux 系统 硬盘管理
  • AI编程对传统软件开发的冲击和思考
  • STM32基本定时器的启动和停止
  • Android中PID与UID的区别和联系
  • vue2 全局指令(输入框自定义限制)
  • 【C++】20. AVL树的实现
  • BU9792驱动段式LCD
  • 企业网站托管有必要吗/网站竞价推广怎么做
  • 中国十大电商公司/怎么关闭seo综合查询
  • 广州网站开发技术/网站营销
  • 常州做网站的/系统优化助手
  • 青白江做网站的公司/制作网页教程
  • 好的外国设计网站推荐/网络游戏营销策略