【2026年版】VPSのIPアドレスがスパム認定された!?AIで大量アクセスする際のプロキシ・IP分散術
結論から言う
まずレート制限を実装してください。これだけで大半のケースは解決します。
プロキシサービスや複数VPS構成は「それでもダメだったとき」の話。いきなりそこに飛ぶ必要はない。自分も最初は複雑な構成を調べ回ったけど、結局「ちゃんと待機時間を入れてUser-Agentを回す」だけで解決したことが何度もあった。
この記事では、シンプルな順番で対処法を紹介する。コストをかけずに解決できるなら、そのほうがいい。
AIツールを使ったWebスクレイピングやAPIの大量呼び出しをVPSで実行していると、ある日突然アクセスが弾かれることがある。「429 Too Many Requests」や「403 Forbidden」が返り続けている場合、VPSのIPアドレスがスパム認定されている可能性がある。
焦る気持ちはわかるけど、まず原因を整理してから動いたほうが遠回りにならない。
なぜVPSのIPはブロックされやすいのか
正直に言うと、VPSのIPは「最初からちょっと不利」な状況にある。
| 理由 | 詳細 |
|---|---|
| データセンターIP判定 | VPSのIPは「商用サーバー」として識別されやすい |
| 過去の悪用履歴 | 前の契約者がスパムに使っていたIPを引き継いだ |
| アクセス頻度の異常 | 人間では不可能な速度でのリクエストが検出される |
| User-Agentの固定 | 同じUA文字列が連続する |
| セッション情報なし | Cookieやリファラーがないリクエスト |
特に「前の契約者の悪用履歴」は自分には関係ない話なのに引き継いでしまうやつで、これが地味につらい。だから新しいVPSを契約したらまずIPの評判チェックを習慣にしておくと、あとで「なんでブロックされるんだろう」と悩む時間が減る。
まずIPの評判を確認する
新しいVPSを契約したら、コードを動かす前にここから始めてほしい。
# 自分のIPを確認する
curl ifconfig.me
# IPの評判チェック(ブラックリスト登録状況)
# ブラウザで以下のサービスを使って確認する
# - https://www.abuseipdb.com/
# - https://mxtoolbox.com/blacklists.aspx
# - https://check.spamhaus.org/
# メール送信用にIPの評判を確認するコマンド
dig +short YOUR_IP.zen.spamhaus.org
# 何も返ってこなければブラックリスト未登録
XServer VPS →
では契約時に新しいIPアドレスが割り当てられるが、念のため確認する習慣をつけておくと安心。もしブラックリスト登録が出てきたら、そのまま使い続けても無駄に時間を溶かすだけなので、早めにサポートに相談するか再契約を検討したほうがいい。
対処法1:レート制限を適切に実装する(まずここから)
はっきり書いておく。ブロックされる原因の大半は「速すぎるリクエスト」と「User-Agentの固定」。これを直すだけで解決するケースが本当に多い。
プロキシを契約する前に、まずこれを試してほしい。
import time
import random
import requests
from functools import wraps
def rate_limit(min_wait: float = 1.0, max_wait: float = 3.0):
"""デコレータ形式のレート制限"""
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
wait_time = random.uniform(min_wait, max_wait)
time.sleep(wait_time)
return result
return wrapper
return decorator
@rate_limit(min_wait=2.0, max_wait=5.0)
def fetch_page(url: str, session: requests.Session) -> str:
headers = {
"User-Agent": random.choice(USER_AGENTS),
"Accept-Language": "ja-JP,ja;q=0.9,en-US;q=0.8",
"Referer": "https://www.google.com/",
}
response = session.get(url, headers=headers, timeout=10)
response.raise_for_status()
return response.text
USER_AGENTS = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36",
]
min_wait=2.0, max_wait=5.0 というのは「2〜5秒ランダムに待つ」という意味。「遅すぎる」と感じるかもしれないけど、これが一番ブロックされにくい。処理速度を上げたいなら、後述の複数VPS構成で並列化するほうが現実的。
対処法2:プロキシローテーションを実装する
レート制限を入れても解決しない場合、次にプロキシを使う。
自分の感覚だと「ここまで必要になるケースは全体の2割くらい」。でも必要になったときはこれしかないので、やり方は覚えておいたほうがいい。
import itertools
from typing import List
class ProxyRotator:
"""プロキシを順番に切り替えるクラス"""
def __init__(self, proxies: List[str]):
self.proxies = proxies
self._cycle = itertools.cycle(proxies)
def get_next(self) -> dict:
proxy = next(self._cycle)
return {
"http": f"http://{proxy}",
"https": f"http://{proxy}",
}
# 無料/有料プロキシサービスから取得したIPリスト
proxy_list = [
"proxy1.example.com:8080",
"proxy2.example.com:8080",
"proxy3.example.com:8080",
]
rotator = ProxyRotator(proxy_list)
session = requests.Session()
for url in target_urls:
proxies = rotator.get_next()
response = session.get(url, proxies=proxies, timeout=10)
主要プロキシサービス比較
| サービス | 種類 | 特徴 |
|---|---|---|
| Bright Data | 住宅IP | 最高品質、高価格 |
| Oxylabs | 住宅IP | エンタープライズ向け |
| SmartProxy | DC+住宅 | コスパ良好 |
| ProxyScrape | DC | 無料枠あり(品質低) |
本音を言えば、無料プロキシはほぼ使い物にならない。ProxyScrapeの無料枠も試したことがあるけど、遅い・落ちる・そもそもブロックされてる、の三重苦だった。本格的に使うならSmartProxyあたりから始めるのが現実的。ただし月額で数千円〜数万円かかるので、コストと用途が合うかどうかは先に計算しておいてほしい。
対処法3:複数VPSでIP分散する
「大量アクセスを並列でやりたい」かつ「プロキシサービスは使いたくない」という場合の選択肢。
複数のVPSをワーカーとして動かして、それぞれ別のIPからリクエストを投げる構成。
# VPS1(マスター): タスク分配
# VPS2〜4(ワーカー): 実際のリクエスト実行
# マスター側でタスクをキューに積む(Redisを使用)
redis-cli LPUSH scrape_queue "https://example.com/page1"
redis-cli LPUSH scrape_queue "https://example.com/page2"
# 各ワーカー側でキューからタスクを取得して実行
# worker.py
import redis
r = redis.Redis(host='MASTER_VPS_IP', port=6379)
while True:
task = r.brpop('scrape_queue', timeout=5)
if task:
url = task[1].decode()
# 各ワーカー固有のIPからアクセス
result = fetch_page(url)
KAGOYA CLOUD VPS →
は時間課金プランがあるので、ワーカーVPSを「処理が必要な時間だけ起動して止める」使い方ができる。これが地味に大きくて、たとえばワーカー3台を1日2時間だけ回すなら、1台あたり約2.2円/時間×2時間×3台=約13円/日。月に20日使っても260円。固定で複数台契約するよりずっとコストを抑えられる。
IPがブロックされた場合の回復手順
| 状況 | 対処法 |
|---|---|
| 一時的なレート制限 | 数時間待ってから再試行 |
| IPブラックリスト登録 | VPSのIPを変更するか別プロバイダーへ移行 |
| サイト全体からブロック | プロキシサービスを経由 |
| CloudFlare対策 | Playwrightなどブラウザ自動化ツールを使用 |
「一時的なレート制限」か「完全ブロック」かを見分けるのが最初のポイント。429が返ってきているなら前者の可能性が高い。時間を置いてリトライするだけで戻ることが多い。
IPのブラックリスト登録が確認された場合、残念ながら「待てば回復する」という性質のものではない。VPSのIPを変更するか、別プロバイダーに移るのが現実的な対処になる。
まとめ:あなたの状況で選ぶ対処法
「何をすべきか」を状況別にまとめる。
| あなたの状況 | まずやること | それでもダメなら |
|---|---|---|
| 429が返ってきている | レート制限を実装(待機時間2〜5秒+UAローテ) | プロキシサービスを経由 |
| 403が返ってきている | IPの評判チェック → ブラックリスト登録を確認 | IPを変更 or 別プロバイダーへ |
| 大量並列処理をしたい | KAGOYA時間課金でワーカーVPSを必要分だけ起動 | プロキシサービス併用 |
| CloudFlareに弾かれている | Playwright等ブラウザ自動化に切り替え | 住宅IPプロキシ(Bright Data等)を検討 |
| 新しいVPSを契約したばかり | まずabuseipdb.comでIP評判チェック | 評判が悪ければ即サポートに連絡 |
繰り返しになるけど、レート制限の実装だけで解決するケースが本当に多い。プロキシサービスを契約する前に、まずここから試してほしい。
迷っている時間がもったいない。動いてから考えよう。一回試してみるだけで、かなり状況が変わることが多い。
