Session Types
Rotating Sessions
A rotating session does not require a session identifier after the proxy pool tag zone-res. In other words, the default session type is a rotating session.
If you choose a rotating session, each request is assigned a new IP, which makes it ideal for use cases that require a high level of anonymity.
Sticky Sessions
Sticky sessions let you keep a single IP address across multiple requests. To reuse the same IP address repeatedly, append the session-sessid parameter after the proxy pool tag zone-res. One example is session-123eizsdp.
The default session duration is 10 minutes. It can remain active for up to 60 seconds of inactivity (that is, no requests). If no request is sent for 60 seconds or the IP becomes invalid, a new IP address is assigned automatically.
For example, the initial query is assigned proxy IP 1.1.1.1 for sessid-abcde12345. As long as you continue sending new requests with the same session ID and the IP remains online and available, traffic will continue to go through 1.1.1.1. If no further requests are sent within 60 seconds, the system assigns a new proxy IP. As a result, subsequent queries for sessid-abcde12345 will be routed through a backup IP such as 1.1.1.2.
Illustrative credential examples:
USERNAME-zone-res-session-agd6ty6jbayl:PASSWORDUSERNAME-zone-res-session-jke15gnkac39:PASSWORDUSERNAME-zone-res-session-zq7f15gsgfgy:PASSWORDUSERNAME-zone-res-session-5ld641xn6bpu:PASSWORDUSERNAME-zone-res-session-rhads5haqu15:PASSWORDExample:
In this example, the first request uses a US IP with the username session-abcdef123456. All subsequent requests continue to use the same US IP:
cURL
curl -x gateway.ipxss.com:7777 -U "USERNAME-zone-res-region-us-session-abcdef123456:PASSWORD" ipinfo.ipxss.comC/C++
// demo.cpp : Define the entry point of a console application
//
#include "stdafx.h"
#include "curl/curl.h"
#pragma comment(lib, "libcurl.lib")
//cURL callback function
static size_t write_buff_data(char *buffer, size_t size, size_t nitems, void *outstream)
{
//Copy the received data to a buffer
memcpy(outstream, buffer, nitems*size);
return nitems*size;
}
/*
Use an HTTP proxy
*/
int GetUrlHTTP(char *url, char *buff)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_PROXY,"http://proxy server:port");//Set the HTTP proxy address
curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, "USERNAME-zone-res-region-us-session-abcdef123456:PASSWORD");//username and password, separated by ":"
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)buff);//Set read/write buffers
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_buff_data);//Set callback function
curl_easy_setopt(curl, CURLOPT_URL, url);//Set URL address
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 10L);//Set a long integer to control the number of seconds to transfer the bytes defined by CURLOPT_LOW_SPEED_LIMIT
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 50L);//Set a long integer to control the number of bytes to transfer
curl_easy_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE, 2000000L);//Maximum download speed
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
if (res == CURLE_OK){
return res;
}else {
printf("Error code:%d\n", res);
MessageBox(NULL, TEXT("Get IP error"), TEXT("Helper"), MB_ICONINFORMATION | MB_YESNO);
}
}
return res;
}
/*
Don't use a proxy
*/
int GetUrl(char *url, char *buff)
{
CURL *curl;
CURLcode res;
//The cURL library used, initialize the cURL library
curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)buff);//Set read/write buffers
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_buff_data);//Set callback function
curl_easy_setopt(curl, CURLOPT_URL, url);//Set URL address
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 10L);//Set a long integer to control the number of seconds to transfer the bytes defined by CURLOPT_LOW_SPEED_LIMIT
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 50L);//Set a long integer to control the number of bytes to transfer
curl_easy_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE, 2000000L);/*Maximum download speed*/
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
if (res == CURLE_OK)
{
return res;
}
else {
printf("Error code:%d\n", res);
MessageBox(NULL, TEXT("Get IP error"), TEXT("Helper"), MB_ICONINFORMATION | MB_YESNO);
}
}
return res;
}
int main()
{
char *buff=(char*)malloc(1024*1024);
memset(buff, 0, 1024 * 1024);
//Not use an HTTP proxy
GetUrl("http://ipinfo.ipxss.com", buff);
printf("Not use proxy:%s\n", buff);
//Use an HTTP proxy
memset(buff, 0, 1024 * 1024);
GetUrlHTTP("http://ipinfo.ipxss.com", buff);
printf("HTTP result:%s\n", buff);
free(buff);
Sleep(10 * 1000);//Wait 10 seconds and exit
Wait 10 seconds and exit
return 0;
}GO
package main
import (
"context"
"fmt"
"io/ioutil"
"net"
"net/http"
"net/url"
"strings"
"time"
"golang.org/x/net/proxy"
)
// User Pass Auth Setting
var account = "USERNAME-zone-res-region-us-session-abcdef123456"//Proxy_username
var password = "PASSWORD"//Proxy_password
// Proxy server
var proxyServer = "HOST:PORT"//Example:xxx.na.ipxss.com:2336;
// Test URL
var testApi = "http://ipinfo.ipxss.com"
func main() {
go httpProxy(proxyServer, account, password)
time.Sleep(time.Minute)
}
// http proxy
func httpProxy(proxyUrl, user, pass string) {
defer func() {
if err := recover(); err != nil {
fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), "http", "response:", err)
}
}()
urli := url.URL{}
if !strings.Contains(proxyUrl, "http") {
proxyUrl = fmt.Sprintf("http://%s", proxyUrl)
}
urlProxy, _ := urli.Parse(proxyUrl)
if user != "" && pass != "" {
urlProxy.User = url.UserPassword(user, pass)
}
client := &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyURL(urlProxy),
},
}
rqt, err := http.NewRequest("GET", testApi, nil)
if err != nil {
panic(err)
return
}
response, err := client.Do(rqt)
if err != nil {
panic(err)
return
}
defer response.Body.Close()
body, _ := ioutil.ReadAll(response.Body)
fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), proxyUrl, "【http success】", "response:", response.Status, string(body))
return
}Node.js
#!/usr/bin/env node
require('request-promise')({
url: 'http://ipinfo.ipxss.com',//Request URL
proxy: 'http://USERNAME-zone-res-region-us-session-abcdef123456:[email protected]:7777',//proxy username-zone-proxy pool:proxy username@proxy server address
})
.then(function(data){ console.log(data); },
function(err){ console.error(err); });PHP
<?php
//User Pass Auth setting
$user = "USERNAME-zone-res-region-us-session-abcdef123456";//Proxy_username
$password = "PASSWORD";//Proxy_password
// Target URL
$targetUrl = "http://ipinfo.ipxss.com";
// Proxy server
$proxyServer = "proxy address"; //Example:xxx.na.ipxss.com:2336;
$proxyUserPwd = "$user:$password";
// Tunnel verification
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $targetUrl);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// Set proxy server
curl_setopt($ch, CURLOPT_PROXYTYPE, 0); //http
// curl_setopt($ch, CURLOPT_PROXYTYPE, 5); //sock5
curl_setopt($ch, CURLOPT_PROXY, $proxyServer);
// Set tunnel verification information
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;)");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyUserPwd);
$result = curl_exec($ch);
$err = curl_error($ch);
curl_close($ch);
var_dump($err);
var_dump($result);JAVA
package demo;
import okhttp3.Credentials;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
/**
* compile 'com.squareup.okhttp3:okhttp:4.9.3'
*/
class AutProxyJava {
public static void main(String[] args) throws IOException {
testWithOkHttp();
}
/**
* http proxy
*/
public static void testWithOkHttp() throws IOException {
String url = "http://ipinfo.ipxss.com";//Request URL
//Create a proxy object of type HTTP and specify the host name and port number of the proxy server
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("host", "port"));//The "host" and "port" used here should be replaced with the proxy server address and port.
// Build a custom OkHttpClient instance, set up a proxy server and add a proxy authenticator (proxyAuthenticator)
OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).proxyAuthenticator((route, response) -> {
// Generate the credential string for Basic authentication here
String credential = Credentials.basic("USERNAME-zone-res-region-us-session-abcdef123456", "PASSWORD");//The "USERNAME-zone-res-region-us-session-abcdef123456" and "PASSWORD" here should be replaced with proxy username and proxy password.
// If proxy server needs authentication, please add authentication information in request head.
return response.request().newBuilder()
.header("Proxy-Authorization", credential)
.build();
}).build();
//Send GET Request and get response
Request request = new Request.Builder().url(url).build();
okhttp3.Response response = client.newCall(request).execute();
//Get and print response
String responseString = response.body().string();
System.out.println(responseString);
}Python
'''
Import thread, time and request package)
to realize multiple thread control, waiting and http request)
'''
import _thread
import time
import requests
# Set request head
headers = {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60 MicroMessenger/6.5.19 NetType/4G Language/zh_TW",
}
# Test URL
mainUrl = 'http://ipinfo.ipxss.com'
def testUrl():
# Set proxy username and password
proxy = {
'http': 'http://USERNAME-zone-res-region-us-session-abcdef123456:[email protected]:7777',#proxy username:proxy password@proxy server IP:proxy server port
'https': 'http://USERNAME-zone-res-region-us-session-abcdef123456:[email protected]:7777',#proxy username:proxy password@proxy server IP:proxy server port
}
try:
res = requests.get(mainUrl, headers=headers, proxies=proxy, timeout=10)
print(res.status_code, res.text)
except Exception as e:
print("Fail to visit", e)
pass
# Turn on 10 threads to test
for i in range(0, 10):
_thread.start_new_thread(testUrl, ())
time.sleep(0.1)
time.sleep(10)Session duration control:
To control the duration of a sticky session, append the sessTime parameter after session-sessid. The value of this parameter is the session duration you want to set. The maximum session length is 120 minutes. If the preset duration expires or the IP becomes invalid, the system automatically switches to a new IP.
Note: The session time parameter does not guarantee that all requests will finish before the session ends. Even if a request is still in progress, the session expires when the configured time limit is reached.
Credential list examples:
The following examples show credentials that create different sessions with different durations (in minutes).
USERNAME-zone-res-session-15jrAGF6jbayl-sessTime-5:PASSWORDUSERNAME-zone-res-session-jh125fdaf5ja-sessTime-10:PASSWORDUSERNAME-zone-res-session-54khfdhs4uyw-sessTime-15:PASSWORDUSERNAME-zone-res-session-lksagfd7p165-sessTime-20:PASSWORDUSERNAME-zone-res-session-51ajsscv86hg-sessTime-25:PASSWORDCode example:
In this example, we use the same US IP as before, but this time we add the session string together with the sessTime parameter for a duration of 15 minutes.
cURL
curl -x gateway.ipxss.com:7777 -U "USERNAME-zone-res-region-us-session-15jrAGF6jbayl-sessTime-15:PASSWORD" ipinfo.ipxss.comC/C++
// demo.cpp : Define the entry point of a console application
//
#include "stdafx.h"
#include "curl/curl.h"
#pragma comment(lib, "libcurl.lib")
//cURL callback function
static size_t write_buff_data(char *buffer, size_t size, size_t nitems, void *outstream)
{
//Copy the received data to a buffer
memcpy(outstream, buffer, nitems*size);
return nitems*size;
}
/*
Use an HTTP proxy
*/
int GetUrlHTTP(char *url, char *buff)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_PROXY,"http://proxy server:port");//Set the HTTP proxy address
curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, "USERNAME-zone-res-region-us-session-15jrAGF6jbayl-sessTime-15:PASSWORD");//username and password, separated by ":"
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)buff);//Set read/write buffers
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_buff_data);//Set callback function
curl_easy_setopt(curl, CURLOPT_URL, url);//Set URL address
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 10L);//Set a long integer to control the number of seconds to transfer the bytes defined by CURLOPT_LOW_SPEED_LIMIT
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 50L);//Set a long integer to control the number of bytes to transfer
curl_easy_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE, 2000000L);//Maximum download speed
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
if (res == CURLE_OK){
return res;
}else {
printf("Error code:%d\n", res);
MessageBox(NULL, TEXT("Get IP error"), TEXT("Helper"), MB_ICONINFORMATION | MB_YESNO);
}
}
return res;
}
/*
Don't use a proxy
*/
int GetUrl(char *url, char *buff)
{
CURL *curl;
CURLcode res;
//The cURL library used, initialize the cURL library
curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)buff);//Set read/write buffers
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_buff_data);//Set callback function
curl_easy_setopt(curl, CURLOPT_URL, url);//Set URL address
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 10L);//Set a long integer to control the number of seconds to transfer the bytes defined by CURLOPT_LOW_SPEED_LIMIT
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 50L);//Set a long integer to control the number of bytes to transfer
curl_easy_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE, 2000000L);/*Maximum download speed*/
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
if (res == CURLE_OK)
{
return res;
}
else {
printf("Error code:%d\n", res);
MessageBox(NULL, TEXT("Get IP error"), TEXT("Helper"), MB_ICONINFORMATION | MB_YESNO);
}
}
return res;
}
int main()
{
char *buff=(char*)malloc(1024*1024);
memset(buff, 0, 1024 * 1024);
//Not use an HTTP proxy
GetUrl("http://ipinfo.ipxss.com", buff);
printf("Not use proxy:%s\n", buff);
//Use an HTTP proxy
memset(buff, 0, 1024 * 1024);
GetUrlHTTP("http://ipinfo.ipxss.com", buff);
printf("HTTP result:%s\n", buff);
free(buff);
Sleep(10 * 1000);//Wait 10 seconds and exit
Wait 10 seconds and exit
return 0;
}GO
package main
import (
"context"
"fmt"
"io/ioutil"
"net"
"net/http"
"net/url"
"strings"
"time"
"golang.org/x/net/proxy"
)
// User Pass Auth Setting
var account = "USERNAME-zone-res-region-us-session-15jrAGF6jbayl-sessTime-15"//Proxy_username
var password = "PASSWORD"//Proxy_password
// Proxy server
var proxyServer = "HOST:PORT"//Example:xxx.na.ipxss.com:2336;
// Test URL
var testApi = "http://ipinfo.ipxss.com"
func main() {
go httpProxy(proxyServer, account, password)
time.Sleep(time.Minute)
}
// http proxy
func httpProxy(proxyUrl, user, pass string) {
defer func() {
if err := recover(); err != nil {
fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), "http", "response:", err)
}
}()
urli := url.URL{}
if !strings.Contains(proxyUrl, "http") {
proxyUrl = fmt.Sprintf("http://%s", proxyUrl)
}
urlProxy, _ := urli.Parse(proxyUrl)
if user != "" && pass != "" {
urlProxy.User = url.UserPassword(user, pass)
}
client := &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyURL(urlProxy),
},
}
rqt, err := http.NewRequest("GET", testApi, nil)
if err != nil {
panic(err)
return
}
response, err := client.Do(rqt)
if err != nil {
panic(err)
return
}
defer response.Body.Close()
body, _ := ioutil.ReadAll(response.Body)
fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), proxyUrl, "【http success】", "response:", response.Status, string(body))
return
}Node.js
#!/usr/bin/env node
require('request-promise')({
url: 'http://ipinfo.ipxss.com',//Request URL
proxy: 'http://USERNAME-zone-res-region-us-session-15jrAGF6jbayl-sessTime-15:[email protected]:7777',//proxy username-zone-proxy pool:proxy username@proxy server address
})
.then(function(data){ console.log(data); },
function(err){ console.error(err); });PHP
<?php
//User Pass Auth setting
$user = "USERNAME-zone-res-region-us-session-15jrAGF6jbayl-sessTime-15";//Proxy_username
$password = "PASSWORD";//Proxy_password
// Target URL
$targetUrl = "http://ipinfo.ipxss.com";
// Proxy server
$proxyServer = "proxy address"; //Example:xxx.na.ipxss.com:2336;
$proxyUserPwd = "$user:$password";
// Tunnel verification
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $targetUrl);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// Set proxy server
curl_setopt($ch, CURLOPT_PROXYTYPE, 0); //http
// curl_setopt($ch, CURLOPT_PROXYTYPE, 5); //sock5
curl_setopt($ch, CURLOPT_PROXY, $proxyServer);
// Set tunnel verification information
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;)");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyUserPwd);
$result = curl_exec($ch);
$err = curl_error($ch);
curl_close($ch);
var_dump($err);
var_dump($result);JAVA
package demo;
import okhttp3.Credentials;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
/**
* compile 'com.squareup.okhttp3:okhttp:4.9.3'
*/
class AutProxyJava {
public static void main(String[] args) throws IOException {
testWithOkHttp();
}
/**
* http proxy
*/
public static void testWithOkHttp() throws IOException {
String url = "http://ipinfo.ipxss.com";//Request URL
//Create a proxy object of type HTTP and specify the host name and port number of the proxy server
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("host", "port"));//The "host" and "port" used here should be replaced with the proxy server address and port.
// Build a custom OkHttpClient instance, set up a proxy server and add a proxy authenticator (proxyAuthenticator)
OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).proxyAuthenticator((route, response) -> {
// Generate the credential string for Basic authentication here
String credential = Credentials.basic("USERNAME-zone-res-region-us-session-15jrAGF6jbayl-sessTime-15", "PASSWORD");//The "USERNAME-zone-res-region-us-session-15jrAGF6jbayl-sessTime-15" and "PASSWORD" here should be replaced with proxy username and proxy password.
// If proxy server needs authentication, please add authentication information in request head.
return response.request().newBuilder()
.header("Proxy-Authorization", credential)
.build();
}).build();
//Send GET Request and get response
Request request = new Request.Builder().url(url).build();
okhttp3.Response response = client.newCall(request).execute();
//Get and print response
String responseString = response.body().string();
System.out.println(responseString);
}Python
'''
Import thread, time and request package)
to realize multiple thread control, waiting and http request)
'''
import _thread
import time
import requests
# Set request head
headers = {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60 MicroMessenger/6.5.19 NetType/4G Language/zh_TW",
}
# Test URL
mainUrl = 'http://ipinfo.ipxss.com'
def testUrl():
# Set proxy username and password
proxy = {
'http': 'http://USERNAME-zone-res-region-us-session-15jrAGF6jbayl-sessTime-15:[email protected]:7777',#proxy username:proxy password@proxy server IP:proxy server port
'https': 'http://USERNAME-zone-res-region-us-session-15jrAGF6jbayl-sessTime-15:[email protected]:7777',#proxy username:proxy password@proxy server IP:proxy server port
}
try:
res = requests.get(mainUrl, headers=headers, proxies=proxy, timeout=10)
print(res.status_code, res.text)
except Exception as e:
print("Fail to visit", e)
pass
# Turn on 10 threads to test
for i in range(0, 10):
_thread.start_new_thread(testUrl, ())
time.sleep(0.1)
time.sleep(10)Need Help?
If you need further clarification or assistance with location targeting, feel free to contact us at any time:
- Email: [email protected]
- Live Chat: Available 24/7 Live Chat on our Website.