Skip to content

Authentication

AdminCloud uses simple username + password authentication with the new k:v-k:v format, no API keys or tokens required, making integration more convenient.

Authentication Format

Basic Format (k:v-k:v)

Username: myuser:password-ip:acpsres-c:US
Password: (leave empty or any value)

Parameter Details

Key-Value PairDescriptionExampleRequired
myuser:passwordUsername and passwordjohn_doe:abc123
ip:acpsresProduct type identifierip:acpsres, ip:acpsstatic, ip:acpsdc
c:USCountry codec:US, c:UK, c:JP
id:12345Session IDid:any_string

Complete Authentication Examples

HTTP Proxy

bash
curl -x gtx.paopaous.net:38082 \
  --proxy-user "myuser:password-ip:acpsres-c:US" \
  -L https://httpbin.org/ip

SOCKS5 Proxy

bash
curl -x "socks5h://myuser:password-ip:acpsres-c:US@gtx.paopaous.net:38082" \
  -L https://httpbin.org/ip

IP Type Description

Type IdentifierDescriptionUse Case
acpsresACPS Dynamic Residential IPWeb scraping, data collection
acpsstaticACPS Static Residential IPScenarios requiring fixed IP
acpsdcACPS Datacenter IPHigh performance, low cost

Country Code List

Major Countries

CodeCountryCodeCountry
USUnited StatesGBUnited Kingdom
CACanadaDEGermany
AUAustraliaFRFrance
JPJapanITItaly
KRSouth KoreaESSpain
SGSingaporeNLNetherlands
HKHong KongSESweden
TWTaiwanNONorway
INIndiaDKDenmark

All Supported Countries

North America: US, CA, MX
Europe: GB, DE, FR, IT, ES, NL, SE, NO, DK, CH, AT, BE, IE, PT, FI, GR
Asia: JP, KR, SG, HK, TW, IN, TH, MY, PH, ID, VN
Oceania: AU, NZ
South America: BR, AR, CL, CO, PE, MX
Middle East: IL, AE, SA, TR
Africa: ZA, EG, MA, NG

Session Management

Session Persistence

By default, each request may use a different IP. To maintain a session (use the same IP), add a session ID:

bash
curl -x gtx.paopaous.net:38082 \
  --proxy-user "myuser:password-ip:acpsres-c:US-id:12345" \
  -L https://httpbin.org/ip

Session Parameters

  • id: Session identifier, maintains same IP for same session
  • Duration: Session persistence time (default: 10 minutes)
  • Rotation: Automatic rotation after session expires

Rotation Control

Default Rotation

Each request uses a different IP automatically.

Session Persistence

Same session ID uses the same IP:

myuser:password-ip:acpsres-c:US-id:12345

Time-based Rotation

Rotate IP at specified time intervals (contact customer service for configuration).

Programming Language Implementation

Python

python
import requests
from bs4 import BeautifulSoup
import urllib3

# Disable SSL warnings (use with caution in production)
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

# Basic authentication
proxies = {
    "http": "http://myuser:password-ip:acpsres-c:US@gtx.paopaous.net:38082",
    "https": "http://myuser:password-ip:acpsres-c:US@gtx.paopaous.net:38082"
}

try:
    response = requests.get("https://httpbin.org/ip", proxies=proxies, verify=False)
    print(f"Basic auth - Status code: {response.status_code}")
    print(f"Basic auth - IP address: {response.json()}")
except Exception as e:
    print(f"Basic auth failed: {e}")

# Session persistence
session_proxies = {
    "http": "http://myuser:password-ip:acpsres-c:US-id:12345@gtx.paopaous.net:38082",
    "https": "http://myuser:password-ip:acpsres-c:US-id:12345@gtx.paopaous.net:38082"
}

try:
    # Multiple requests to test session persistence
    for i in range(3):
        response = requests.get("https://httpbin.org/ip", proxies=session_proxies, verify=False)
        print(f"Session {i+1} - IP address: {response.json()['origin']}")
except Exception as e:
    print(f"Session test failed: {e}")

# Web scraping test
try:
    response = requests.get("https://example.com", proxies=proxies, verify=False)
    print(f"Web scraping - Status code: {response.status_code}")
    
    if response.status_code == 200:
        soup = BeautifulSoup(response.content, 'html.parser')
        title = soup.find('title')
        if title:
            print(f"Page title: {title.get_text()}")
        
        # Extract page information
        links = soup.find_all('a')
        print(f"Page links count: {len(links)}")
        
        # Extract forms
        forms = soup.find_all('form')
        print(f"Page forms count: {len(forms)}")
except Exception as e:
    print(f"Web scraping failed: {e}")

# Error handling test
def test_auth_errors():
    # Test wrong authentication information
    error_configs = [
        "wronguser:wrongpass-ip:acpsres-c:US",  # Wrong username and password
        "myuser:password-ip:wrongtype-c:US",   # Wrong product type
        "myuser:password-ip:acpsres-c:XX",     # Wrong country code
    ]
    
    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"Error test {i+1}: Unexpected success - {response.json()}")
        except requests.exceptions.ProxyError as e:
            print(f"Error test {i+1}: Proxy authentication failed - {str(e)[:50]}...")
        except Exception as e:
            print(f"Error test {i+1}: Other error - {str(e)[:50]}...")

test_auth_errors()

Node.js

javascript
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');
const { SocksProxyAgent } = require('socks-proxy-agent');

// HTTP proxy authentication
const httpProxy = {
  protocol: 'http',
  host: 'gtx.paopaous.net',
  port: 38082,
  auth: {
    username: 'myuser:password-ip:acpsres-c:US',
    password: ''
  }
};

// SOCKS5 proxy authentication
const socksProxyUrl = 'socks5://myuser:password-ip:acpsres-c:US@gtx.paopaous.net:38082';
const socksAgent = new SocksProxyAgent(socksProxyUrl);

// HTTP proxy test
async function testHttpProxy() {
  try {
    const response = await axios.get('https://httpbin.org/ip', {
      proxy: httpProxy
    });
    console.log('HTTP Proxy IP:', response.data.origin);
  } catch (error) {
    console.error('HTTP Proxy Error:', error.message);
  }
}

// SOCKS5 proxy test
async function testSocks5Proxy() {
  try {
    const response = await axios.get('https://httpbin.org/ip', {
      httpsAgent: socksAgent
    });
    console.log('SOCKS5 Proxy IP:', response.data.origin);
  } catch (error) {
    console.error('SOCKS5 Proxy Error:', error.message);
  }
}

// Session persistence test
async function testSessionPersistence() {
  try {
    const sessionProxyUrl = 'socks5://myuser:password-ip:acpsres-c:US-id:12345@gtx.paopaous.net:38082';
    const sessionAgent = new SocksProxyAgent(sessionProxyUrl);
    
    for (let i = 0; i < 3; i++) {
      const response = await axios.get('https://httpbin.org/ip', {
        httpsAgent: sessionAgent
      });
      console.log(`Session ${i+1} IP:`, response.data.origin);
    }
  } catch (error) {
    console.error('Session Test Error:', error.message);
  }
}

// Run all tests
async function runTests() {
  console.log('=== Authentication Tests Started ===');
  await testHttpProxy();
  await testSocks5Proxy();
  await testSessionPersistence();
  console.log('=== Tests Completed ===');
}

runTests();

Java

java
import java.io.*;
import java.net.*;
import java.util.Base64;

public class ProxyAuthExample {
    
    public static void testHttpProxy() {
        try {
            URL url = new URL("https://httpbin.org/ip");
            Proxy proxy = new Proxy(Proxy.Type.HTTP, 
                new InetSocketAddress("gtx.paopaous.net", 38082));
            
            HttpURLConnection connection = (HttpURLConnection) 
                url.openConnection(proxy);
            
            // Set authentication header
            String authString = "myuser:password-ip:acpsres-c:US:";
            String encodedAuth = Base64.getEncoder().encodeToString(
                authString.getBytes());
            connection.setRequestProperty("Proxy-Authorization", 
                "Basic " + encodedAuth);
            
            BufferedReader reader = new BufferedReader(
                new InputStreamReader(connection.getInputStream()));
            
            String line;
            StringBuilder response = new StringBuilder();
            while ((line = reader.readLine()) != null) {
                response.append(line);
            }
            reader.close();
            
            System.out.println("HTTP Proxy Response: " + response.toString());
            
        } catch (Exception e) {
            System.err.println("HTTP Proxy Error: " + e.getMessage());
        }
    }
    
    public static void main(String[] args) {
        testHttpProxy();
    }
}

Error Handling

Common Authentication Errors

Error CodeDescriptionSolution
407Proxy Authentication RequiredCheck username and password format
401UnauthorizedVerify account status and credentials
403ForbiddenCheck IP whitelist and permissions

Error Examples

python
import requests

# Wrong authentication format
wrong_proxies = {
    "http": "http://wrongformat@gtx.paopaous.net:38082",
    "https": "http://wrongformat@gtx.paopaous.net:38082"
}

try:
    response = requests.get("https://httpbin.org/ip", proxies=wrong_proxies)
    print(response.json())
except requests.exceptions.ProxyError as e:
    print(f"Authentication error: {e}")

Best Practices

1. Use Correct Format

Always use the k:v-k:v format:

Correct: myuser:password-ip:acpsres-c:US
Wrong: myuser:ip:res-c:US:password

2. Session Management

Use session IDs for applications requiring consistent IP:

myuser:password-ip:acpsres-c:US-id:unique_session_id

3. Error Handling

Implement proper error handling for authentication failures:

python
try:
    response = requests.get(url, proxies=proxies)
except requests.exceptions.ProxyError:
    # Handle authentication error
    pass

4. Security

  • Store credentials securely
  • Use HTTPS for sensitive requests
  • Implement proper logging and monitoring

Need help? Contact our Technical Support | US | United States | GB | United Kingdom | | CA | Canada | DE | Germany | | AU | Australia | FR | France | | JP | Japan | NL | Netherlands | | SG | Singapore | IT | Italy | | ES | Spain | SE | Sweden |

European Region

CodeCountryCodeCountry
NONorwayDKDenmark
FIFinlandCHSwitzerland
ATAustriaBEBelgium
PLPolandCZCzech Republic

Asia-Pacific Region

CodeCountryCodeCountry
KRKoreaINIndia
HKHong KongTWTaiwan
THThailandMYMalaysia

Session Management

Session Persistence

To use the same IP across multiple requests, add session ID:

bash
curl -x gtx.paopaous.net:38082 \
  --proxy-user "myuser:ip:res-c:US:sid-12345:your_password_here" \
  -L https://httpbin.org/ip

Session Parameters

ParameterDescriptionExample
sidSession ID identifiersid-
12345Custom session stringAny alphanumeric string

Rotation Control

  • Default: Rotate IP for each request
  • Session Persistence: Same session ID uses same IP
  • Time-based Rotation: Rotate by time interval (contact customer service)

Programming Language Implementation

Python

python
import requests

# Basic authentication
proxies = {
    "http": "http://myuser:ip:res-c:US:your_password_here@gtx.paopaous.net:38082",
    "https": "http://myuser:ip:res-c:US:your_password_here@gtx.paopaous.net:38082"
}

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

# Session persistence
session_proxies = {
    "http": "http://myuser:ip:res-c:US:sid-12345:your_password_here@gtx.paopaous.net:38082",
    "https": "http://myuser:ip:res-c:US:sid-12345:your_password_here@gtx.paopaous.net:38082"
}

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

Node.js

javascript
const axios = require('axios');

// HTTP proxy authentication
const httpProxy = {
  protocol: 'http',
  host: 'gtx.paopaous.net',
  port: 38082,
  auth: {
    username: 'myuser:ip:res-c:US',
    password: 'your_password_here'
  }
};

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

// SOCKS5 proxy authentication
const { SocksProxyAgent } = require('socks-proxy-agent');
const socksAgent = new SocksProxyAgent('socks5h://myuser:ip:res-c:US:your_password_here@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 settings
        Proxy proxy = new Proxy(Proxy.Type.HTTP, 
            new InetSocketAddress("gtx.paopaous.net", 38082));
        
        // Create connection
        URL url = new URL("https://httpbin.org/ip");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);
        
        // Set authentication
        String authString = "myuser:ip:res-c:US:your_password_here";
        String encodedAuth = Base64.getEncoder().encodeToString(authString.getBytes());
        conn.setRequestProperty("Proxy-Authorization", "Basic " + encodedAuth);
        
        // Send request
        BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        reader.close();
    }
}

Error Handling

Common Authentication Errors

407 Proxy Authentication Required

Cause: Authentication information error or missing Solution: Check username and password format

python
import requests

def test_auth():
    # Test different authentication formats
    auth_configs = [
        "myuser:ip:res-c:US:your_password_here",  # Correct format
        "myuser:ip:res-c:US",                    # Missing password
        "myuser:ip:res-c",                       # Missing country and password
        "invalid_user:ip:res-c:US:pass"          # Wrong username
    ]
    
    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"✓ Authentication successful: {auth}")
            
        except requests.exceptions.ProxyError as e:
            print(f"✗ Authentication failed: {auth} - {e}")
        except Exception as e:
            print(f"✗ Other error: {auth} - {e}")

test_auth()

Connection Timeout

Cause: Network issues or proxy server delay Solution: Increase timeout or retry

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"Request timeout, retrying... ({attempt + 1}/{max_retries})")
                time.sleep(2 ** attempt)  # Exponential backoff
            else:
                raise
        except Exception as e:
            print(f"Request failed: {e}")
            raise

proxies = {
    "http": "http://myuser:ip:res-c:US:your_password_here@gtx.paopaous.net:38082",
    "https": "http://myuser:ip:res-c:US:your_password_here@gtx.paopaous.net:38082"
}

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

Security Best Practices

1. Password Protection

  • Don't hardcode passwords in code
  • Use environment variables to store sensitive information
  • Change proxy passwords regularly
python
import os
import requests

# Get password from environment variables
proxy_password = os.getenv('PROXY_PASSWORD')
proxy_user = "myuser:ip:res-c:US"

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. Error Log Handling

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"Request successful: {url}")
        return response
    except requests.exceptions.ProxyError as e:
        logger.error(f"Proxy authentication failed: {e}")
        # Don't log sensitive information
    except Exception as e:
        logger.error(f"Request failed: {e}")
        raise

proxies = {
    "http": "http://myuser:ip:res-c:US:your_password_here@gtx.paopaous.net:38082",
    "https": "http://myuser:ip:res-c:US:your_password_here@gtx.paopaous.net:38082"
}

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

3. Connection Pool Management

python
import requests
from requests.adapters import HTTPAdapter

session = requests.Session()

# Configure connection pool
adapter = HTTPAdapter(
    max_retries=3,
    pool_connections=10,
    pool_maxsize=20
)

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

proxies = {
    "http": "http://myuser:ip:res-c:US:your_password_here@gtx.paopaous.net:38082",
    "https": "http://myuser:ip:res-c:US:your_password_here@gtx.paopaous.net:38082"
}

# Reuse connections
for i in range(5):
    response = session.get("https://httpbin.org/ip", proxies=proxies)
    print(f"Request {i+1}: {response.json()['origin']}")

Next: Proxy Configuration

基于 MIT 许可发布