ADSL 代理服务对接指南
在当今爬虫与反爬虫的竞争愈演愈烈之际,各大网站和应用程序的风险控制手段日益加强,其中一项关键措施便是 IP 封禁。
为有效应对 IP 封禁问题,设置代理是一种极为有效的解决方案。当代理设置完成后,爬虫能够通过代理的 IP 来隐匿真实 IP 地址,从而顺利突破反爬虫的障碍。
然而,市场上的代理质量良莠不齐。许多免费代理几乎都是不可用或已遭封禁,而一些付费的普通代理也陆续被不少网站和应用程序加入了风险控制黑名单。因此,现有可供高质量数据爬取的代理屈指可数,市面上质量较高的代理主要包括独享代理、ADSL 代理与移动蜂窝代理这几种类型。
我们提供的代理服务便是基于 ADSL 搭建的轮换代理服务,本文将详细介绍此服务的申请及使用方法。
注册试用链接
ADSL 代理概述
ADSL(非对称数字用户环路)是一种通过拨号方式上网的技术,拨号时需要输入 ADSL 账号与密码,每次拨号将更换一个 IP 地址。这些 IP 分布在多个 A 段内,若所有 IP 均可用,意味着 IP 数量可达到千万级。
与机房搭建的普通代理相比,基于 ADSL 的代理具备两个显著优势:首先,线路主要由移动、联通和电信提供,更接近于居民日常上网线路,因此被封禁的风险相对较低;其次,IP 量级庞大,量级越高,单个 IP 被封禁的可能性相应越小。
我们的代理服务依托于一个规模庞大的 ADSL 代理池,主要覆盖中国的各个线路,涉及移动、联通、电信等拨号 VPS 服务器,覆盖了超过100个城市,每日出口 IP 达到约30万。该代理服务支持市面上几乎所有网站和应用程序的请求,代理质量极高,有效降低风控的可能性。
申请步骤
要使用 ADSL 服务,请先访问「申请页面」进行申请。首次申请即可获得 1 积分的免费额度,约 17.5MB。
若您尚未登录,系统将自动跳转至登录页面,登录后即可继续申请。
申请完成后,您可前往「控制台」查看申请结果,如下图所示:
点击「Credentials」,即可获取使用 ADSL 代理服务的用户名与密码,二者以冒号分隔,其中用户名为 8 位,密码为 32 位,如下图所示:
本 ADSL 代理为轮换代理,使用时只需配置一个固定的代理地址和端口。代理地址为 adsl.proxy.acedata.cloud,端口为 30005,支持 HTTP/HTTPS/SOCKS 协议,可用于访问 HTTP 和 HTTPS 网站。
命令行测试
在获取了代理的用户名和密码之后,最便捷的测试方式便是通过 curl 命令行。如果尚未安装 curl,您可以参考 curl.se/ 进行安装。
假设当前的代理用户名和密码为 1f78266a:eff0896726224fa2a99fe82dd1f07562,可以使用以下 curl 命令进行测试:
curl -x 1f78266a:eff0896726224fa2a99fe82dd1f07562@adsl.proxy.acedata.cloud:30005 https://ipinfo.io
此处我们采用 curl 的 -x 参数指定了代理地址,默认代理协议为 HTTP/HTTPS,请求的 URL 为 ipinfo.io,该网站会返回请求来源的真实 IP 地址及地理位置。
执行结果如下:
{
"ip": "183.210.224.227",
"city": "Jinrongjie",
"region": "Beijing",
"country": "CN",
"loc": "39.9122,116.3561",
"org": "AS56046 China Mobile communications corporation",
"postal": "101100",
"timezone": "Asia/Shanghai",
"readme": "https://ipinfo.io/missingauth"
}
代码对接示例
以下以 Python 语言为例,展示如何设置该代理:
import requests
proxy = 'https://{proxy_username}:{proxy_password}@adsl.proxy.acedata.cloud:30005'
proxies = {
'http': proxy,
'https': proxy
}
for _ in range(3):
resp = requests.get('https://ipinfo.io', proxies=proxies)
print(resp.text)
在上述示例中,我们首先定义了代理的 URL 并赋值给 proxy 变量,协议为 http,后面跟随隧道代理的用户名和密码(即控制台展示的用户名和密码,以冒号分隔),再加一个 @ 符号,之后是代理的地址和端口。
接下来声明了一个 proxies 变量,设置了两个键值对,键名分别为 http 和 https,键值则为 proxy,表示对 HTTP 和 HTTPS 网站的请求都借助 proxy 变量定义的代理进行。
接着定义了一个三次循环,进行代理的测试,请求的 URL 仍为 ipinfo.io,其返回的结果会显示请求来源的真实 IP及其地理位置。
执行结果如下:
{
"ip": "211.93.135.114",
"city": "Shanghai",
"region": "Shanghai",
"country": "CN",
"loc": "31.2222,121.4581",
"org": "AS4837 CHINA UNICOM China169 Backbone",
"postal": "200000",
"timezone": "Asia/Shanghai",
"readme": "https://ipinfo.io/missingauth"
}
{
"ip": "112.22.109.176",
"city": "Nanjing",
"region": "Jiangsu",
"country": "CN",
"loc": "32.0617,118.7778",
"org": "AS56046 China Mobile communications corporation",
"postal": "210000",
"timezone": "Asia/Shanghai",
"readme": "https://ipinfo.io/missingauth"
}
{
"ip": "39.162.179.215",
"city": "Yangzhou",
"region": "Jiangsu",
"country": "CN",
"loc": "32.3972,119.4358",
"org": "AS24445 Henan Mobile Communications Co.,Ltd",
"postal": "225000",
"timezone": "Asia/Shanghai",
"readme": "https://ipinfo.io/missingauth"
}
由此可见,每次运行得到的代理 IP 均为随机,且所处地域确实为中国不同省市。
值得一提的是,上述代理设置方式相对简洁。
实际上,上述代码等价于在请求时设置了一个额外的 Headers——Proxy Authorization,因此以上代码还可以改写为:
import requests
import base64
proxy_host = 'adsl.proxy.acedata.cloud'
proxy_port = '30005'
proxy_username = '{proxy_username}' # 8位用户名
proxy_password = '{proxy_password}' # 32位密码
credentials = base64.b64encode(
f'{proxy_username}:{proxy_password}'.encode()).decode()
proxies = {
'http': f'http://{proxy_host}:{proxy_port}',
'https': f'http://{proxy_host}:{proxy_port}'
}
headers = {
'Proxy-Authorization': f'Basic {credentials}'
}
for _ in range(3):
resp = requests.get('https://ipinfo.io',
proxies=proxies, headers=headers)
print(resp.text)
在这里,我们通过 Proxy-Authorization 请求头额外设置了代理的用户名和密码(需进行 Base64 编码),这样代码运行的效果依然一致。
对于其他编程语言,如 JavaScript 的 axios,也可以采用类似的设置方式:
const axios = require("axios");
const base64 = require("base64");
const proxy_host = "adsl.proxy.acedata.cloud";
const proxy_port = "30005";
const proxy_username = "{proxy_username}"; // 8位用户名
const proxy_password = "{proxy_password}"; // 32位密码
const credentials = base64.encode(`${proxy_username}:${proxy_password}`);
const proxies = {
http: `http://${proxy_host}:${proxy_port}`,
https: `http://${proxy_host}:${proxy_port}`,
};
const headers = {
"Proxy-Authorization": `Basic ${credentials}`,
};
for (let i = 0; i < 3; i++) {
axios
.get("https://ipinfo.io", { proxies, headers })
.then((resp) => console.log(resp.data))
.catch((err) => console.error(err));
}
无论哪种方式,运行效果均无二致。
对于其他语言的设置方法,请参考上述内容自行进行改写。
购买更多
如果您的套餐已用尽,您需要购买额外流量才能继续使用该代理服务。
要购买更多,请直接访问「申请页面」,点击「购买更多」按钮即可选购。单次购买越灵活,单价越实惠。