Skip to content

身份认证

AdminCloud使用简单的用户名+密码认证方式,采用 用户名-dtCode-国家-州-城市:密码 格式,让集成更加简单便捷。

认证格式

新版格式 (用户名-dtCode-地理位置:密码)

用户名: myuser-dt1-US-California-Losangeles
密码: mypassword

参数详解

参数说明示例必需
myuser用户名john_doe
dt1DT代号dt1(动态住宅)
US国家代码US, UK, JP, DE
California州/省California, Guangdong, England❌ (可为空)
Losangeles城市Losangeles, Guangzhou, London❌ (可为空)
mypassword代理密码任意字符串

完整认证示例

⚠️ 重要提示:本文档中的服务器地址 gtx.paopaous.net 和端口 38082 均为测试地址,实际使用时请以会员中心提供的真实代理服务器地址和端口为准。

HTTP代理

bash
curl -x 您的实际代理服务器:实际端口 \
  --proxy-user "myuser-dt1-US-California-Losangeles:mypassword" \
  -L https://httpbin.org/ip

SOCKS5代理

bash
curl -x "socks5h://myuser-dt1-US-California-Losangeles:mypassword@您的实际代理服务器:实际端口" \
  -L https://httpbin.org/ip

DT代号说明

DT代号说明用途
dt1动态住宅IP网页抓取、数据采集

地理位置选择

国家代码列表

主要国家

代码国家代码国家
US美国GB英国
CA加拿大DE德国
AU澳大利亚FR法国
JP日本NL荷兰
SG新加坡IT意大利
ES西班牙SE瑞典

欧洲地区

代码国家代码国家
NO挪威DK丹麦
FI芬兰CH瑞士
AT奥地利BE比利时
PL波兰CZ捷克

亚太地区

代码国家代码国家
KR韩国IN印度
HK香港TW台湾
TH泰国MY马来西亚

州/省和城市选择

支持精确到州/省和城市的地理位置选择,提供更精准的IP定位:

美国示例

城市认证示例
CaliforniaLosangelesmyuser-dt1-US-California-Losangeles:mypassword
NewyorkNewyorkmyuser-dt1-US-Newyork-Newyork:mypassword
TexasHoustonmyuser-dt1-US-Texas-Houston:mypassword

中国示例

城市认证示例
GuangdongGuangzhoumyuser-dt1-CN-Guangdong-Guangzhou:mypassword

英国示例

地区城市认证示例
EnglandLondonmyuser-dt1-UK-England-London:mypassword

占位符规则

当州或城市选择Any或未选择时,会保留占位符但内容为空:

选择认证格式说明
仅国家myuser-dt1-US---:mypassword州和城市为空占位符
国家+州myuser-dt1-US-California-:mypassword城市为空占位符
完整选择myuser-dt1-US-California-Losangeles:mypassword完整格式
Any国家myuser-dt1-ANY---:mypassword国家为ANY,其他为空占位符

编程语言实现

Python

python
import requests
from bs4 import BeautifulSoup
import urllib3

# 禁用 SSL 警告(生产环境请谨慎使用)
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

# 基础认证
# 注意:请替换为实际的服务器地址和端口
proxy_host = "您的实际代理服务器"
proxy_port = "实际端口"
proxy_user = "myuser-dt1-US-California-Losangeles"
proxy_password = "mypassword"

# 设置代理
proxies = {
    "http": f"http://{proxy_user}:{proxy_password}@{proxy_host}:{proxy_port}",
    "https": f"http://{proxy_user}:{proxy_password}@{proxy_host}:{proxy_port}"
}

try:
    response = requests.get("https://httpbin.org/ip", proxies=proxies, verify=False)
    print(f"基础认证 - 状态码: {response.status_code}")
    print(f"基础认证 - IP地址: {response.json()}")
except Exception as e:
    print(f"基础认证失败: {e}")

# 仅指定国家
country_only_proxies = {
    "http": f"http://{proxy_user}:{proxy_password}@{proxy_host}:{proxy_port}",
    "https": f"http://{proxy_user}:{proxy_password}@{proxy_host}:{proxy_port}"
}

try:
    response = requests.get("https://httpbin.org/ip", proxies=country_only_proxies, verify=False)
    print(f"仅指定国家 - IP地址: {response.json()}")
except Exception as e:
    print(f"仅指定国家失败: {e}")

# 网页抓取测试
try:
    response = requests.get("https://example.com", proxies=proxies, verify=False)
    print(f"网页抓取 - 状态码: {response.status_code}")
    
    if response.status_code == 200:
        soup = BeautifulSoup(response.content, 'html.parser')
        title = soup.find('title')
        if title:
            print(f"网页标题: {title.get_text()}")
        
        # 提取页面信息
        links = soup.find_all('a')
        print(f"页面链接数量: {len(links)}")
        
        # 提取表单
        forms = soup.find_all('form')
        print(f"页面表单数量: {len(forms)}")
except Exception as e:
    print(f"网页抓取失败: {e}")

# 错误处理测试
def test_auth_errors():
    # 测试错误的认证信息
    error_configs = [
        "wronguser:wrongpass-dt1-US-California-Losangeles",  # 错误用户名密码
        "myuser:mypassword-dt3-US-California-Losangeles",   # 错误DT代号
        "myuser:mypassword-dt1-XX-California-Losangeles",   # 错误国家代码
    ]
    
    for i, config in enumerate(error_configs):
        try:
            test_proxies = {
                "http": f"http://{config}@gtx.paopaous.net:38082",
                "https": f"http://{config}@gtx.paopaous.net:38082"
            }
            response = requests.get("https://httpbin.org/ip", proxies=test_proxies, verify=False, timeout=5)
            print(f"错误测试 {i+1}: 意外成功 - {response.json()}")
        except requests.exceptions.ProxyError as e:
            print(f"错误测试 {i+1}: 代理认证失败 - {str(e)[:50]}...")
        except Exception as e:
            print(f"错误测试 {i+1}: 其他错误 - {str(e)[:50]}...")

test_auth_errors()

Node.js

javascript
const axios = require('axios');

// HTTP代理认证
const httpProxy = {
  protocol: 'http',
  host: 'gtx.paopaous.net',
  port: 38082,
  auth: {
    username: 'myuser-dt1-US-California-Losangeles',
    password: 'mypassword'
  }
};

axios.get('https://httpbin.org/ip', { proxy: httpProxy })
  .then(response => console.log(response.data))
  .catch(error => console.error(error));

// SOCKS5代理认证
const { SocksProxyAgent } = require('socks-proxy-agent');
const socksAgent = new SocksProxyAgent('socks5h://myuser-dt1-US-California-Losangeles:mypassword@gtx.paopaous.net:38082');

axios.get('https://httpbin.org/ip', { httpsAgent: socksAgent })
  .then(response => console.log(response.data))
  .catch(error => console.error(error));

Java

java
import java.net.*;
import java.io.*;

public class ProxyAuthExample {
    public static void main(String[] args) throws Exception {
        // 代理设置
        Proxy proxy = new Proxy(Proxy.Type.HTTP, 
            new InetSocketAddress("gtx.paopaous.net", 38082));
        
        // 创建连接
        URL url = new URL("https://httpbin.org/ip");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);
        
        // 设置认证
        String authString = "myuser-dt1-US-California-Losangeles:mypassword";
        String encodedAuth = Base64.getEncoder().encodeToString(authString.getBytes());
        conn.setRequestProperty("Proxy-Authorization", "Basic " + encodedAuth);
        
        // 发送请求
        BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        reader.close();
    }
}

错误处理

常见认证错误

407 Proxy Authentication Required

原因: 认证信息错误或缺失 解决: 检查用户名和密码格式

python
import requests

def test_auth():
    # 测试不同的认证格式
    auth_configs = [
        "myuser:mypassword-dt1-US-California-Losangeles",        # 正确格式
        "myuser:mypassword-dt1-US",                              # 缺少州和城市占位符
        "myuser:mypassword-dt3-US-California-Losangeles",        # 错误DT代号
        "invalid_user:mypassword-dt1-US-California-Losangeles",   # 错误用户名
    ]
    
    for auth in auth_configs:
        try:
            proxies = {
                "http": f"http://{auth}@gtx.paopaous.net:38082",
                "https": f"http://{auth}@gtx.paopaous.net:38082"
            }
            
            response = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
            print(f"✓ 认证成功: {auth}")
            
        except requests.exceptions.ProxyError as e:
            print(f"✗ 认证失败: {auth} - {e}")
        except Exception as e:
            print(f"✗ 其他错误: {auth} - {e}")

test_auth()

连接超时

原因: 网络问题或代理服务器延迟 解决: 增加超时时间或重试

python
import requests
import time

def robust_request(url, proxies, max_retries=3):
    for attempt in range(max_retries):
        try:
            response = requests.get(url, proxies=proxies, timeout=30)
            return response
        except requests.exceptions.Timeout:
            if attempt < max_retries - 1:
                print(f"请求超时,重试中... ({attempt + 1}/{max_retries})")
                time.sleep(2 ** attempt)  # 指数退避
            else:
                raise
        except Exception as e:
            print(f"请求失败: {e}")
            raise

proxies = {
    "http": "http://myuser-dt1-US-California-Losangeles:mypassword@gtx.paopaous.net:38082",
    "https": "http://myuser-dt1-US-California-Losangeles:mypassword@gtx.paopaous.net:38082"
}

response = robust_request("https://httpbin.org/ip", proxies)
print(response.json())

安全最佳实践

1. 密码保护

  • 不要在代码中硬编码密码
  • 使用环境变量存储敏感信息
  • 定期更换代理密码
python
import os
import requests

# 从环境变量获取密码
proxy_password = os.getenv('PROXY_PASSWORD')
proxy_user = "myuser-dt1-US-California-Losangeles"

proxies = {
    "http": f"http://{proxy_user}:{proxy_password}@gtx.paopaous.net:38082",
    "https": f"http://{proxy_user}:{proxy_password}@gtx.paopaous.net:38082"
}

response = requests.get("https://httpbin.org/ip", proxies=proxies)

2. 错误日志处理

python
import logging
import requests

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

def safe_request(url, proxies):
    try:
        response = requests.get(url, proxies=proxies, timeout=30)
        logger.info(f"请求成功: {url}")
        return response
    except requests.exceptions.ProxyError as e:
        logger.error(f"代理认证失败: {e}")
        # 不要记录敏感信息
    except Exception as e:
        logger.error(f"请求失败: {e}")
        raise

proxies = {
    "http": "http://myuser-dt1-US-California-Losangeles:mypassword@gtx.paopaous.net:38082",
    "https": "http://myuser-dt1-US-California-Losangeles:mypassword@gtx.paopaous.net:38082"
}

response = safe_request("https://httpbin.org/ip", proxies)

3. 连接池管理

python
import requests
from requests.adapters import HTTPAdapter

session = requests.Session()

# 配置连接池
adapter = HTTPAdapter(
    max_retries=3,
    pool_connections=10,
    pool_maxsize=20
)

session.mount('http://', adapter)
session.mount('https://', adapter)

proxies = {
    "http": "http://myuser-dt1-US-California-Losangeles:mypassword@gtx.paopaous.net:38082",
    "https": "http://myuser-dt1-US-California-Losangeles:mypassword@gtx.paopaous.net:38082"
}

# 复用连接
for i in range(5):
    response = session.get("https://httpbin.org/ip", proxies=proxies)
    print(f"请求 {i+1}: {response.json()['origin']}")

下一步:代理配置

基于 MIT 许可发布