commit
This commit is contained in:
266
backend/DAMAI_PROXY_GUIDE.md
Normal file
266
backend/DAMAI_PROXY_GUIDE.md
Normal file
@@ -0,0 +1,266 @@
|
||||
# 大麦固定代理IP使用指南
|
||||
|
||||
## 📋 概述
|
||||
|
||||
本项目已集成两个大麦固定代理IP,可用于无头浏览器访问,支持完整的HTTP认证。
|
||||
|
||||
## 🌐 代理配置
|
||||
|
||||
### 代理1
|
||||
- **服务器**: `36.137.177.131:50001`
|
||||
- **用户名**: `qqwvy0`
|
||||
- **密码**: `mun3r7xz`
|
||||
- **状态**: ✅ 已测试可用
|
||||
|
||||
### 代理2
|
||||
- **服务器**: `111.132.40.72:50002`
|
||||
- **用户名**: `ih3z07`
|
||||
- **密码**: `078bt7o5`
|
||||
- **状态**: ✅ 已测试可用
|
||||
|
||||
## 📂 相关文件
|
||||
|
||||
| 文件名 | 说明 |
|
||||
|--------|------|
|
||||
| `damai_proxy_config.py` | 代理配置管理模块 |
|
||||
| `test_damai_proxy.py` | 代理测试脚本 |
|
||||
| `example_use_damai_proxy.py` | 使用示例代码 |
|
||||
|
||||
## 🚀 快速开始
|
||||
|
||||
### 1. 测试代理可用性
|
||||
|
||||
```bash
|
||||
# 测试所有代理
|
||||
python test_damai_proxy.py
|
||||
|
||||
# 测试单个代理
|
||||
python test_damai_proxy.py 0 # 测试代理1
|
||||
python test_damai_proxy.py 1 # 测试代理2
|
||||
```
|
||||
|
||||
### 2. 在代码中使用
|
||||
|
||||
#### 方式一:使用配置模块
|
||||
|
||||
```python
|
||||
from damai_proxy_config import get_proxy_1, get_proxy_2, get_random_proxy
|
||||
|
||||
# 获取指定代理
|
||||
proxy = get_proxy_1() # 或 get_proxy_2()
|
||||
|
||||
# 随机获取代理
|
||||
proxy = get_random_proxy()
|
||||
|
||||
print(proxy)
|
||||
# 输出: {'server': 'http://...', 'username': '...', 'password': '...'}
|
||||
```
|
||||
|
||||
#### 方式二:在Playwright中使用
|
||||
|
||||
```python
|
||||
from playwright.async_api import async_playwright
|
||||
from damai_proxy_config import get_proxy_1
|
||||
|
||||
async def use_proxy():
|
||||
proxy_config = get_proxy_1()
|
||||
|
||||
playwright = await async_playwright().start()
|
||||
|
||||
# 配置代理(含认证)
|
||||
browser = await playwright.chromium.launch(
|
||||
headless=True,
|
||||
proxy={
|
||||
"server": proxy_config["server"],
|
||||
"username": proxy_config["username"],
|
||||
"password": proxy_config["password"]
|
||||
}
|
||||
)
|
||||
|
||||
context = await browser.new_context()
|
||||
page = await context.new_page()
|
||||
|
||||
# 访问目标网站
|
||||
await page.goto("https://www.damai.cn/")
|
||||
|
||||
await browser.close()
|
||||
await playwright.stop()
|
||||
```
|
||||
|
||||
#### 方式三:集成到browser_pool
|
||||
|
||||
```python
|
||||
from browser_pool import get_browser_pool
|
||||
from damai_proxy_config import get_random_proxy
|
||||
|
||||
async def use_with_pool():
|
||||
# 获取代理配置
|
||||
proxy = get_random_proxy()
|
||||
|
||||
# 注意:当前browser_pool需要修改以支持带认证的代理
|
||||
pool = get_browser_pool()
|
||||
browser, context, page = await pool.get_browser(
|
||||
proxy=f"{proxy['server']}" # 基础用法
|
||||
)
|
||||
```
|
||||
|
||||
## 🔧 API文档
|
||||
|
||||
### damai_proxy_config.py
|
||||
|
||||
#### `get_proxy_config(index: int) -> dict`
|
||||
获取指定索引的代理配置
|
||||
|
||||
**参数:**
|
||||
- `index`: 代理索引(0或1)
|
||||
|
||||
**返回:**
|
||||
```python
|
||||
{
|
||||
"server": "http://...",
|
||||
"username": "...",
|
||||
"password": "..."
|
||||
}
|
||||
```
|
||||
|
||||
#### `get_proxy_1() -> dict`
|
||||
快捷获取代理1配置
|
||||
|
||||
#### `get_proxy_2() -> dict`
|
||||
快捷获取代理2配置
|
||||
|
||||
#### `get_random_proxy() -> dict`
|
||||
随机获取一个可用代理
|
||||
|
||||
#### `get_all_enabled_proxies() -> list`
|
||||
获取所有已启用的代理列表
|
||||
|
||||
## ✅ 测试结果
|
||||
|
||||
所有代理已通过以下测试:
|
||||
|
||||
1. ✅ **IP检测测试** - 确认代理IP地址正确
|
||||
2. ✅ **小红书访问测试** - 成功访问小红书创作平台
|
||||
3. ✅ **大麦网访问测试** - 成功访问大麦网
|
||||
|
||||
### 测试日志示例
|
||||
|
||||
```
|
||||
🔍 开始测试: 大麦代理1
|
||||
代理服务器: http://36.137.177.131:50001
|
||||
认证信息: qqwvy0 / mun3r7xz
|
||||
============================================================
|
||||
✅ Playwright启动成功
|
||||
✅ 浏览器启动成功
|
||||
✅ 浏览器上下文创建成功
|
||||
✅ 页面创建成功
|
||||
|
||||
📍 测试1: 访问IP检测网站...
|
||||
✅ 访问成功
|
||||
🌐 当前IP信息:
|
||||
{
|
||||
"origin": "36.137.177.131"
|
||||
}
|
||||
|
||||
📍 测试2: 访问小红书登录页...
|
||||
✅ 访问成功
|
||||
页面标题: 小红书创作服务平台
|
||||
|
||||
📍 测试3: 访问大麦网...
|
||||
✅ 访问成功
|
||||
页面标题: 大麦网-全球演出赛事官方购票平台
|
||||
```
|
||||
|
||||
## 🎯 使用场景
|
||||
|
||||
1. **反爬虫绕过** - 使用固定IP避免频繁更换导致的风险
|
||||
2. **地域限制** - 使用特定地区的IP访问区域性内容
|
||||
3. **负载均衡** - 在多个代理间轮换,分散请求压力
|
||||
4. **容错处理** - 一个代理失败时自动切换到备用代理
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
1. **认证信息安全**: 代理用户名密码已配置在代码中,生产环境建议使用环境变量
|
||||
2. **代理轮换**: 建议实现代理轮换机制,避免单一IP被封禁
|
||||
3. **异常处理**: 建议添加代理失败时的重试和切换逻辑
|
||||
4. **性能影响**: 使用代理会增加网络延迟,请根据实际需求权衡
|
||||
|
||||
## 🔄 代理管理
|
||||
|
||||
### 启用/禁用代理
|
||||
|
||||
编辑 `damai_proxy_config.py`,修改代理配置中的 `enabled` 字段:
|
||||
|
||||
```python
|
||||
DAMAI_PROXY_POOL = [
|
||||
{
|
||||
"name": "大麦代理1",
|
||||
"server": "http://36.137.177.131:50001",
|
||||
"username": "qqwvy0",
|
||||
"password": "mun3r7xz",
|
||||
"enabled": True # 设置为False禁用此代理
|
||||
},
|
||||
# ...
|
||||
]
|
||||
```
|
||||
|
||||
### 添加新代理
|
||||
|
||||
在 `DAMAI_PROXY_POOL` 列表中添加新的代理配置:
|
||||
|
||||
```python
|
||||
{
|
||||
"name": "新代理",
|
||||
"server": "http://ip:port",
|
||||
"username": "username",
|
||||
"password": "password",
|
||||
"enabled": True
|
||||
}
|
||||
```
|
||||
|
||||
## 📊 性能测试
|
||||
|
||||
根据测试结果,代理响应时间:
|
||||
- IP检测: ~2-3秒
|
||||
- 小红书: ~3-5秒
|
||||
- 大麦网: ~3-5秒
|
||||
|
||||
## 🛠️ 故障排查
|
||||
|
||||
### 问题1: 代理连接超时
|
||||
**解决方案**:
|
||||
1. 检查代理服务器是否在线
|
||||
2. 验证认证信息是否正确
|
||||
3. 增加连接超时时间
|
||||
|
||||
### 问题2: 认证失败
|
||||
**解决方案**:
|
||||
1. 确认用户名密码正确
|
||||
2. 检查代理是否需要IP白名单
|
||||
3. 联系代理服务商确认账户状态
|
||||
|
||||
### 问题3: 访问被拒绝
|
||||
**解决方案**:
|
||||
1. 切换到另一个代理
|
||||
2. 检查目标网站是否封禁了代理IP
|
||||
3. 添加适当的请求头和延迟
|
||||
|
||||
## 📝 更新日志
|
||||
|
||||
### 2025-12-26
|
||||
- ✅ 初始化大麦代理配置
|
||||
- ✅ 完成两个代理的测试验证
|
||||
- ✅ 创建配置管理模块
|
||||
- ✅ 添加使用示例和文档
|
||||
|
||||
## 📞 技术支持
|
||||
|
||||
如遇到代理相关问题,请检查:
|
||||
1. 网络连接是否正常
|
||||
2. 代理服务商是否有公告
|
||||
3. 代理配置是否正确
|
||||
|
||||
---
|
||||
|
||||
**最后更新**: 2025-12-26
|
||||
**版本**: 1.0.0
|
||||
Reference in New Issue
Block a user