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 Pair | Description | Example | Required |
|---|---|---|---|
| myuser:password | Username and password | john_doe:abc123 | ✅ |
| ip:acpsres | Product type identifier | ip:acpsres, ip:acpsstatic, ip:acpsdc | ✅ |
| c:US | Country code | c:US, c:UK, c:JP | ✅ |
| id:12345 | Session ID | id:any_string | ❌ |
Complete Authentication Examples
HTTP Proxy
curl -x gtx.paopaous.net:38082 \
--proxy-user "myuser:password-ip:acpsres-c:US" \
-L https://httpbin.org/ipSOCKS5 Proxy
curl -x "socks5h://myuser:password-ip:acpsres-c:US@gtx.paopaous.net:38082" \
-L https://httpbin.org/ipIP Type Description
| Type Identifier | Description | Use Case |
|---|---|---|
| acpsres | ACPS Dynamic Residential IP | Web scraping, data collection |
| acpsstatic | ACPS Static Residential IP | Scenarios requiring fixed IP |
| acpsdc | ACPS Datacenter IP | High performance, low cost |
Country Code List
Major Countries
| Code | Country | Code | Country |
|---|---|---|---|
| US | United States | GB | United Kingdom |
| CA | Canada | DE | Germany |
| AU | Australia | FR | France |
| JP | Japan | IT | Italy |
| KR | South Korea | ES | Spain |
| SG | Singapore | NL | Netherlands |
| HK | Hong Kong | SE | Sweden |
| TW | Taiwan | NO | Norway |
| IN | India | DK | Denmark |
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:
curl -x gtx.paopaous.net:38082 \
--proxy-user "myuser:password-ip:acpsres-c:US-id:12345" \
-L https://httpbin.org/ipSession 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:12345Time-based Rotation
Rotate IP at specified time intervals (contact customer service for configuration).
Programming Language Implementation
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
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
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 Code | Description | Solution |
|---|---|---|
| 407 | Proxy Authentication Required | Check username and password format |
| 401 | Unauthorized | Verify account status and credentials |
| 403 | Forbidden | Check IP whitelist and permissions |
Error Examples
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:password2. Session Management
Use session IDs for applications requiring consistent IP:
myuser:password-ip:acpsres-c:US-id:unique_session_id3. Error Handling
Implement proper error handling for authentication failures:
try:
response = requests.get(url, proxies=proxies)
except requests.exceptions.ProxyError:
# Handle authentication error
pass4. 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
| Code | Country | Code | Country |
|---|---|---|---|
| NO | Norway | DK | Denmark |
| FI | Finland | CH | Switzerland |
| AT | Austria | BE | Belgium |
| PL | Poland | CZ | Czech Republic |
Asia-Pacific Region
| Code | Country | Code | Country |
|---|---|---|---|
| KR | Korea | IN | India |
| HK | Hong Kong | TW | Taiwan |
| TH | Thailand | MY | Malaysia |
Session Management
Session Persistence
To use the same IP across multiple requests, add session ID:
curl -x gtx.paopaous.net:38082 \
--proxy-user "myuser:ip:res-c:US:sid-12345:your_password_here" \
-L https://httpbin.org/ipSession Parameters
| Parameter | Description | Example |
|---|---|---|
| sid | Session ID identifier | sid- |
| 12345 | Custom session string | Any 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
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
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
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
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
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
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
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
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