HTTP代理
HTTP代理是AdminCloud最常用的代理协议,支持HTTP和HTTPS流量,适用于大多数网页抓取和API调用场景。
基础配置
⚠️ 重要提示:本文档中的服务器地址
gtx.paopaous.net和端口38082均为测试地址,实际使用时请以会员中心提供的真实代理服务器地址和端口为准。
代理地址
服务器: 您的实际代理服务器
端口: 实际端口认证格式 (用户名-dtCode-地理位置:密码)
用户名: myuser-dt1-US-California-Losangeles
密码: mypassword使用示例
Curl命令
bash
curl -x 您的实际代理服务器:实际端口 \
--proxy-user "myuser-dt1-US-California-Losangeles:mypassword" \
-L https://httpbin.org/ipPython代码
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}"
}
# 基础 IP 测试
try:
response = requests.get("https://httpbin.org/ip", proxies=proxies)
print(f"状态码: {response.status_code}")
print(f"IP地址: {response.json()}")
except Exception as e:
print(f"IP测试失败: {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)} 个链接")
for link in links[:5]: # 显示前5个链接
href = link.get('href')
text = link.get_text().strip()
if href and text:
print(f"- {text}: {href}")
except Exception as e:
print(f"网页抓取失败: {e}")
# API 调用示例
try:
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
response = requests.get("https://httpbin.org/headers",
proxies=proxies,
headers=headers,
verify=False)
print(f"API状态码: {response.status_code}")
print(f"响应头: {response.json()}")
except Exception as e:
print(f"API调用失败: {e}")Node.js代码
javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');
// 代理配置 - 请替换为实际的服务器地址和端口
const proxyUrl = 'http://myuser-dt1-US-California-Losangeles:mypassword@您的实际代理服务器:实际端口';
const httpsAgent = new HttpsProxyAgent(proxyUrl);
// 基础 IP 测试
async function testIP() {
try {
const response = await axios.get('https://httpbin.org/ip', { httpsAgent });
console.log(`状态码: ${response.status}`);
console.log(`IP地址: ${JSON.stringify(response.data)}`);
} catch (error) {
console.error(`IP测试失败: ${error.message}`);
}
}
// 网页内容获取
async function fetchWebPage() {
try {
const response = await axios.get('https://example.com', {
httpsAgent,
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
});
console.log(`状态码: ${response.status}`);
console.log(`页面标题: ${response.data.match(/<title>(.*?)<\/title>/)?.[1] || '未找到'}`);
console.log(`内容长度: ${response.data.length} 字符`);
} catch (error) {
console.error(`网页获取失败: ${error.message}`);
}
}
// API 调用测试
async function testAPI() {
try {
const response = await axios.get('https://httpbin.org/headers', {
httpsAgent,
headers: {
'Content-Type': 'application/json',
'User-Agent': 'AdminCloud-Proxy/1.0'
}
});
console.log(`API状态码: ${response.status}`);
console.log(`请求头信息: ${JSON.stringify(response.data.headers, null, 2)}`);
} catch (error) {
console.error(`API调用失败: ${error.message}`);
}
}
// 执行所有测试
async function runTests() {
console.log('=== 代理测试开始 ===');
await testIP();
console.log('\n---');
await fetchWebPage();
console.log('\n---');
await testAPI();
console.log('\n=== 测试完成 ===');
}
runTests();参数详解
用户名参数 (用户名-dtCode-地理位置:密码格式)
myuser-dt1-US-California-Losangeles| 参数 | 说明 | 示例 | 必需 |
|---|---|---|---|
| myuser | 用户名 | john_doe | ✅ |
| dt1 | DT代号 | dt1(动态住宅) | ✅ |
| US | 国家代码 | US, UK, JP, DE | ✅ |
| California | 州/省 | California, Guangdong, England | ❌ (可为空) |
| Losangeles | 城市 | Losangeles, Guangzhou, London | ❌ (可为空) |
| mypassword | 代理密码 | 任意字符串 | ✅ |
支持的DT代号
| DT代号 | 说明 | 用途 |
|---|---|---|
| dt1 | 动态住宅IP | 网页抓取、数据采集 |
支持的国家代码
| 代码 | 国家 | 代码 | 国家 |
|---|---|---|---|
| US | 美国 | JP | 日本 |
| UK | 英国 | DE | 德国 |
| CA | 加拿大 | FR | 法国 |
| AU | 澳大利亚 | SG | 新加坡 |
| NL | 荷兰 | IT | 意大利 |
| ES | 西班牙 | SE | 瑞典 |
高级配置
会话保持
默认情况下,每次请求可能使用不同的IP。如需保持会话(使用相同IP),可以在用户名中添加会话ID: 以下展示了在请求中添加会话ID(-id-1234),id取值范围为1-99999
bash
curl -x gtx.paopaous.net:38082 \
--proxy-user "myuser-dt1-US-California-Losangeles-id-1234:mypassword" \
-L https://httpbin.org/ip轮换策略
- 默认: 每次请求轮换IP
- 会话保持: 相同会话ID使用相同IP
- 时间轮换: 按时间间隔轮换(需要联系客服配置)
常见应用场景
网页抓取
python
import requests
from bs4 import BeautifulSoup
proxies = {
"http": "http://myuser-dt1-US-California-Losangeles-id-1234:mypassword@gtx.paopaous.net:38082",
"https": "http://myuser-dt1-US-California-Losangeles-id-1234:mypassword@gtx.paopaous.net:38082"
}
response = requests.get("https://example.com", proxies=proxies)
soup = BeautifulSoup(response.content, 'html.parser')API调用
python
import requests
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"
}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
response = requests.get("https://api.example.com/data",
proxies=proxies,
headers=headers)错误处理
常见错误及解决方案
407 Proxy Authentication Required
原因: 认证信息错误 解决: 检查用户名和密码格式
502 Bad Gateway
原因: 代理服务器问题 解决: 稍后重试或联系客服
连接超时
原因: 网络或代理服务器延迟 解决: 增加超时时间
python
import requests
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"
}
try:
response = requests.get("https://httpbin.org/ip",
proxies=proxies,
timeout=30)
print(response.json())
except requests.exceptions.ProxyError as e:
print(f"代理错误: {e}")
except requests.exceptions.Timeout as e:
print(f"请求超时: {e}")性能优化
连接池配置
python
import requests
from requests.adapters import HTTPAdapter
session = requests.Session()
session.mount('http://', HTTPAdapter(max_retries=3, pool_connections=10))
session.mount('https://', HTTPAdapter(max_retries=3, pool_connections=10))
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 = session.get("https://httpbin.org/ip", proxies=proxies)并发请求
python
import concurrent.futures
import requests
def fetch_url(url):
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"
}
return requests.get(url, proxies=proxies)
urls = ["https://httpbin.org/ip"] * 10
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
futures = [executor.submit(fetch_url, url) for url in urls]
for future in concurrent.futures.as_completed(futures):
print(future.result().json())