身份认证
AdminCloud使用简单的用户名+密码认证方式,采用 用户名-dtCode-国家-州-城市:密码 格式,让集成更加简单便捷。
认证格式
新版格式 (用户名-dtCode-地理位置:密码)
用户名: myuser-dt1-US-California-Losangeles
密码: mypassword参数详解
| 参数 | 说明 | 示例 | 必需 |
|---|---|---|---|
| myuser | 用户名 | john_doe | ✅ |
| dt1 | DT代号 | 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/ipSOCKS5代理
bash
curl -x "socks5h://myuser-dt1-US-California-Losangeles:mypassword@您的实际代理服务器:实际端口" \
-L https://httpbin.org/ipDT代号说明
| 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定位:
美国示例
| 州 | 城市 | 认证示例 |
|---|---|---|
| California | Losangeles | myuser-dt1-US-California-Losangeles:mypassword |
| Newyork | Newyork | myuser-dt1-US-Newyork-Newyork:mypassword |
| Texas | Houston | myuser-dt1-US-Texas-Houston:mypassword |
中国示例
| 省 | 城市 | 认证示例 |
|---|---|---|
| Guangdong | Guangzhou | myuser-dt1-CN-Guangdong-Guangzhou:mypassword |
英国示例
| 地区 | 城市 | 认证示例 |
|---|---|---|
| England | London | myuser-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']}")下一步:代理配置