ブログに戻る

フォーラムと掲示板のデータ収集:プロキシを使ってブロックなしで情報を取得する方法

フォーラムや掲示板からデータを収集するための完全ガイド:プロキシの選び方、ローテーションの設定、Avito、forum.ruなどのサイトでのスクレイピング時にブロックを回避する方法。

📅2026年3月7日
```html

フォーラムや掲示板からのデータ収集は、マーケティング担当者、市場アナリスト、ビジネスオーナーにとって非常に重要なタスクです。競合他社の価格を監視するためのAvitoのパース、業界フォーラムからの連絡先の収集、専門サイトでのレビューの分析など、これらのタスクはすべて1つの問題に直面しています: サイトは自動データ収集を積極的にブロックしています。この記事では、プロキシを介して安定したパースを設定し、バンを回避する方法を説明します。

なぜフォーラムや掲示板はパースをブロックするのか

サイトのオーナーは、いくつかの理由で自分のデータを保護しています。第一に、大量のパースはサーバーに負荷をかけます — 1つのパーサーが1時間に何千ものリクエストを生成することは、同時に数百人のユーザーがサイトを訪れるのと同じです。第二に、収集されたデータはしばしば競合他社によって使用されます: Avitoの価格は監視システムに取り込まれ、フォーラムの連絡先はコールドコール用のデータベースに入ります。

現代の保護システムは、多くのパラメータを分析します: 1つのIPからのリクエストの頻度、行動パターン(パーサーがページをあまりにも早く連続して開く)、ブラウザのヘッダー、JavaScriptの有無。たとえば、Avitoは多層防御を使用しています: User-Agentの確認、クッキーの分析、ブラウザのフィンガープリンティング、疑わしい活動時のキャプチャ。

あなたが特定される典型的な兆候:

  • 1つのIPアドレス — すべてのリクエストが1つのIPから来ると、即座にバンされます。
  • 高いリクエスト頻度 — 通常のユーザーは1秒間に10ページを開くことはできません。
  • クッキーとJavaScriptの不在 — 簡単なスクリプトはJSを実行せず、クッキーを保存しません。
  • 疑わしいUser-Agent — 古いブラウザのバージョンやヘッダーの不一致。
  • ページの順次訪問 — パースが厳密に順番通り(ページ1、2、3...)に行われると、不自然に見えます。

フォーラムのパースに適したプロキシはどれか

プロキシの種類の選択は、データの量、予算、ターゲットサイトの保護レベルによって異なります。ここでは、3つの主要なオプションとそのパースへの適用を考察します。

プロキシの種類 速度 サイトの信頼性 最適な用途
データセンターのプロキシ 非常に高い (100+ Mbps) 低い (簡単に特定される) 保護のない小規模フォーラム、アーカイブのパース
レジデンシャルプロキシ 中程度 (10-50 Mbps) 高い (家庭用ネットワークの実際のIP) Avito、大規模フォーラム、保護されたサイト
モバイルプロキシ 中程度 (5-30 Mbps) 最大 (モバイルキャリアのIP) 厳しい保護のあるサイト、連絡先の収集

データセンターのプロキシ — 最も安価なオプションで、簡単なタスクに適しています。もし、特に保護のない小規模なテーマフォーラムや掲示板をパースする必要があるなら、これで十分です。速度は、1時間に何万ページも処理することを可能にします。しかし、Avito、YouDo、forum.ruなどの大規模サイトは、すぐにそのようなIPを特定し、ブロックします。

レジデンシャルプロキシ — ほとんどのタスクに対する価格と品質の最適なバランスです。これは、サイトが通常の訪問者と区別できない家庭ユーザーの実際のIPです。Avito、Yandex.Services、大規模フォーラムのパースには標準的な選択です。重要な点: レジデンシャルプロキシは通常、トラフィックに対して課金されるため、リクエストを最適化してください — 不要な画像やスクリプトを読み込まないようにします。

モバイルプロキシ — 複雑なケースに対する最大の信頼性です。モバイルキャリアのIP(MTS、Beeline、MegaFon)は、1つのIPの背後に何千人もの実際のユーザーがいるため、最高の信頼レベルを持っています(CGNAT技術)。厳しい保護のあるサイトや、バンのリスクなしに重要なデータを収集する必要がある場合に使用します。

Avitoのパース: 特徴と設定

Avitoは、Runetで最も保護されたサイトの1つです。アンチパースシステムには、JavaScriptの確認、ブラウザのフィンガープリンティング、行動分析、わずかな疑いでもキャプチャが含まれます。requestsを使用した単純なスクリプトは機能しません — 3回目のリクエストで空のページやキャプチャが表示されます。

Avitoの安定したパースに必要なもの:

必須コンポーネント:
1. 5-10分ごとにローテーションするレジデンシャルまたはモバイルプロキシ
2. JavaScriptを実行するためのヘッドレスブラウザ(Selenium、Puppeteer、Playwright)
3. 現在のChromeのバージョンに対応したリアルなブラウザのヘッダーとUser-Agent
4. リクエスト間の遅延: ページごとに3-7秒
5. セッション間でのクッキーの保存

典型的なタスクは、競合他社の価格を監視することです。毎日、あなたのカテゴリーの広告を収集し、変更を追跡する必要があります。500-1000件の広告があるカテゴリーには、約50-100のリクエストが必要です(ページネーションと商品カードを考慮)。正しく設定すれば、これには10-15分と1-2GBのレジデンシャルプロキシのトラフィックがかかります。

Avito用パーサーのステップバイステップ設定:

  1. プロキシを取得する — ローテーション付きのレジデンシャルIPプールを注文します。1つのカテゴリーの毎日の監視には、月に10-20GBのトラフィックが必要です。
  2. ヘッドレスブラウザを設定する — SeleniumまたはPuppeteerを使用します。重要: ヘッドレスモードを有効にしますが、検出を回避するためのパラメータを追加します(window.navigator.webdriver = false)。
  3. ブラウザでプロキシを設定する — ブラウザを起動する際にプロキシのデータを渡します。Seleniumの場合は--proxy-serverパラメータ、Puppeteerの場合はpuppeteer.launch()のargsです。
  4. リアルな行動を追加する — 3-7秒のランダムな遅延、データ収集前のページスクロール、マウスの動き(Selenium用)。
  5. クッキーを保存する — 最初の訪問後にクッキーを保存し、次のセッションで使用します。これにより、疑わしさが減ります。
  6. 定期的にIPを変更する — 5-10分ごとまたは20-30リクエストごとにローテーションします。すべてのパースに1つのIPを使用しないでください。

初心者の重大なミスは、あまりにも早くパースすることです。プロキシを使用していても、1秒ごとにページを開くと、システムは行動パターンからボットを特定します。通常のユーザーは、広告を10-30秒間読み、下にスクロールし、検索に戻ります。あなたのパーサーはこれを模倣する必要があります: 遅延、スクロール、時には隣のカテゴリーに移動します。

フォーラムからのデータ収集: 戦略とツール

フォーラムは保護レベルによって異なります。phpBBやvBulletinの古いフォーラムは通常、深刻なアンチボット保護を持っていません — データセンターのプロキシと単純なパーサーで十分です。現代のサイト(forum.ru、専門業界フォーラム)はCloudflareや独自の保護システムを使用しています。

フォーラムのパースにおける典型的なタスク:

  • 連絡先の収集 — ユーザーの署名やメッセージからのメール、電話、Telegram
  • ブランドの言及の監視 — あなたの会社や競合のレビューを追跡
  • 感情分析 — 製品、サービス、業界のトレンドに関する意見の収集
  • リードの検索 — あなたの問題の解決策を探している人々(たとえば、建設フォーラムで請負業者を探している)

小規模なフォーラム(最大10,000ページ)には、既製のツールが適しています: Octoparse、ParseHub、WebHarvy。これらはビジュアルインターフェースを持っており、収集する必要がある要素をクリックするだけで、ツールがパーサーを作成します。設定でプロキシ、遅延を指定し、収集を開始します。

大規模プロジェクト(数十万ページ)には、カスタムパーサーが必要です。人気のフレームワーク: Scrapy(Python)、Puppeteer(JavaScript)、Playwright(すべての言語をサポート)。これらは、クロールのロジック、エラー処理、プロキシプールを介した分散パースを柔軟に設定できます。

業界フォーラムのパース戦略の例:

タスク: 建設フォーラムから専門家の連絡先を収集する(50,000ユーザー、500,000メッセージ)。

1. 50-100 IPのレジデンシャルプロキシを使用
2. ユーザーリスト(50,000プロフィール)を500プロフィール/時の速度でパース(遅延7秒)
3. 100プロフィールごとにIPを変更(12分ごと)
4. プロフィールからメール、ウェブサイト、連絡先の署名を抽出
5. 合計時間: 100時間(4日間の連続作業)
6. トラフィック: 約20-30GBのレジデンシャルプロキシ

重要な点: 多くのフォーラムは、連絡先や隠されたセクションを表示するために登録を要求します。事前にいくつかのアカウントを作成し(手動で、異なるIPから)、1-2週間保持し、いくつかのメッセージを投稿します。これらのアカウントをパースに使用します — 認証されたユーザーは疑いを少なくします。

IPのローテーションとセッション管理

正しいIPのローテーションは、長期的な安定したパースの鍵です。主に2つのアプローチがあります: 時間によるローテーションとリクエスト数によるローテーション。

時間によるローテーション: N分ごとにIPを変更します。予測可能性が重要なタスクに適しています。たとえば、Avitoを5分ごとにパースし、IPを変更する — これにより、1つのアドレスからのリクエスト制限を超えないことが保証されます。欠点: パーサーがクラッシュしたり遅くなったりすると、無駄にIPを失います。

リクエストによるローテーション: NリクエストごとにIPを変更します(たとえば、20-50ページごと)。プロキシのより効率的な使用ですが、正確なカウントが必要です。サイトが1時間にIPから100リクエストを制限する場合、80リクエストでローテーションを設定します — エラーのための余裕を残します。

サイト 推奨ローテーション リクエスト間の遅延
Avito 5-10分ごとまたは20-30リクエストごと 3-7秒
YouDo、Profi.ru 10-15分ごとまたは40-50リクエストごと 4-8秒
Cloudflareを使用したフォーラム 15-20分ごとまたは60-80リクエストごと 5-10秒
簡単なフォーラム(phpBB、vBulletin) 30-60分ごとまたは200-300リクエストごと 2-5秒

セッション管理: IPを変更する際に、セッション(クッキー、localStorage)をリセットするか、保持するかを決定します。認証されたパース(フォーラム、個人アカウント)の場合はセッションを保持しますが、IPをあまり頻繁に変更しないでください — そうしないと、サイトはアカウントがハッキングされたと疑うでしょう(異なる都市からのログイン)。公開データ(認証なしのAvito)の場合は、IPを変更する際にすべてをリセットします — 各IPは新しいユーザーのように見えます。

高度な技術 — スティッキーセッション(sticky sessions)。一部のプロキシプロバイダーは、IPを10-30分間「固定」することを許可します。1つのIPを取得し、その論理的なタスクの範囲内で(たとえば、Avitoの1つのカテゴリーのパース)すべてのリクエストを行い、その後、次のカテゴリーのために新しいIPに変更します。これは、閲覧中にIPを変更するよりも自然です。

プロキシ用の人気パーサーの設定

人気のパーシングツールでのプロキシ設定を考察します。独自のパーサーを書く技術者向けの例です。

Scrapy(Python): プロキシのローテーション用のミドルウェアを追加します。settings.pyにプロキシのリストを作成し、各リクエスト時に自動的にローテーションするためにRandomProxyミドルウェアを使用します。

# settings.py
ROTATING_PROXY_LIST = [
    'http://user:pass@proxy1.example.com:8000',
    'http://user:pass@proxy2.example.com:8000',
    'http://user:pass@proxy3.example.com:8000',
]

DOWNLOADER_MIDDLEWARES = {
    'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
    'rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}

Puppeteer(JavaScript): ブラウザを起動する際にプロキシを渡します。ローテーションのためにプロキシプールを作成し、新しい起動ごとにランダムに選択します。

const puppeteer = require('puppeteer');

const proxyList = [
  'proxy1.example.com:8000',
  'proxy2.example.com:8000'
];

const proxy = proxyList[Math.floor(Math.random() * proxyList.length)];

const browser = await puppeteer.launch({
  args: [
    `--proxy-server=${proxy}`,
    '--no-sandbox'
  ]
});

// プロキシの認証
const page = await browser.newPage();
await page.authenticate({
  username: 'user',
  password: 'pass'
});

Selenium(Python): Chromeのオプションを介してプロキシを設定します。HTTP認証には拡張機能を使用するか、URLに資格情報を渡します。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://user:pass@proxy.example.com:8000')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-blink-features=AutomationControlled')

driver = webdriver.Chrome(options=chrome_options)
driver.get('https://www.avito.ru/moskva/kvartiry')

既製のパーサー(Octoparse、ParseHub): タスクの設定で「Proxy」または「IP Rotation」のセクションを見つけます。host:port:user:pass形式でプロキシのリストを追加するか、ローテーションのためのAPIのURLを指定します。「各リクエストごとにローテート」または「N分ごとにローテート」オプションを有効にします。

アンチボット保護を回避する技術

プロキシはIPによるブロックの問題を解決しますが、現代の保護システムは他の多くのパラメータを分析します。以下は、アンチボットシステムを回避するための対策のセットです。

1. リアルなUser-Agentとヘッダー: 現在のブラウザのバージョンを使用します。今のChrome 120がリリースされているのにChrome 90のUser-Agentを設定しないでください。ヘッダーの一致を確認します: User-Agentが「Windows」と言っているのに、sec-ch-ua-platformヘッダーが「Linux」と言っている場合 — あなたは特定されます。

# 2024年の良いヘッダーセット
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
    'Accept-Encoding': 'gzip, deflate, br',
    'DNT': '1',
    'Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1'
}

2. ヘッドレスブラウザの検出を回避: SeleniumやPuppeteerはデフォルトで自動化の兆候を持っています(navigator.webdriverプロパティ = true)。これらの兆候を隠すために、stealthプラグインやパッチを使用します。

// Puppeteer Stealth Plugin
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

const browser = await puppeteer.launch({headless: true});

3. JavaScriptフィンガープリンティング: サイトはブラウザのフィンガープリンティングを収集します(canvas fingerprint、WebGL、フォント、画面解像度)。これを回避するために、これらのパラメータをランダム化するか、実際のブラウザプロファイルを使用します。ツール: FingerprintJS Randomizer、Multilogin(準備されたプロファイルを持つプラットフォーム)。

4. キャプチャの処理: キャプチャが表示された場合は、認識サービスを使用します: 2Captcha、Anti-Captcha、CapMonster。これらは1000キャプチャあたり$1-3です。APIを介した統合には10-15分かかります。reCAPTCHA v2/v3用の準備されたライブラリがあります。

5. 行動パターン: 行動にランダム性を追加します。厳密に5秒ごとにページを開かないでください — 3秒から8秒の範囲で変動させます。時には30-60秒の休止を取り、長いページを読むことを模倣します。フォーラムでは、時にはユーザープロフィールに移動し、トピックだけを収集しないようにします。

重要: サイトの保護が厳しいほど、パーサーは遅く動作する必要があります。Avitoでは、1つのスレッドから500-1000ページが最適です。もっと必要な場合は、異なるプロキシプールを持つ複数の並行パーサーを起動しますが、それぞれは遅く、自然に動作する必要があります。

結論

フォーラムや掲示板のパースは、包括的なアプローチを必要とするタスクです。プロキシはIPによるブロックの問題を解決しますが、安定した動作には正しいヘッダー、リアルな行動、フィンガープリンティングの回避、適切なローテーションが必要です。プロキシの種類の選択は、ターゲットサイトの保護レベルによって異なります: 簡単なフォーラムにはデータセンターで十分ですが、Avitoや大規模サイトにはレジデンシャルまたはモバイルIPが必要です。

成功するパースの鍵となる原則: ゆっくりと自然に、定期的なIPのローテーション、複雑なサイト用のヘッドレスブラウザの使用、必要に応じたキャプチャの処理。速度を追求しないでください — 500ページを安定して月々収集する方が、5000ページを1時間で収集し、2日後にバンされるよりも良いです。

Avito、YouDo、大規模フォーラム、または厳しい保護のあるサイトをパースする予定がある場合は、レジデンシャルプロキシの使用をお勧めします — これにより、信頼性とコストの最適なバランスが確保されます。特に保護されたサイトや重要なデータの収集には、最大の信頼レベルを持つモバイルプロキシが適しています。

```