Skip to content

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/ip

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}"
}

# 基础 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
dt1DT代号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())

下一步:SOCKS5代理身份认证

基于 MIT 许可发布