195 lines
4.8 KiB
Python
195 lines
4.8 KiB
Python
"""
|
||
小红书代理IP配置
|
||
用于在无头浏览器中使用代理IP防止风控
|
||
"""
|
||
|
||
# 代理IP池配置
|
||
PROXY_POOL = [
|
||
{
|
||
"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",
|
||
"server": "http://36.137.177.131:50001",
|
||
"username": "qqwvy0",
|
||
"password": "mun3r7xz",
|
||
"enabled": False
|
||
}, {
|
||
"name": "天启02",
|
||
"server": "http://111.132.40.72:50002",
|
||
"username": "ih3z07",
|
||
"password": "078bt7o5",
|
||
"enabled": False
|
||
}, {
|
||
"name": "天启03",
|
||
"server": "http://210.51.27.194:50001",
|
||
"username": "hb6su3",
|
||
"password": "acv2ciow",
|
||
"enabled": False
|
||
}
|
||
]
|
||
|
||
|
||
def get_proxy_config(index: int = 0) -> dict:
|
||
"""
|
||
获取指定索引的代理配置
|
||
|
||
Args:
|
||
index: 代理索引(0-4)
|
||
|
||
Returns:
|
||
代理配置字典,包含server、username、password
|
||
"""
|
||
if index < 0 or index >= len(PROXY_POOL):
|
||
raise ValueError(f"代理索引无效: {index},有效范围: 0-{len(PROXY_POOL) - 1}")
|
||
|
||
proxy = PROXY_POOL[index]
|
||
if not proxy.get("enabled", True):
|
||
raise ValueError(f"代理已禁用: {proxy['name']}")
|
||
|
||
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"]
|
||
}
|
||
for p in PROXY_POOL
|
||
if p.get("enabled", True)
|
||
]
|
||
|
||
|
||
def get_random_proxy() -> dict:
|
||
"""
|
||
随机获取一个可用的代理配置
|
||
|
||
Returns:
|
||
代理配置字典
|
||
"""
|
||
import random
|
||
enabled_proxies = [p for p in PROXY_POOL if p.get("enabled", True)]
|
||
|
||
if not enabled_proxies:
|
||
raise ValueError("没有可用的代理")
|
||
|
||
proxy = random.choice(enabled_proxies)
|
||
return {
|
||
"server": proxy["server"],
|
||
"username": proxy["username"],
|
||
"password": proxy["password"],
|
||
"name": proxy["name"]
|
||
}
|
||
|
||
|
||
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']
|
||
}
|
||
|
||
|
||
# 快捷访问函数(保持向后兼容)
|
||
def get_proxy_1():
|
||
"""获取代理01配置"""
|
||
return get_proxy_config(0)
|
||
|
||
|
||
def get_proxy_2():
|
||
"""获取代理02配置"""
|
||
return get_proxy_config(1)
|
||
|
||
|
||
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)
|