Files
ai_wht_wechat/backend/damai_proxy_config.py

195 lines
4.8 KiB
Python
Raw Normal View History

2026-01-06 19:36:42 +08:00
"""
2026-01-07 22:55:12 +08:00
小红书代理IP配置
用于在无头浏览器中使用代理IP防止风控
2026-01-06 19:36:42 +08:00
"""
2026-01-07 22:55:12 +08:00
# 代理IP池配置
PROXY_POOL = [
2026-01-06 19:36:42 +08:00
{
2026-01-07 22:55:12 +08:00
"name": "代理01",
"server": "http://60.188.239.186:3101", # 如果支持SOCKS5改为 socks5://...
"username": "46vTEIvZt",
"password": "gM33AFND",
"enabled": False # HTTP代理不支持HTTPS隧道暂时禁用
},
{
"name": "代理02",
"server": "http://222.94.104.232:4201",
"username": "46azrCOcF",
"password": "WKyKYE6P",
"enabled": False # HTTP代理不支持HTTPS隧道暂时禁用
},
{
"name": "代理03",
"server": "http://125.94.108.2:4601",
"username": "46eX9tk99",
"password": "odtvKjpl",
"enabled": False # HTTP代理不支持HTTPS隧道暂时禁用
},
{
"name": "代理04",
"server": "http://113.24.66.191:3601",
"username": "46r74jRaD",
"password": "WjOXiXjq",
"enabled": False # HTTP代理不支持HTTPS隧道暂时禁用
},
{
"name": "代理05",
"server": "http://113.249.158.23:4401",
"username": "46oKu9Ovb",
"password": "4kWUGkNv",
"enabled": False # HTTP代理不支持HTTPS隧道暂时禁用
}, {
"name": "天启01",
2026-01-06 19:36:42 +08:00
"server": "http://36.137.177.131:50001",
"username": "qqwvy0",
"password": "mun3r7xz",
2026-01-07 22:55:12 +08:00
"enabled": False
}, {
"name": "天启02",
2026-01-06 19:36:42 +08:00
"server": "http://111.132.40.72:50002",
"username": "ih3z07",
"password": "078bt7o5",
2026-01-10 21:46:50 +08:00
"enabled": True
2026-01-07 22:55:12 +08:00
}, {
"name": "天启03",
"server": "http://210.51.27.194:50001",
"username": "hb6su3",
"password": "acv2ciow",
2026-01-10 21:46:50 +08:00
"enabled": False
2026-01-06 19:36:42 +08:00
}
]
def get_proxy_config(index: int = 0) -> dict:
"""
获取指定索引的代理配置
Args:
2026-01-07 22:55:12 +08:00
index: 代理索引0-4
2026-01-06 19:36:42 +08:00
Returns:
代理配置字典包含serverusernamepassword
"""
2026-01-07 22:55:12 +08:00
if index < 0 or index >= len(PROXY_POOL):
raise ValueError(f"代理索引无效: {index},有效范围: 0-{len(PROXY_POOL) - 1}")
proxy = PROXY_POOL[index]
2026-01-06 19:36:42 +08:00
if not proxy.get("enabled", True):
raise ValueError(f"代理已禁用: {proxy['name']}")
2026-01-07 22:55:12 +08:00
2026-01-06 19:36:42 +08:00
return {
"server": proxy["server"],
"username": proxy["username"],
"password": proxy["password"]
}
def get_all_enabled_proxies() -> list:
"""
获取所有已启用的代理配置
Returns:
代理配置列表
"""
return [
{
"server": p["server"],
"username": p["username"],
"password": p["password"],
"name": p["name"]
}
2026-01-07 22:55:12 +08:00
for p in PROXY_POOL
2026-01-06 19:36:42 +08:00
if p.get("enabled", True)
]
def get_random_proxy() -> dict:
"""
随机获取一个可用的代理配置
Returns:
代理配置字典
"""
import random
2026-01-07 22:55:12 +08:00
enabled_proxies = [p for p in PROXY_POOL if p.get("enabled", True)]
2026-01-06 19:36:42 +08:00
if not enabled_proxies:
raise ValueError("没有可用的代理")
2026-01-07 22:55:12 +08:00
2026-01-06 19:36:42 +08:00
proxy = random.choice(enabled_proxies)
return {
"server": proxy["server"],
"username": proxy["username"],
"password": proxy["password"],
"name": proxy["name"]
}
2026-01-07 22:55:12 +08:00
def format_proxy_url(proxy_config: dict) -> str:
"""
将代理配置格式化为Playwright可用的代理URL
Args:
proxy_config: 代理配置字典
Returns:
格式化的代理URL: http://username:password@host:port
"""
server = proxy_config['server'].replace('http://', '').replace('https://', '')
username = proxy_config['username']
password = proxy_config['password']
return f"http://{username}:{password}@{server}"
def format_proxy_for_playwright(proxy_config: dict) -> dict:
"""
将代理配置格式化为Playwright的proxy字典格式
Args:
proxy_config: 代理配置字典
Returns:
Playwright proxy配置: {"server": "...", "username": "...", "password": "..."}
"""
return {
"server": proxy_config['server'],
"username": proxy_config['username'],
"password": proxy_config['password']
}
# 快捷访问函数(保持向后兼容)
2026-01-06 19:36:42 +08:00
def get_proxy_1():
2026-01-07 22:55:12 +08:00
"""获取代理01配置"""
2026-01-06 19:36:42 +08:00
return get_proxy_config(0)
def get_proxy_2():
2026-01-07 22:55:12 +08:00
"""获取代理02配置"""
2026-01-06 19:36:42 +08:00
return get_proxy_config(1)
2026-01-07 22:55:12 +08:00
def get_proxy_3():
"""获取代理03配置"""
return get_proxy_config(2)
def get_proxy_4():
"""获取代理04配置"""
return get_proxy_config(3)
def get_proxy_5():
"""获取代理05配置"""
return get_proxy_config(4)
def get_proxy_6():
"""获取代理06配置"""
return get_proxy_config(5)
def get_proxy_7():
"""获取代理07配置"""
return get_proxy_config(6)