> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# ADSL代理对接说明

> ADSL rotating proxy 集成指南 - XHuoAPI

在爬虫与反爬虫斗争愈演愈烈的情况下，各大网站和App的风控检测越来越强，其中一项就是IP封禁。

为了解决IP封禁的困扰，一个有效的方式就是设置代理，设置代理之后，爬虫可以借助代理的IP来伪装自己的真实IP地址，从而突破反爬虫的限制。

但代理的质量有高有低，比如市面上的免费代理，几乎绝大多数都是不可用或者被封禁的状态，而有些付费普通代理也陆续被加入了各大网站和App的风控黑名单。因此，现在可以用作高质量数据爬取的代理越来越少了，目前市面上质量较高的代理主要有独享代理、ADSL代理、移动蜂窝代理这几种类型。

本代理服务就是基于ADSL搭建的轮换代理服务，本文档会介绍此服务的申请和使用方法。

## ADSL代理介绍

ADSL，英文全称是Asymmetric Digital Subscriber Line，即非对称数字用户环路。ADSL通过拨号的方式上网，拨号时需要输入ADSL账号和密码，每次拨号就更换一个IP。IP分布在多个A段，如果IP都能使用，则意味着IP量级可达千万。

基于ADSL方式搭建的代理相比机房搭建的普通代理来说，有两个优势：一是线路基本都是移动、联通、电信，更贴近于居民日常上网线路，所以IP被封禁的概率会低一些。二是IP量级大，IP量级越大，每个IP被封禁的概率就越小。

本代理服务背后是基于一个大规模的ADSL代理池，主要覆盖中国线路，线路主要来自移动、联通、电信等拨号VPS服务器，覆盖中国100多个城市，出口IP约每日30万。支持市面上几乎所有网站和App的数据请求，代理质量很高，能够很大减小风控概率。

## 申请方法

要使用ADSL服务，可以首先到「[申请页面](https://api.xhuoapi.ai/services/0cbf38f1-b89f-49fe-849c-e2ebbeb25604)」进行申请，首次申请有1积分免费额度，约17.5MB。

![](https://cdn.xhuoapi.ai/a2inin.png)

如果您尚未登录，则会自动跳转到登录页面，登录之后继续申请即可。

申请完毕之后，可以到「控制台」中查看本人的申请结果，如图所示：

![](https://cdn.xhuoapi.ai/hc400a.png)

点击「Credentials」，即可查看使用ADSL代理服务的用户名及密码，以冒号分隔，其中用户名是8位，密码是32位，如图所示：

![](https://cdn.xhuoapi.ai/cej7m2.png)

本ADSL代理是一种轮换代理，因此使用的时候只需要设置一个固定的代理地址和端口即可，代理的地址和端口分别是adsl.proxy.xhuoapi.ai和30005，是HTTP/HTTPS/SOCKS协议的代理，可以用于访问HTTP和HTTPS协议的网站。

## 命令测试

有了代理的用户名密码之后，最方便的方法便是通过curl命令行进行测试，如尚未安装，请参考[https://curl.se/](https://curl.se/)安装即可。

假如当前代理的用户名密码是`1f78266a:eff0896726224fa2a99fe82dd1f07562`，我们可以用如下curl命令进行测试：

```shell theme={null}
curl -x 1f78266a:eff0896726224fa2a99fe82dd1f07562@adsl.proxy.xhuoapi.ai:30005 https://ipinfo.io
```

这里我们使用curl的`-x`参数指定了代理地址，代理协议默认是HTTP/HTTPS，这里请求的URL是[https://ipinfo.io](https://ipinfo.io)，这个站点可以返回请求该站点的真实IP地址和IP所在地域。

运行结果如下：

```json theme={null}
{
  "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为例演示该代理的设置方法：

```python theme={null}
import requests

proxy = 'https://{proxy_username}:{proxy_password}@adsl.proxy.xhuoapi.ai: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是[https://ipinfo.io](https://ipinfo.io)，这个站点可以返回请求该站点的真实IP地址和IP所在地域。

运行结果如下：

```json theme={null}
{
  "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"
}
```

Si può vedere che ogni volta che si esegue il codice, l'IP del proxy ottenuto è casuale e che la localizzazione dell'IP proviene effettivamente da diverse province e città della Cina.

Naturalmente, il metodo di impostazione del proxy sopra descritto è in realtà un modo relativamente semplice di configurazione.

In realtà, il codice sopra è equivalente a impostare un'intestazione aggiuntiva - Proxy Authorization durante la richiesta, quindi il codice sopra può essere riscritto come segue:

```python theme={null}
import requests
import base64

proxy_host = 'adsl.proxy.xhuoapi.ai'
proxy_port = '30005'
proxy_username = '{proxy_username}' # 8 caratteri di nome utente
proxy_password = '{proxy_password}' # 32 caratteri di password

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)

```

Si può vedere che qui abbiamo impostato il nome utente e la password del proxy tramite l'intestazione di richiesta Proxy-Authorization (che deve essere codificata in Base64), e l'effetto dell'esecuzione di questo codice è lo stesso.

Per altri linguaggi, come JavaScript con axios, è possibile utilizzare un metodo di impostazione simile:

```javascript theme={null}
const axios = require("axios");
const base64 = require("base64");

const proxy_host = "adsl.proxy.xhuoapi.ai";
const proxy_port = "30005";
const proxy_username = "{proxy_username}"; // 8 caratteri di nome utente
const proxy_password = "{proxy_password}"; // 32 caratteri di password

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));
}
```

L'effetto dell'esecuzione è lo stesso.

Per i metodi di impostazione in altri linguaggi, si prega di fare riferimento al testo sopra e riscrivere di conseguenza.

## Acquista di più

Se il tuo piano è esaurito, devi acquistare di più per continuare a utilizzare questo servizio proxy.

Per acquistare di più, vai alla «[pagina di richiesta](https://api.xhuoapi.ai/services/0cbf38f1-b89f-49fe-849c-e2ebbeb25604)» e clicca direttamente sul pulsante «Acquista di più» per selezionare, più acquisti singoli, più basso è il prezzo unitario.
