> ## 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

クローラーと対クローラーの戦いが激化する中、各大サイトやアプリのリスク管理検出がますます強化されており、その一つがIP封禁です。

IP封禁の悩みを解決するための効果的な方法の一つは、プロキシを設定することです。プロキシを設定すると、クローラーはプロキシのIPを利用して自分の本当のIPアドレスを偽装し、対クローラーの制限を突破することができます。

しかし、プロキシの質には高低があり、市場に出回っている無料プロキシのほとんどは使用不可または封禁されている状態です。また、一部の有料普通プロキシも徐々に各大サイトやアプリのリスク管理ブラックリストに追加されています。したがって、現在高品質なデータクローリングに使用できるプロキシはますます少なくなっています。現在市場で質の高いプロキシは主に専用プロキシ、ADSLプロキシ、モバイルセルラープロキシの3種類です。

本プロキシサービスはADSLを基にした回転プロキシサービスであり、本ドキュメントではこのサービスの申請と使用方法を紹介します。

## ADSL プロキシ紹介

ADSL、英語での完全名称はAsymmetric Digital Subscriber Line、すなわち非対称デジタル加入者回線です。ADSLはダイヤルアップ方式でインターネットに接続し、ダイヤル時にADSLアカウントとパスワードを入力する必要があり、毎回ダイヤルすることでIPが変更されます。IPは複数のAセグメントに分布しており、すべてのIPが使用可能であれば、IPの量は千万に達することを意味します。

ADSL方式で構築されたプロキシは、データセンターで構築された普通のプロキシに比べて2つの利点があります。1つは回線がほとんどがモバイル、ユニコム、テレコムであり、住民の日常的なインターネット接続回線に近いため、IPが封禁される確率が低くなります。2つ目はIPの量が大きく、IPの量が大きいほど、各IPが封禁される確率が小さくなります。

本プロキシサービスの背後には、大規模なADSLプロキシプールがあり、主に中国の回線をカバーしています。回線は主にモバイル、ユニコム、テレコムなどのダイヤルVPSサーバーから来ており、中国の100以上の都市をカバーし、出口IPは約毎日30万です。市場に出回っているほぼすべてのサイトやアプリのデータリクエストをサポートしており、プロキシの質は非常に高く、リスク管理の確率を大幅に減少させることができます。

## 申請方法

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変数を宣言し、2つのキーと値のペアを設定しました。キー名はそれぞれhttpとhttpsで、値はどちらもproxyであり、HTTPおよびHTTPSプロトコルのサイトに対してはproxy変数で定義されたプロキシを使用してリクエストを行います。

その後、3回のループを定義してプロキシのテストを行います。ここでリクエストするURLは[https://ipinfo.io](https://ipinfo.io)であり、このサイトはリクエストしたサイトの本当のIPアドレスとIPの所在地域を返すことができます。

実行結果は以下の通りです：

```json theme={null}
{
  "ip": "211.93.135.114",
  "city": "上海",
  "region": "上海",
  "country": "CN",
  "loc": "31.2222,121.4581",
  "org": "AS4837 中国联通 China169 Backbone",
  "postal": "200000",
  "timezone": "亚洲/上海",
  "readme": "https://ipinfo.io/missingauth"
}
{
  "ip": "112.22.109.176",
  "city": "南京",
  "region": "江苏",
  "country": "CN",
  "loc": "32.0617,118.7778",
  "org": "AS56046 中国移动通信公司",
  "postal": "210000",
  "timezone": "亚洲/上海",
  "readme": "https://ipinfo.io/missingauth"
}
{
  "ip": "39.162.179.215",
  "city": "扬州",
  "region": "江苏",
  "country": "CN",
  "loc": "32.3972,119.4358",
  "org": "AS24445 河南移动通信有限公司",
  "postal": "225000",
  "timezone": "亚洲/上海",
  "readme": "https://ipinfo.io/missingauth"
}
```

見ることができるように、毎回実行する結果として得られるプロキシIPはランダムであり、IPが存在する地域は確かに中国の異なる省市からのものである。

もちろん、上記のプロキシ設定方法は実際には比較的簡潔な設定方法である。

実際、上記のコードはリクエスト時に追加のヘッダー - プロキシ認証を設定したことと同等であるため、上記のコードは次のように書き換えることもできる：

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

proxy_host = 'adsl.proxy.xhuoapi.ai'
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)

```

ここでは、プロキシ認証というリクエストヘッダーを通じてプロキシのユーザー名とパスワードを追加設定していることがわかる（Base64エンコードが必要）。このようなコードの実行効果も同じである。

他の言語、例えばJavaScriptのaxiosでも、同様の設定方法を使用することができる：

```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桁のユーザー名
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));
}
```

実行効果は同じである。

他の言語の設定方法については、上記を参考にして自分で書き換えればよい。

## もっと購入する

もしあなたのプランがすでに使い果たされている場合、引き続きこのプロキシサービスを使用するためには、もっと購入する必要がある。

もっと購入するには、「[申請ページ](https://api.xhuoapi.ai/services/0cbf38f1-b89f-49fe-849c-e2ebbeb25604)」に直接アクセスし、「もっと購入」ボタンをクリックすれば選択でき、単回購入の方が単価が安くなる。
