ProxyOmega Documentation
Welcome to ProxyOmega's developer documentation. Build powerful applications with our high-performance proxy network.
Instant Setup
Get up and running in minutes with auto-configuration and ready-to-use connection examples.
195+ Countries
Access 40M+ residential IPs and 1M+ mobile IPs with city and state-level targeting.
99.9% Uptime
Enterprise infrastructure with automatic failover and 24/7 monitoring for maximum reliability.
What is ProxyOmega?
ProxyOmega is a premium proxy service provider offering residential, mobile, ISP, and IPv6 proxies for web scraping, data collection, and privacy protection. Our network is built for scale, speed, and reliability.
Why Choose ProxyOmega?
- High Success Rates: Industry-leading success rates with low IP scores and clean residential IPs
- Flexible Pricing: Choose between unlimited bandwidth plans or pay-as-you-go options
- Advanced Features: Session control, geo-targeting, automatic rotation, and more
- Expert Support: 24/7 technical support with priority assistance for premium plans
- 30-Day Guarantee: Risk-free trial with money-back guarantee
Quick Start Guide
Follow these simple steps to start using ProxyOmega proxies in your applications.
Step 1: Get Your Credentials
Log in to your ProxyOmega dashboard to find your username and password. These credentials will be used for proxy authentication.
Step 2: Choose Your Proxy Type
Available Proxy Types
- Unlimited Residential: 2M+ IPs across US, GB, DE with unlimited bandwidth
- Platinum Residential: 40M+ premium IPs in 195+ countries, pay-per-GB
- Mobile Proxies: 1M+ real 3G/4G/5G device IPs with carrier-grade quality
- ISP Static: Ultra-fast datacenter IPs (20-70ms) optimized for sneakers/tickets
- IPv6 Network: 70+ octillion IPs with thread-based pricing
Step 3: Configure Your Application
Here's a basic example using cURL:
# Basic proxy request
curl -x http://username:[email protected]:10000 https://example.com
# With country targeting
curl -x http://username-country_US:[email protected]:10000 https://example.com
Authentication
ProxyOmega supports multiple authentication methods to secure your proxy connections.
Username/Password Authentication
The most common authentication method. Use your ProxyOmega credentials in the proxy URL:
http://username:password@proxy-server:port
IP Whitelist Authentication
For enhanced security, you can whitelist specific IP addresses that are allowed to use your proxies without credentials.
Session Management
Control session persistence using username parameters:
Parameter | Description | Example |
---|---|---|
session |
Maintain same IP for duration | username-session_123456 |
country |
Target specific country | username-country_US |
city |
Target specific city | username-city_newyork |
Proxy Endpoints
Connect to our proxy network using your dashboard credentials. Username format: emailprefix_userid
Unlimited Residential Proxies
Endpoint | residential.proxyomega.com |
Port Range | 10000-10XXX (based on threads purchased) |
Protocol | HTTP/HTTPS/SOCKS5 |
Default Rotation | 3 minutes |
Concurrency | 60 threads per port |
Example: 25 threads = ports 10000-10024, each supporting 60 concurrent connections
Platinum Residential Proxies
Endpoint | platinum.proxyomega.com |
Port | 20228 |
Protocol | HTTP/HTTPS/SOCKS5 |
Default Rotation | Rotate on request |
Location targeting via username parameters
Mobile Proxies
Endpoint | mobile.proxyomega.com |
Port | 20229 |
Protocol | HTTP/HTTPS/SOCKS5 |
Default Rotation | Rotate on request |
Real 4G/5G mobile IPs with carrier rotation
ISP Static Proxies
Type | Direct IP:Port credentials |
Format | assigned.ip.address:port |
Port Range | Any port (varies by package) |
Protocol | HTTP/HTTPS or SOCKS5 |
Session | Static (no rotation) |
Dedicated IPs with custom port assignments
IPv6 Network
Endpoint | ipv6.proxyomega.com |
Port | 9000 |
Protocol | HTTP/HTTPS/SOCKS5 |
Default Rotation | Rotate on request |
Thread-based concurrency model
Username Parameters
Customize proxy behavior using username parameters:
Parameter | Format | Example | Supported Types |
---|---|---|---|
country |
-country-{code} | john_123-country-us | All proxy types |
state |
-state-{code} | john_123-country-us-state-ny | Platinum, Mobile only |
city |
-city-{name} | john_123-city-newyork | Platinum, Mobile only |
session |
-session-{id} | john_123-session-abc123 | Platinum, Mobile, IPv6 |
ttl |
-ttl-{minutes} | john_123-ttl-30 | Platinum, Mobile, IPv6 |
API Reference
Manage your ProxyOmega account programmatically with our RESTful API.
Base URL
https://api.proxyomega.com/v1
Authentication
Include your API key in the Authorization header:
curl -H "Authorization: Bearer YOUR_API_KEY" https://api.proxyomega.com/v1/account
Response Format
All API responses are returned in JSON format:
{
"success": true,
"data": {
// Response data
},
"timestamp": "2024-06-13T12:00:00Z"
}
Error Handling
Error responses include helpful information for debugging:
{
"success": false,
"error": {
"code": "INVALID_API_KEY",
"message": "The provided API key is invalid",
"details": {}
}
}
Residential Proxies
Access our premium residential proxy networks with both unlimited and pay-as-you-go options.
Unlimited Residential
Features:
- ✓ Unlimited bandwidth
- ✓ 3 Countries: US, GB, DE
- ✓ Rotating & sticky sessions
- ✓ City-level targeting
- ✓ Low detection rates
- ✓ Auto IP rotation (5 min default)
From $51.99/month
Platinum Residential
Features:
- ✓ Pay-per-GB pricing
- ✓ 195+ Countries coverage
- ✓ Ultra-low IP scores
- ✓ State & city targeting
- ✓ Sticky sessions (TTL control)
- ✓ Priority support
From $4.00/GB
Proxy Generator Configuration
Unlimited Residential Setup
Endpoint | residential.proxyomega.com |
Port Range | 10000 + (0 to threads-1) |
Username Format | emailprefix_userid |
Password | Your API key from dashboard |
Example Configurations:
# 5 threads subscription (ports 10000-10004)
curl -x http://john_123:[email protected]:10000 https://example.com
curl -x http://john_123:[email protected]:10001 https://example.com
# 25 threads subscription (ports 10000-10024)
curl -x http://john_123:[email protected]:10024 https://example.com
# 100 threads subscription (ports 10000-10099)
curl -x http://john_123:[email protected]:10099 https://example.com
Platinum Residential Setup
Endpoint | platinum.proxyomega.com |
Port | 20228 (fixed) |
Username Format | emailprefix_userid-parameters |
Password | Your API key from dashboard |
Location Targeting Examples:
# Random location
curl -x http://john_123:[email protected]:20228 https://example.com
# Country targeting
curl -x http://john_123-country-us:[email protected]:20228 https://example.com
# State targeting
curl -x http://john_123-country-us-state-ca:[email protected]:20228 https://example.com
# City targeting
curl -x http://john_123-city-newyork:[email protected]:20228 https://example.com
# Sticky session with TTL (30 minutes)
curl -x http://john_123-session-abc123-ttl-30:[email protected]:20228 https://example.com
Advanced Usage
Session Control
# Unlimited - Sticky session (maintains IP across requests)
curl -x http://john_123-session-order123:[email protected]:10000 https://example.com
# Platinum - Session with custom TTL (time-to-live in minutes)
curl -x http://john_123-session-cart456-ttl-60:[email protected]:20228 https://example.com
# Force new IP on each request (no session parameter)
curl -x http://john_123:[email protected]:10000 https://example.com
- • Unlimited proxies rotate IPs every 5 minutes by default
- • Use different ports from your range for concurrent connections
- • Platinum proxies support advanced geo-targeting down to ASN level
- • Session IDs can be any alphanumeric string for tracking
Mobile Proxies
Premium 3G/4G/5G mobile IPs from real carrier networks with the highest trust scores.
Key Features
- ✓ 3G/4G/5G carrier networks
- ✓ 195+ Countries coverage
- ✓ Real device IPs
- ✓ Carrier-grade NAT
- ✓ Highest trust scores
- ✓ 2-minute default rotation
- ✓ Carrier targeting
- ✓ 100ms - 500ms latency
From $5.80/GB
Pay only for what you use
Proxy Generator Configuration
Connection Details
Endpoint | mobile.proxyomega.com |
Port | 20229 (fixed) |
Username Format | emailprefix_userid-parameters |
Password | Your API key from dashboard |
Default Rotation | 2 minutes |
Connection Examples
Basic Connections
# Basic mobile proxy connection
curl -x http://john_123:[email protected]:20229 https://example.com
# With country targeting
curl -x http://john_123-country-us:[email protected]:20229 https://example.com
# With state targeting
curl -x http://john_123-country-us-state-tx:[email protected]:20229 https://example.com
Advanced Targeting
# Carrier targeting (US carriers)
curl -x http://john_123-country-us-carrier-verizon:[email protected]:20229 https://example.com
curl -x http://john_123-country-us-carrier-att:[email protected]:20229 https://example.com
curl -x http://john_123-country-us-carrier-tmobile:[email protected]:20229 https://example.com
# City targeting
curl -x http://john_123-city-london:[email protected]:20229 https://example.com
# Session with custom TTL (keep same IP for 30 minutes)
curl -x http://john_123-session-mobile123-ttl-30:[email protected]:20229 https://example.com
# Multiple parameters combined
curl -x http://john_123-country-us-state-ca-city-losangeles-session-app1:[email protected]:20229 https://example.com
Why Mobile Proxies?
Maximum Trust
Mobile IPs have the highest trust scores, making them ideal for sensitive operations.
Real Devices
Genuine mobile device IPs from actual phones and tablets on carrier networks.
Anti-Detection
Nearly impossible to detect or block due to carrier-grade NAT protection.
ISP Static Proxies
Ultra-fast datacenter IPs with residential classification, perfect for speed-critical applications.
Coverage & Features
Available Countries:
Key Benefits:
- ✓ Static IPs (no rotation)
- ✓ Datacenter speed & stability
- ✓ Residential classification
- ✓ Anti-ban technology
- ✓ City-level targeting
- ✓ Dedicated packages
From $1.40/IP/month
Minimum 5 IPs • Volume discounts available
Proxy Configuration
How ISP Proxies Work
ISP proxies are provided as dedicated packages with direct IP:Port access. Each package includes:
- • Fixed IP addresses that don't rotate
- • Direct IP:Port credentials (no hostname)
- • Both HTTP/HTTPS and SOCKS5 support
- • Username/password or IP whitelist authentication
Example Package Configuration:
Format | ip_address:port:username:password |
Ports | Any port number (assigned per package) |
Protocol Support | Same IP can support both HTTP and SOCKS5 |
Connection Examples
Package Credentials Format
# Example ISP package credentials (ports vary by package):
45.123.45.67:3128:user123:pass456
45.123.45.68:8888:user123:pass456
45.123.45.69:12345:user123:pass456
45.123.45.70:55443:user123:pass456
45.123.45.71:9999:user123:pass456
Connection Examples
# HTTP/HTTPS connection
curl -x http://user123:[email protected]:3128 https://example.com
# SOCKS5 connection (same IP, may use same or different port)
curl -x socks5://user123:[email protected]:3128 https://example.com
# With IP whitelist (no auth needed)
curl -x http://45.123.45.67:3128 https://example.com
# Multiple concurrent connections (different IPs)
curl -x http://user123:[email protected]:3128 https://example.com &
curl -x http://user123:[email protected]:8888 https://example.com &
curl -x http://user123:[email protected]:12345 https://example.com &
Optimized Use Cases
👟 Sneaker Copping
Lightning-fast response times for beating sneaker bots and securing limited releases.
🎫 Ticket Purchasing
Low latency connections perfect for high-demand ticket drops and queue systems.
- • ISP proxies are static and never rotate
- • Each IP in your package is dedicated to you
- • Credentials are provided after purchase in your dashboard
- • Both username/password and IP whitelist auth are supported
IPv6 Network
Access the world's largest proxy pool with over 70 octillion unique IPv6 addresses.
Network Specifications
Coverage:
- ✓ 130+ Countries
- ✓ Massive IP diversity
- ✓ Clean IP reputation
- ✓ Dual-stack support (IPv4/IPv6)
Features:
- ✓ Thread-based pricing
- ✓ 3-minute default rotation
- ✓ Bulk pricing available
- ✓ Both HTTP and SOCKS5
From $7.00/day
Thread-based pricing • Unlimited requests per thread
Proxy Generator Configuration
Connection Details
Endpoint | ipv6.proxyomega.com |
Port | 9000 (all threads use same port) |
Username Format | emailprefix_userid-parameters |
Password | Your API key from dashboard |
Default Rotation | 3 minutes |
Thread-Based Model Explained
Unlike traditional proxy services, IPv6 proxies use a unique thread-based pricing model:
What is a Thread?
A thread represents one concurrent connection. You can make unlimited requests through each thread.
How It Works
All threads connect to the same port (9000). The system manages concurrency based on your subscription.
Scalability
Purchase threads based on concurrent connections needed. 100 threads = 100 simultaneous requests.
Connection Examples
Basic Connections
# Basic IPv6 connection
curl -x http://john_123:[email protected]:9000 https://example.com
# With country targeting
curl -x http://john_123-country-us:[email protected]:9000 https://example.com
# Country targeting only for IPv6
curl -x http://john_123-country-de:[email protected]:9000 https://example.com
curl -x http://john_123-country-jp:[email protected]:9000 https://example.com
Thread-Based Concurrency
# Multiple concurrent threads (all use same port!)
# Thread 1
curl -x http://john_123:[email protected]:9000 https://example1.com &
# Thread 2
curl -x http://john_123:[email protected]:9000 https://example2.com &
# Thread 3
curl -x http://john_123:[email protected]:9000 https://example3.com &
# Thread 4 with country targeting
curl -x http://john_123-country-de:[email protected]:9000 https://example4.com &
Note: All threads use port 9000. The proxy server manages concurrency internally based on your subscription.
Advanced Usage
# Session persistence (maintain same IP)
curl -x http://john_123-session-worker1:[email protected]:9000 https://example.com
# Custom TTL (time-to-live)
curl -x http://john_123-ttl-10:[email protected]:9000 https://example.com
# SOCKS5 protocol (if supported)
curl -x socks5://john_123:[email protected]:9000 https://example.com
# Combined parameters (country + session)
curl -x http://john_123-country-jp-session-api1:[email protected]:9000 https://example.com
Pricing Examples
Threads | Daily | Weekly | Monthly | Best For |
---|---|---|---|---|
100 | $7.00 | $43.94 | $126.00 | Small projects |
500 | $35.00 | $219.70 | $630.00 | Medium operations |
1000 | $70.00 | $439.40 | $1,260.00 | Large scale scraping |
5000 | $350.00 | $2,197.00 | $6,300.00 | Enterprise |
- • Each thread allows unlimited requests
- • All concurrent connections use the same port (9000)
- • IPv6 addresses rotate every 3 minutes by default
- • Perfect for high-volume operations requiring IP diversity
JavaScript Examples
Integration examples for Node.js and browser-based applications.
Basic Request with Axios
const axios = require('axios');
const proxy = {
host: 'residential.proxyomega.com',
port: 10000,
auth: {
username: 'your_username',
password: 'your_password'
}
};
axios.get('https://api.example.com/data', { proxy })
.then(response => {
console.log('Response:', response.data);
})
.catch(error => {
console.error('Error:', error.message);
});
Rotating Proxies
class ProxyRotator {
constructor(username, password, portRange = [10000, 10099]) {
this.username = username;
this.password = password;
this.portRange = portRange;
this.currentPort = portRange[0];
}
getNextProxy() {
const proxy = {
host: 'residential.proxyomega.com',
port: this.currentPort,
auth: {
username: this.username,
password: this.password
}
};
this.currentPort++;
if (this.currentPort > this.portRange[1]) {
this.currentPort = this.portRange[0];
}
return proxy;
}
}
// Usage
const rotator = new ProxyRotator('username', 'password');
const proxy = rotator.getNextProxy();
Python Examples
Use ProxyOmega with Python's popular HTTP libraries.
Basic Request with Requests
import requests
proxies = {
'http': 'http://username:[email protected]:10000',
'https': 'http://username:[email protected]:10000'
}
response = requests.get('https://api.example.com/data', proxies=proxies)
print(response.json())
Async Requests with aiohttp
import asyncio
import aiohttp
async def fetch_with_proxy(session, url):
proxy = 'http://username:[email protected]:10000'
async with session.get(url, proxy=proxy) as response:
return await response.json()
async def main():
async with aiohttp.ClientSession() as session:
data = await fetch_with_proxy(session, 'https://api.example.com/data')
print(data)
asyncio.run(main())
PHP Examples
Complete examples for integrating ProxyOmega with PHP applications.
Basic cURL Request
Proxy Rotation Class
['host' => 'residential.proxyomega.com', 'ports' => []],
'platinum' => ['host' => 'platinum.proxyomega.com', 'port' => 20228],
'mobile' => ['host' => 'mobile.proxyomega.com', 'port' => 20229],
'ipv6' => ['host' => 'ipv6.proxyomega.com', 'port' => 9000]
];
private $currentPort = 0;
public function __construct($email, $userId, $apiKey, $threads = 5) {
$emailPrefix = explode('@', $email)[0];
$this->username = $emailPrefix . '_' . $userId;
$this->password = $apiKey;
// Setup unlimited residential ports based on threads
for ($i = 0; $i < $threads; $i++) {
$this->endpoints['unlimited']['ports'][] = 10000 + $i;
}
}
public function request($url, $proxyType = 'unlimited', $params = []) {
$proxy = $this->getProxy($proxyType, $params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXY, $proxy['host']);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy['auth']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
return [
'response' => $response,
'info' => $info,
'proxy_used' => $proxy
];
}
private function getProxy($type, $params = []) {
$username = $this->username;
// Add parameters to username
if (!empty($params['country'])) {
$username .= '-country-' . $params['country'];
}
if (!empty($params['session'])) {
$username .= '-session-' . $params['session'];
}
if (!empty($params['ttl'])) {
$username .= '-ttl-' . $params['ttl'];
}
switch ($type) {
case 'unlimited':
$port = $this->endpoints['unlimited']['ports'][$this->currentPort];
$this->currentPort = ($this->currentPort + 1) % count($this->endpoints['unlimited']['ports']);
return [
'host' => $this->endpoints['unlimited']['host'] . ':' . $port,
'auth' => $username . ':' . $this->password
];
case 'platinum':
return [
'host' => $this->endpoints['platinum']['host'] . ':' . $this->endpoints['platinum']['port'],
'auth' => $username . ':' . $this->password
];
case 'mobile':
return [
'host' => $this->endpoints['mobile']['host'] . ':' . $this->endpoints['mobile']['port'],
'auth' => $username . ':' . $this->password
];
case 'ipv6':
return [
'host' => $this->endpoints['ipv6']['host'] . ':' . $this->endpoints['ipv6']['port'],
'auth' => $username . ':' . $this->password
];
default:
throw new Exception('Invalid proxy type: ' . $type);
}
}
}
// Usage example
$rotator = new ProxyRotator('[email protected]', 123, 'your_api_key_here', 25);
// Unlimited residential request
$result = $rotator->request('https://api.example.com/data', 'unlimited');
echo $result['response'];
// Platinum with country targeting
$result = $rotator->request('https://api.example.com/data', 'platinum', [
'country' => 'us',
'session' => 'order123'
]);
// Mobile with session
$result = $rotator->request('https://api.example.com/data', 'mobile', [
'country' => 'uk',
'ttl' => 30
]);
?>
Guzzle HTTP Client Example
'http://john_123:[email protected]:10000',
'timeout' => 30,
'verify' => false // Disable SSL verification if needed
]);
try {
// Simple GET request
$response = $client->get('https://api.example.com/data');
echo $response->getBody();
// POST request with data
$response = $client->post('https://api.example.com/submit', [
'json' => [
'name' => 'John Doe',
'email' => '[email protected]'
]
]);
echo "Status: " . $response->getStatusCode() . "\n";
echo "Body: " . $response->getBody() . "\n";
} catch (RequestException $e) {
echo "Error: " . $e->getMessage();
if ($e->hasResponse()) {
echo "\nResponse: " . $e->getResponse()->getBody();
}
}
// Using different proxy types with Guzzle
$proxies = [
'unlimited' => 'http://john_123:[email protected]:10000',
'platinum' => 'http://john_123-country-us:[email protected]:20228',
'mobile' => 'http://john_123-session-mob1:[email protected]:20229',
'ipv6' => 'http://john_123:[email protected]:9000'
];
// Rotate through different proxy types
foreach ($proxies as $type => $proxy) {
$client = new Client(['proxy' => $proxy]);
try {
$response = $client->get('https://httpbin.org/ip');
$data = json_decode($response->getBody(), true);
echo "$type proxy IP: " . $data['origin'] . "\n";
} catch (Exception $e) {
echo "$type proxy error: " . $e->getMessage() . "\n";
}
}
?>
Concurrent Requests with Guzzle
$url) {
$port = 10000 + $index; // Assuming you have at least 5 threads
$promises[] = $client->getAsync($url, [
'proxy' => "http://john_123:[email protected]:$port"
]);
}
// Wait for all requests to complete
$responses = Promise\settle($promises)->wait();
// Process responses
foreach ($responses as $index => $response) {
if ($response['state'] === 'fulfilled') {
echo "Request $index succeeded: " . $response['value']->getBody() . "\n";
} else {
echo "Request $index failed: " . $response['reason']->getMessage() . "\n";
}
}
?>
- • Always handle cURL errors and check HTTP status codes
- • Use connection pooling for better performance
- • Set appropriate timeouts to avoid hanging requests
- • Consider using Guzzle for more complex HTTP operations
Go Examples
High-performance proxy integration for Go applications with connection pooling and concurrency.
Basic HTTP Request
package main
import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"time"
)
func main() {
// Configure proxy
proxyURL, err := url.Parse("http://john_123:[email protected]:10000")
if err != nil {
panic(err)
}
// Create HTTP client with proxy
client := &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyURL(proxyURL),
},
Timeout: 30 * time.Second,
}
// Make request
resp, err := client.Get("https://api.example.com/data")
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Printf("Error reading body: %v\n", err)
return
}
fmt.Printf("Status: %d\n", resp.StatusCode)
fmt.Printf("Response: %s\n", string(body))
}
Proxy Manager Struct
package main
import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"strings"
"sync"
"time"
)
type ProxyManager struct {
username string
password string
endpoints map[string]ProxyEndpoint
currentPort int
mu sync.Mutex
}
type ProxyEndpoint struct {
Host string
Ports []int
}
func NewProxyManager(email string, userID int, apiKey string, threads int) *ProxyManager {
emailPrefix := email[:strings.Index(email, "@")]
username := fmt.Sprintf("%s_%d", emailPrefix, userID)
// Setup unlimited residential ports
unlimitedPorts := make([]int, threads)
for i := 0; i < threads; i++ {
unlimitedPorts[i] = 10000 + i
}
return &ProxyManager{
username: username,
password: apiKey,
endpoints: map[string]ProxyEndpoint{
"unlimited": {Host: "residential.proxyomega.com", Ports: unlimitedPorts},
"platinum": {Host: "platinum.proxyomega.com", Ports: []int{20228}},
"mobile": {Host: "mobile.proxyomega.com", Ports: []int{20229}},
"ipv6": {Host: "ipv6.proxyomega.com", Ports: []int{9000}},
},
currentPort: 0,
}
}
func (pm *ProxyManager) GetClient(proxyType string, params map[string]string) (*http.Client, error) {
proxyURL, err := pm.buildProxyURL(proxyType, params)
if err != nil {
return nil, err
}
return &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyURL(proxyURL),
MaxIdleConns: 100,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
},
Timeout: 30 * time.Second,
}, nil
}
func (pm *ProxyManager) buildProxyURL(proxyType string, params map[string]string) (*url.URL, error) {
endpoint, ok := pm.endpoints[proxyType]
if !ok {
return nil, fmt.Errorf("invalid proxy type: %s", proxyType)
}
// Build username with parameters
username := pm.username
if country, ok := params["country"]; ok {
username += "-country-" + country
}
if session, ok := params["session"]; ok {
username += "-session-" + session
}
if ttl, ok := params["ttl"]; ok {
username += "-ttl-" + ttl
}
// Get port
var port int
if proxyType == "unlimited" {
pm.mu.Lock()
port = endpoint.Ports[pm.currentPort]
pm.currentPort = (pm.currentPort + 1) % len(endpoint.Ports)
pm.mu.Unlock()
} else {
port = endpoint.Ports[0]
}
proxyURL := fmt.Sprintf("http://%s:%s@%s:%d", username, pm.password, endpoint.Host, port)
return url.Parse(proxyURL)
}
// Usage example
func main() {
pm := NewProxyManager("[email protected]", 123, "your_api_key", 25)
// Unlimited residential request
client, err := pm.GetClient("unlimited", nil)
if err != nil {
panic(err)
}
resp, err := client.Get("https://httpbin.org/ip")
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Printf("Unlimited proxy response: %s\n", string(body))
// Platinum with country targeting
client, err = pm.GetClient("platinum", map[string]string{
"country": "us",
"session": "test123",
})
if err != nil {
panic(err)
}
resp, err = client.Get("https://httpbin.org/ip")
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ = ioutil.ReadAll(resp.Body)
fmt.Printf("Platinum proxy response: %s\n", string(body))
}
Concurrent Requests
package main
import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"sync"
"time"
)
func makeRequest(proxyURL string, targetURL string, wg *sync.WaitGroup, results chan<- string) {
defer wg.Done()
proxy, _ := url.Parse(proxyURL)
client := &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyURL(proxy),
},
Timeout: 30 * time.Second,
}
resp, err := client.Get(targetURL)
if err != nil {
results <- fmt.Sprintf("Error: %v", err)
return
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
results <- fmt.Sprintf("Success: %s", string(body))
}
func main() {
var wg sync.WaitGroup
results := make(chan string, 10)
// URLs to scrape
urls := []string{
"https://httpbin.org/ip",
"https://httpbin.org/headers",
"https://httpbin.org/user-agent",
"https://api.example.com/data1",
"https://api.example.com/data2",
}
// Use different proxy ports for each request
for i, targetURL := range urls {
wg.Add(1)
port := 10000 + i // Assuming you have at least 5 threads
proxyURL := fmt.Sprintf("http://john_123:[email protected]:%d", port)
go makeRequest(proxyURL, targetURL, &wg, results)
}
// Start a goroutine to close results channel when all requests are done
go func() {
wg.Wait()
close(results)
}()
// Collect results
for result := range results {
fmt.Println(result)
}
}
Advanced HTTP Client with Retry
package main
import (
"context"
"fmt"
"io/ioutil"
"net/http"
"net/url"
"time"
)
type ProxyClient struct {
client *http.Client
maxRetries int
retryDelay time.Duration
}
func NewProxyClient(proxyURL string, maxRetries int) (*ProxyClient, error) {
proxy, err := url.Parse(proxyURL)
if err != nil {
return nil, err
}
transport := &http.Transport{
Proxy: http.ProxyURL(proxy),
MaxIdleConns: 100,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
DisableCompression: true,
}
return &ProxyClient{
client: &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
},
maxRetries: maxRetries,
retryDelay: 2 * time.Second,
}, nil
}
func (pc *ProxyClient) GetWithRetry(ctx context.Context, url string) ([]byte, error) {
var lastErr error
for attempt := 0; attempt <= pc.maxRetries; attempt++ {
if attempt > 0 {
select {
case <-ctx.Done():
return nil, ctx.Err()
case <-time.After(pc.retryDelay):
// Continue with retry
}
}
req, err := http.NewRequestWithContext(ctx, "GET", url, nil)
if err != nil {
return nil, err
}
// Add headers
req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36")
req.Header.Set("Accept", "text/html,application/json")
resp, err := pc.client.Do(req)
if err != nil {
lastErr = err
fmt.Printf("Attempt %d failed: %v\n", attempt+1, err)
continue
}
defer resp.Body.Close()
if resp.StatusCode >= 500 {
lastErr = fmt.Errorf("server error: %d", resp.StatusCode)
fmt.Printf("Attempt %d got status %d\n", attempt+1, resp.StatusCode)
continue
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
lastErr = err
continue
}
return body, nil
}
return nil, fmt.Errorf("max retries exceeded: %v", lastErr)
}
func main() {
// Example with different proxy types
proxies := map[string]string{
"unlimited": "http://john_123:[email protected]:10000",
"platinum": "http://john_123-country-us:[email protected]:20228",
"mobile": "http://john_123-session-mob1:[email protected]:20229",
"ipv6": "http://john_123:[email protected]:9000",
}
ctx := context.Background()
for proxyType, proxyURL := range proxies {
client, err := NewProxyClient(proxyURL, 3)
if err != nil {
fmt.Printf("Error creating %s client: %v\n", proxyType, err)
continue
}
body, err := client.GetWithRetry(ctx, "https://httpbin.org/ip")
if err != nil {
fmt.Printf("%s proxy failed: %v\n", proxyType, err)
continue
}
fmt.Printf("%s proxy response: %s\n", proxyType, string(body))
}
}
- • Use connection pooling by reusing http.Transport
- • Implement context for proper request cancellation
- • Handle retries with exponential backoff for reliability
- • Use goroutines for concurrent requests but respect rate limits
Best Practices
Follow these guidelines to maximize performance and reliability.
✅ Do's
- Use connection pooling for better performance
- Implement retry logic with exponential backoff
- Rotate user agents and headers
- Monitor your usage and set alerts
- Use sticky sessions for multi-step processes
❌ Don'ts
- Don't exceed rate limits of target websites
- Don't use the same session for unrelated requests
- Don't ignore HTTP status codes and errors
- Don't hardcode credentials in your code
- Don't make requests without error handling
Performance Optimization
Frequently Asked Questions
What is the difference between rotating and sticky sessions?
Rotating sessions provide a new IP address for each request, ideal for large-scale data collection. Sticky sessions maintain the same IP for a specified duration (up to 30 minutes), perfect for multi-step processes like login sequences.
How many concurrent connections can I use?
The number of concurrent connections depends on your subscription plan. Residential proxies support up to 1000 concurrent connections, Mobile proxies support up to 100, and ISP proxies support up to 500.
What locations are available?
ProxyOmega offers proxies in 195+ countries with city-level targeting in major regions. Use country codes (US, UK, DE, etc.) in your username string to target specific locations.
Account Management API
Manage user accounts, subscriptions, and billing through our REST API.
Get User Profile
GET /api/auth/me
Retrieve the authenticated user's profile information.
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.proxyomega.com/v1/auth/me
Response
{
"success": true,
"data": {
"user": {
"id": 12345,
"email": "[email protected]",
"name": "John Doe",
"role": "user",
"created_at": "2024-01-15T10:30:00Z",
"email_verified": true,
"two_factor_enabled": false
}
}
}
Update Profile
PUT /api/user/profile
Update user profile information.
curl -X PUT -H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Jane Doe", "company": "ProxyUser Inc"}' \
https://api.proxyomega.com/v1/user/profile
Get Active Subscriptions
GET /api/subscriptions/active
List all active proxy subscriptions for the authenticated user.
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.proxyomega.com/v1/subscriptions/active
Response
{
"success": true,
"data": {
"subscriptions": [
{
"id": "sub_1234567890",
"type": "unlimited",
"status": "active",
"threads": 25,
"price": 183.20,
"billing_cycle": "monthly",
"current_period_end": "2024-07-15T00:00:00Z",
"auto_renew": true
}
]
}
}
Cancel Subscription
POST /api/subscriptions/{id}/cancel
Cancel an active subscription. The subscription remains active until the end of the current billing period.
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
https://api.proxyomega.com/v1/subscriptions/sub_1234567890/cancel
IP Whitelist API
Manage IP whitelist for authentication-free proxy access. Each user can whitelist up to 50 IP addresses.
List Whitelisted IPs
GET /api/proxy/whitelist
Retrieve all whitelisted IP addresses for a specific proxy type.
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.proxyomega.com/v1/proxy/whitelist?type=unlimited"
Response
{
"success": true,
"data": {
"ips": [
{
"id": 1,
"ip_address": "192.168.1.100",
"label": "Office Network",
"created_at": "2024-06-01T10:30:00Z"
},
{
"id": 2,
"ip_address": "10.0.0.50",
"label": "Home VPN",
"created_at": "2024-06-05T15:45:00Z"
}
],
"count": 2,
"max": 50
}
}
Add IP to Whitelist
POST /api/proxy/whitelist/add
Add a new IP address to the whitelist. Maximum 50 IPs per user.
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"ip_address": "203.0.113.45",
"proxy_type": "unlimited",
"label": "Production Server"
}' \
https://api.proxyomega.com/v1/proxy/whitelist/add
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
ip_address |
string | Yes | Valid IPv4 or IPv6 address |
proxy_type |
string | Yes | Proxy type: unlimited, platinum, mobile, isp, ipv6 |
label |
string | No | Optional label for identification |
Remove IP from Whitelist
DELETE /api/proxy/whitelist/remove
Remove an IP address from the whitelist.
curl -X DELETE -H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"id": 12345}' \
https://api.proxyomega.com/v1/proxy/whitelist/remove
Usage Statistics API
Monitor your proxy usage, bandwidth consumption, and connection statistics in real-time.
Get Usage Summary
GET /api/proxy/{type}/usage
Retrieve usage statistics for a specific proxy type over a given time period.
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.proxyomega.com/v1/proxy/unlimited/usage?days=7"
Response
{
"success": true,
"data": {
"usage": [
{
"timestamp": "2024-06-13T12:00:00Z",
"connections": 150,
"bandwidth_gb": 12.5,
"requests": 45000,
"success_rate": 98.5
},
{
"timestamp": "2024-06-13T13:00:00Z",
"connections": 210,
"bandwidth_gb": 18.2,
"requests": 62000,
"success_rate": 99.1
}
],
"summary": {
"total_bandwidth_gb": 245.8,
"total_requests": 1250000,
"average_success_rate": 98.7,
"peak_connections": 290
}
}
}
Get Real-time Metrics
GET /api/proxy/metrics/realtime
Get current real-time proxy metrics including active connections and throughput.
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.proxyomega.com/v1/proxy/metrics/realtime
Response
{
"success": true,
"data": {
"active_connections": 87,
"throughput_mbps": 156.4,
"requests_per_second": 342,
"average_latency_ms": 45,
"error_rate": 0.02,
"proxy_types": {
"unlimited": {
"connections": 45,
"throughput_mbps": 82.3
},
"platinum": {
"connections": 32,
"throughput_mbps": 64.1
},
"mobile": {
"connections": 10,
"throughput_mbps": 10.0
}
}
}
}
Get Bandwidth Usage
GET /api/proxy/bandwidth/{year}/{month}
Get detailed bandwidth usage for a specific month.
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.proxyomega.com/v1/proxy/bandwidth/2024/06
Response
{
"success": true,
"data": {
"month": "2024-06",
"daily_usage": [
{
"date": "2024-06-01",
"bandwidth_gb": 125.4,
"cost": 0.00
},
{
"date": "2024-06-02",
"bandwidth_gb": 143.2,
"cost": 0.00
}
],
"total_bandwidth_gb": 3845.6,
"total_cost": 0.00,
"billing_type": "unlimited"
}
}
Export Usage Report
POST /api/proxy/usage/export
Generate and download a detailed usage report in CSV or JSON format.
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"start_date": "2024-06-01",
"end_date": "2024-06-30",
"format": "csv",
"include_details": true
}' \
https://api.proxyomega.com/v1/proxy/usage/export
Troubleshooting Guide
Common issues and their solutions when using ProxyOmega services.
Connection Issues
🔴 Cannot Connect to Proxy
Symptoms:
- Connection timeout errors
- "Proxy server refusing connections"
- Unable to establish tunnel
Solutions:
- Verify Credentials:
# Test your credentials curl -v -x http://username:[email protected]:10000 http://ipinfo.io
- Check IP Whitelist: Ensure your IP is whitelisted if using IP authentication
- Verify Port Range: Use ports within your allocated range (10000-10099 for residential)
- Test Network Connectivity:
# Check if proxy server is reachable ping residential.proxyomega.com telnet residential.proxyomega.com 10000
Authentication Errors
🟡 407 Proxy Authentication Required
Common Causes:
- Incorrect username or password
- Expired subscription
- Account suspended
- Using wrong proxy type credentials
Solutions:
- Double-check credentials in your dashboard
- Ensure subscription is active
- Verify you're using the correct proxy endpoint
- Reset password if needed
Performance Issues
🐌 Slow Connection Speeds
Troubleshooting Steps:
- Check Latency:
# Measure proxy latency time curl -x http://username:[email protected]:10000 -o /dev/null https://example.com
- Use Geographically Closer Proxies:
# Target specific country for lower latency curl -x http://username-country_US:[email protected]:10000 https://example.com
- Optimize Connection Pool:
- Reuse connections when possible
- Implement connection pooling
- Use HTTP/2 if supported
- Consider Proxy Type:
- ISP proxies: 20-70ms latency (fastest)
- Residential: 100-300ms latency
- Mobile: 100-500ms latency
IP Rotation Issues
🔄 IPs Not Rotating as Expected
Common Issues:
- Using sticky session parameters unintentionally
- Connection pooling maintaining same IP
- Rotation interval set too high
Solutions:
# Force new IP on each request (no session parameter)
curl -x http://username:[email protected]:10000 https://example.com
# Use specific session for sticky IP
curl -x http://username-session_12345:[email protected]:10000 https://example.com
# Set custom rotation interval (mobile proxies)
curl -x http://username-rotate_5m:[email protected]:30000 https://example.com
Error Codes Reference
Error Code | Description | Solution |
---|---|---|
400 |
Bad Request | Check request format and parameters |
401 |
Unauthorized | Verify API key or credentials |
403 |
Forbidden | Check account permissions and subscription |
407 |
Proxy Authentication Required | Provide valid proxy credentials |
429 |
Too Many Requests | Reduce request rate or upgrade plan |
502 |
Bad Gateway | Proxy server issue, retry request |
503 |
Service Unavailable | Temporary outage, check status page |