51 lines
1.7 KiB
Python
51 lines
1.7 KiB
Python
import os
|
|
import random
|
|
from typing import List, Dict, Optional
|
|
|
|
# PrivadoVPN SOCKS5 server endpoints across US & EU
|
|
PRIVADO_SOCKS5_HOSTS = [
|
|
"jfk.socks.privado.io", # New York / JFK
|
|
"us-nyc.socks.privado.io", # New York City
|
|
"us-dal.socks.privado.io", # Dallas, TX
|
|
"us-chi.socks.privado.io", # Chicago, IL
|
|
"us-la.socks.privado.io", # Los Angeles, CA
|
|
"ams.socks.privado.io", # Amsterdam
|
|
"fra.socks.privado.io", # Frankfurt
|
|
"lon.socks.privado.io" # London
|
|
]
|
|
|
|
DEFAULT_PRIVADO_USER = "nhqyqsx21846"
|
|
DEFAULT_PRIVADO_PASS = "umjy1xyucnch"
|
|
DEFAULT_PORT = 1080
|
|
|
|
def get_privado_proxy_list() -> List[str]:
|
|
"""
|
|
Builds full socks5:// proxy URLs for all configured Privado servers.
|
|
Respects overrides from PRIVADO_USER and PRIVADO_PASS environment variables.
|
|
"""
|
|
user = os.getenv("PRIVADO_USER", DEFAULT_PRIVADO_USER).strip()
|
|
pwd = os.getenv("PRIVADO_PASS", DEFAULT_PRIVADO_PASS).strip()
|
|
|
|
# Also support explicit SOCKS5_PROXY or PROXY_URL list if passed as comma-separated
|
|
custom_proxy = os.getenv("SOCKS5_PROXY") or os.getenv("PROXY_URL") or ""
|
|
if custom_proxy:
|
|
proxies = [p.strip() for p in custom_proxy.split(",") if p.strip()]
|
|
if proxies:
|
|
return proxies
|
|
|
|
proxy_list = []
|
|
for host in PRIVADO_SOCKS5_HOSTS:
|
|
proxy_list.append(f"socks5://{user}:{pwd}@{host}:{DEFAULT_PORT}")
|
|
return proxy_list
|
|
|
|
def get_random_privado_proxy() -> Optional[str]:
|
|
proxies = get_privado_proxy_list()
|
|
if proxies:
|
|
return random.choice(proxies)
|
|
return None
|
|
|
|
def get_rotating_proxy_dict() -> Dict[str, str]:
|
|
proxy = get_random_privado_proxy()
|
|
if proxy:
|
|
return {"http": proxy, "https": proxy}
|
|
return {}
|