代理IP怎么用?从配置到实战的完整教程
发布时间:2026-05-15 阅读:36
第一次接触代理IP的人,最常见的问题是:拿到一个IP地址和端口,然后呢?怎么把它用到自己的程序里?怎么验证它是不是真的能工作?这代理IP怎么用就成了第一道门槛。
这篇教程从最基础的代理IP配置讲起,覆盖浏览器、Python、命令行三种最常见的用法,看完就能上手。
基础知识:代理IP的三个要素
一个可用的代理IP,通常由三个信息组成:
IP地址:端口号
比如 127.0.0.1:8080。有些代理还需要用户名和密码认证,格式就变成:
用户名:密码@IP地址:端口号
代理协议也分几种,常见的是 HTTP、HTTPS 和 SOCKS5:
- HTTP代理:只处理HTTP请求,最常见,配置最简单。
- HTTPS代理:支持加密的HTTP请求(也就是HTTPS)。
- SOCKS5代理:更底层的协议,支持TCP和UDP,不限于HTTP流量,游戏、视频等场景常用。
拿到这些信息之后,就可以开始配置了。
方法一:浏览器配置代理IP
如果你只是想让自己的浏览器走代理IP,不需要写代码,直接改系统代理设置就行。
Chrome/Edge(Windows)
- 打开浏览器设置,搜索"代理"
- 点击"打开您计算机的代理设置"
- 在"手动设置代理"中打开"使用代理服务器"
- 填入代理IP和端口
- 点击保存
注意:这样设置之后,你的整个系统流量都会走代理,不只是浏览器。用完记得关掉,不然浏览国内网站会变慢。
Firefox(推荐用于测试)
Firefox可以独立设置代理,不影响系统其他流量:
- 打开 Firefox 设置 → 通用 → 网络设置
- 选择"手动代理配置"
- 填入代理IP、端口,选择对应的协议类型(HTTP/HTTPS/SOCKS5)
- 点击确定
用 Firefox 测试代理IP是最方便的,因为配置独立、切换快,测完关掉就行。
浏览器插件(最便捷)
如果你频繁切换代理IP,装个浏览器插件会方便很多。推荐 SwitchyOmega(Chrome和Firefox都支持):
- 安装 SwitchyOmega 插件
- 新建一个情景模式,填入代理IP、端口、协议类型
- 需要时点击插件图标一键切换
SwitchyOmega 还支持多个代理配置之间快速切换,适合测试不同服务商的代理效果。
方法二:Python 代码中使用代理IP
Python 是代理IP最常见的应用场景之一,爬虫、数据采集、API调用都需要代理。
requests 库(最简单)
import requests
# 普通代理
proxies = {
"http": "http://代理IP:端口",
"https": "http://代理IP:端口"
}
resp = requests.get("https://httpbin.org/ip", proxies=proxies)
print(resp.json())
带用户名密码的代理:
proxies = {
"http": "http://用户名:密码@代理IP:端口",
"https": "http://用户名:密码@代理IP:端口"
}
resp = requests.get("https://httpbin.org/ip", proxies=proxies)
隧道代理(最简单的爬虫代理方案)
隧道代理不需要管IP切换,配一个固定地址就行:
import requests
# 隧道代理:固定地址,自动换IP
proxies = {
"http": "http://隧道域名:端口",
"https": "http://隧道域名:端口"
}
# 每次请求背后都是不同的出口IP
for i in range(10):
resp = requests.get("https://httpbin.org/ip", proxies=proxies)
print(f"第{i+1}次请求,出口IP: {resp.json()['origin']}")
这就是隧道代理最大的好处——你只管发请求,IP切换由服务端自动完成。
Scrapy 中使用代理
如果你用 Scrapy 框架做爬虫,可以在中间件里配置代理:
# middlewares.py
class ProxyMiddleware:
def process_request(self, request, spider):
request.meta['proxy'] = "http://代理IP:端口"
# 如果代理需要认证
# request.headers['Proxy-Authorization'] = 'Basic ' + base64.b64encode(b'user:pass').decode()
然后在 settings.py 中启用这个中间件:
DOWNLOADER_MIDDLEWARES = {
'myproject.middlewares.ProxyMiddleware': 543,
}
Selenium 中使用代理
有些网页需要浏览器渲染,Selenium 是常用选择。给 Selenium 配代理稍微复杂一点:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://代理IP:端口')
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://httpbin.org/ip")
print(driver.page_source)
带认证的代理需要额外处理,可以参考 selenium-wire 这个库,它支持代理认证:
from seleniumwire import webdriver
options = {
'proxy': {
'http': 'http://用户名:密码@代理IP:端口',
'https': 'http://用户名:密码@代理IP:端口',
}
}
driver = webdriver.Chrome(seleniumwire_options=options)
方法三:命令行中使用代理IP
有些场景下你需要在命令行里走代理,比如用 curl、wget 发请求。
curl
# 普通代理
curl -x http://代理IP:端口 https://httpbin.org/ip
# 带认证的代理
curl -x http://用户名:密码@代理IP:端口 https://httpbin.org/ip
wget
wget -e use_proxy=yes -e http_proxy=代理IP:端口 https://httpbin.org/ip
设置系统环境变量(影响全部命令行工具)
export http_proxy="http://代理IP:端口"
export https_proxy="http://代理IP:端口"
# 测试
curl https://httpbin.org/ip
# 用完取消
unset http_proxy https_proxy
怎么验证代理IP是否生效
配完之后,你肯定想知道这东西到底有没有在用。最简单的办法是访问 httpbin.org/ip,它能返回你当前的出口IP。
import requests
# 不用代理
resp = requests.get("https://httpbin.org/ip")
print("本机IP:", resp.json()['origin'])
# 用代理
proxies = {"http": "http://代理IP:端口", "https": "http://代理IP:端口"}
resp = requests.get("https://httpbin.org/ip", proxies=proxies)
print("代理IP:", resp.json()['origin'])
如果两个IP不一样,说明代理配置生效了。
常见的验证网站还有:
https://httpbin.org/ip—— 返回IP最简单https://ip.sb—— 返回更详细的信息https://www.ipip.net/ip.html—— 中文界面,能看到IP归属地
常见问题排查
连不上代理
- 检查IP和端口是否正确
- 检查防火墙是否拦截了代理端口
- 确认代理服务没有过期或欠费
能连上但访问某些网站报错
- 可能是代理IP被目标网站标记了,换一个IP试试
- 如果用的是HTTP代理但目标网站是HTTPS,确认代理支持HTTPS
代理生效了但速度很慢
- 在晚高峰时段代理会比较慢,这是带宽共享导致的
- 如果你对速度要求高,选独享带宽的代理套餐
Python 代码报 ProxyError
- 检查代理地址拼写是否正确
- 确认网络环境能连通代理服务器
- 尝试
timeout参数设置合理的超时秒数,比如timeout=10
总结
代理IP的使用其实不复杂,核心就是三步:拿信息 → 配进去 → 验证生效。
- 浏览器测试用 Firefox 或 SwitchyOmega 插件最方便
- Python 爬虫直接用 requests 或隧道代理,代码量很少
- 命令行用 curl -x 一句搞定
- 配完之后用 httpbin.org/ip 验证IP是否切换成功
如果你想省去自己折腾换IP的麻烦,可以直接用悟空代理(www.wukongdaili.com)的隧道代理。一个固定地址,背后自动切换出口IP,Python 代码不需要写任何切换逻辑。也提供静态住宅代理和独享代理,适合对IP身份要求更高的场景。先试用再决定,避免踩坑。

