2026-01-06
在爬虫中使用代理 IP 的核心目的是突破 IP 限制、隐藏真实地址,避免被目标网站封禁。以下是不同场景下的实现方式,以 Python 为例:

1. 基础用法:requests 库设置代理
import requests
# 代理IP格式:协议://IP:端口
proxies = {
"http": "http://111.11.228.75:8080",
"https": "https://111.11.228.75:8080" # https代理可与http共用(部分代理支持)
}
try:
response = requests.get("https://目标网站.com", proxies=proxies, timeout=10)
print(response.status_code)
except Exception as e:
print("代理失效或请求失败:", e)
2. 带账号密码的代理(私密代理)
proxies = {
"http": "http://用户名:密码@111.11.228.75:8080",
"https": "https://用户名:密码@111.11.228.75:8080"
}
3. 动态切换代理(应对频繁失效)
import random
# 代理池(可从代理服务商API获取)
proxy_pool = [
"http://111.11.228.75:8080",
"http://123.123.123.123:9090",
# ...更多代理
]
def get_random_proxy():
return random.choice(proxy_pool)
# 尝试使用随机代理,失败则切换
for _ in range(3): # 最多重试3次
try:
proxy = get_random_proxy()
response = requests.get("https://目标网站.com", proxies={"http": proxy, "https": proxy})
if response.status_code == 200:
print("请求成功")
break
except:
continue
4. 爬虫框架中的代理设置(以 Scrapy 为例)
在settings.py中配置:
# 普通代理
HTTP_PROXY = "http://111.11.228.75:8080"
HTTPS_PROXY = "https://111.11.228.75:8080"
# 代理池(配合中间件)
PROXY_LIST = [
"http://111.11.228.75:8080",
"http://123.123.123.123:9090"
]
# 启用代理中间件
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 100,
'your_project.middlewares.RandomProxyMiddleware': 90 # 自定义随机代理中间件
}
关键注意事项:
代理质量:免费代理稳定性差,建议使用付费代理(如四叶天),避免频繁更换 IP 被识别。
协议匹配:http 代理用于 http 网站,https 代理用于 https 网站(部分代理支持双协议)。
频率控制:即使使用代理,也需控制请求频率(加延迟),否则仍可能被封禁。
失效检测:定期验证代理有效性,剔除不可用 IP,避免请求失败。

1. 基础用法:requests 库设置代理
import requests
# 代理IP格式:协议://IP:端口
proxies = {
"http": "http://111.11.228.75:8080",
"https": "https://111.11.228.75:8080" # https代理可与http共用(部分代理支持)
}
try:
response = requests.get("https://目标网站.com", proxies=proxies, timeout=10)
print(response.status_code)
except Exception as e:
print("代理失效或请求失败:", e)
2. 带账号密码的代理(私密代理)
proxies = {
"http": "http://用户名:密码@111.11.228.75:8080",
"https": "https://用户名:密码@111.11.228.75:8080"
}
3. 动态切换代理(应对频繁失效)
import random
# 代理池(可从代理服务商API获取)
proxy_pool = [
"http://111.11.228.75:8080",
"http://123.123.123.123:9090",
# ...更多代理
]
def get_random_proxy():
return random.choice(proxy_pool)
# 尝试使用随机代理,失败则切换
for _ in range(3): # 最多重试3次
try:
proxy = get_random_proxy()
response = requests.get("https://目标网站.com", proxies={"http": proxy, "https": proxy})
if response.status_code == 200:
print("请求成功")
break
except:
continue
4. 爬虫框架中的代理设置(以 Scrapy 为例)
在settings.py中配置:
# 普通代理
HTTP_PROXY = "http://111.11.228.75:8080"
HTTPS_PROXY = "https://111.11.228.75:8080"
# 代理池(配合中间件)
PROXY_LIST = [
"http://111.11.228.75:8080",
"http://123.123.123.123:9090"
]
# 启用代理中间件
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 100,
'your_project.middlewares.RandomProxyMiddleware': 90 # 自定义随机代理中间件
}
关键注意事项:
代理质量:免费代理稳定性差,建议使用付费代理(如四叶天),避免频繁更换 IP 被识别。
协议匹配:http 代理用于 http 网站,https 代理用于 https 网站(部分代理支持双协议)。
频率控制:即使使用代理,也需控制请求频率(加延迟),否则仍可能被封禁。
失效检测:定期验证代理有效性,剔除不可用 IP,避免请求失败。
关键词:
上一篇 :
爬虫用什么样的代理IP,爬虫代理IP选型指南
下一篇 :
返回列表
