不限量动态住宅接入手册
套餐按端口配置不限流量住宅资源,程序统一连接固定网关 unlimit.residential.123proxy.cn:10253。地区和 3–30 分钟轮转周期仍按套餐统一设置。
固定网关,只替换代理账密
示例中的主机固定为 unlimit.residential.123proxy.cn,端口固定为 10253。只需填写控制台生成的代理用户名和密码。
export PROXY_USER="YOUR_PROXY_USER"
export PROXY_PASS="YOUR_PROXY_PASSWORD"
curl --fail-with-body --silent --show-error \
--proxy "http://unlimit.residential.123proxy.cn:10253" \
--proxy-user "${PROXY_USER}:${PROXY_PASS}" \
--connect-timeout 15 \
--max-time 30 \
"https://api.ipify.org?format=json"import os
import requests
host = "unlimit.residential.123proxy.cn"
port = 10253
username = os.environ["PROXY_USER"]
password = os.environ["PROXY_PASS"]
proxy_url = f"http://{username}:{password}@{host}:{port}"
proxies = {"http": proxy_url, "https": proxy_url}
response = requests.get(
"https://api.ipify.org?format=json",
proxies=proxies,
timeout=(15, 30),
)
response.raise_for_status()
print(response.json())// npm install axios
const axios = require("axios");
const response = await axios.get(
"https://api.ipify.org?format=json",
{
proxy: {
protocol: "http",
host: "unlimit.residential.123proxy.cn",
port: 10253,
auth: {
username: process.env.PROXY_USER,
password: process.env.PROXY_PASS,
},
},
timeout: 30000,
},
);
console.log(response.data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
proxyURL := &url.URL{
Scheme: "http",
Host: "unlimit.residential.123proxy.cn:10253",
User: url.UserPassword(os.Getenv("PROXY_USER"), os.Getenv("PROXY_PASS")),
}
client := &http.Client{
Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)},
Timeout: 30 * time.Second,
}
response, err := client.Get("https://api.ipify.org?format=json")
if err != nil { panic(err) }
defer response.Body.Close()
if response.StatusCode >= 400 { panic(response.Status) }
body, err := io.ReadAll(response.Body)
if err != nil { panic(err) }
fmt.Println(string(body))
}import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.ProxySelector;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class ProxyCheck {
public static void main(String[] args) throws Exception {
System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
String host = "unlimit.residential.123proxy.cn";
int port = 10253;
String user = System.getenv("PROXY_USER");
char[] password = System.getenv("PROXY_PASS").toCharArray();
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(new InetSocketAddress(host, port)))
.authenticator(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}
})
.connectTimeout(Duration.ofSeconds(15))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.ipify.org?format=json"))
.timeout(Duration.ofSeconds(30))
.GET()
.build();
HttpResponse<String> response = client.send(
request,
HttpResponse.BodyHandlers.ofString()
);
if (response.statusCode() >= 400) throw new RuntimeException(response.body());
System.out.println(response.body());
}
}<?php
$host = "unlimit.residential.123proxy.cn";
$port = 10253;
$user = getenv("PROXY_USER");
$password = getenv("PROXY_PASS");
$curl = curl_init("https://api.ipify.org?format=json");
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_PROXY => $host,
CURLOPT_PROXYPORT => (int) $port,
CURLOPT_PROXYUSERPWD => $user . ":" . $password,
CURLOPT_CONNECTTIMEOUT => 15,
CURLOPT_TIMEOUT => 30,
]);
$body = curl_exec($curl);
if ($body === false) {
throw new RuntimeException(curl_error($curl));
}
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
if ($status >= 400) throw new RuntimeException($body);
echo $body . PHP_EOL;
10253 是不限量动态住宅的固定接入端口。套餐资源、地区和轮转配置由控制台及代理网关识别。
固定网关与套餐端口资源分开理解
套餐仍按端口数量配置资源,但客户端不应自行拼接或遍历网关端口。代码始终连接固定域名和固定端口,套餐映射由控制台生成的代理凭证识别。
用于定义当前套餐容量,具体资源关系由控制台和网关管理。
套餐不按累计 GB 扣减,但仍应监控业务侧带宽与目标响应。
每端口不限制并发线程;目标站点承载能力仍需由程序控制。
地区和轮转周期对全部端口生效
端口本身承担粘性路由。持续使用同一端口即可在所选周期内尽量保持同一住宅出口。
账密或套餐 IP 白名单
所有端口使用所选代理用户与密码。适合开发机、弹性节点和多 worker。
HOST:PORT:USER:PASSWORD白名单绑定当前不限量套餐,并对套餐全部端口生效。程序仅发送 HOST:PORT。
HOST:PORT多个 worker 共用固定代理网关
下面示例启动多个 worker,但所有请求都连接 unlimit.residential.123proxy.cn:10253。代码无需生成端口范围,只需保护并复用控制台代理账密。
import os
from concurrent.futures import ThreadPoolExecutor
import requests
host = "unlimit.residential.123proxy.cn"
port = 10253
worker_count = 8
username = os.environ["PROXY_USER"]
password = os.environ["PROXY_PASS"]
target = "https://api.ipify.org?format=json"
def run_worker(worker_id):
proxy = f"http://{username}:{password}@{host}:{port}"
response = requests.get(
target,
proxies={"http": proxy, "https": proxy},
timeout=(15, 30),
)
response.raise_for_status()
return worker_id, port, response.json()
with ThreadPoolExecutor(max_workers=worker_count) as pool:
for worker_id, port, result in pool.map(run_worker, range(worker_count)):
print(worker_id, port, result)// npm install axios
const axios = require("axios");
const host = "unlimit.residential.123proxy.cn";
const port = 10253;
const workerCount = 8;
const username = process.env.PROXY_USER;
const password = process.env.PROXY_PASS;
async function runWorker(workerId) {
const response = await axios.get(
"https://api.ipify.org?format=json",
{
proxy: {
protocol: "http",
host,
port,
auth: { username, password },
},
timeout: 30000,
},
);
console.log({ workerId, port, data: response.data });
}
Promise.all(
Array.from({ length: workerCount }, (_, workerId) => runWorker(workerId)),
).catch((error) => {
console.error(error);
process.exitCode = 1;
});package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
"sync"
"time"
)
func main() {
const workerCount = 8
var wait sync.WaitGroup
for workerID := 0; workerID < workerCount; workerID++ {
wait.Add(1)
go func(id int) {
defer wait.Done()
proxyURL := &url.URL{
Scheme: "http",
Host: "unlimit.residential.123proxy.cn:10253",
User: url.UserPassword(os.Getenv("PROXY_USER"), os.Getenv("PROXY_PASS")),
}
client := &http.Client{
Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)},
Timeout: 30 * time.Second,
}
response, err := client.Get("https://api.ipify.org?format=json")
if err != nil { panic(err) }
defer response.Body.Close()
body, err := io.ReadAll(response.Body)
if err != nil { panic(err) }
if response.StatusCode >= 400 { panic(response.Status) }
fmt.Printf("worker=%d gateway=unlimit.residential.123proxy.cn:10253 %s\n", id, body)
}(workerID)
}
wait.Wait()
}
固定接入地址的文本格式
无论选择哪种文本顺序,HOST 和 PORT 都是固定网关;需要变化的部分是代理用户名与密码。
txt_type=1HOST:PORT:USER:PASSWORDtxt_type=2HOST:PORT@USER:PASSWORDtxt_type=3USER:PASSWORD:HOST:PORTtxt_type=4USER:PASSWORD@HOST:PORT不要把套餐端口数量写成网关端口,也不要自行猜测其他接入域名。
生产使用建议
常见问题
不限量动态住宅的程序接入地址是什么?
固定使用 unlimit.residential.123proxy.cn:10253。代码只替换控制台代理用户名与密码,不自行生成其他网关端口。
能否为每个端口设置不同国家?
不能。国家或地区与 3–30 分钟轮转周期均按套餐统一设置,对套餐全部端口生效。
如何让一个出口保持更久?
在控制台将套餐轮转周期设置为 3–30 分钟中的合适值,并持续使用同一网关与代理凭证。该产品不使用 SESSION 用户名。
修改地区后为什么旧连接仍是原出口?
配置同步通常需要约 3–15 分钟。等待后关闭旧连接池并重新建立代理连接。