Twitter(現在はX)は自動データスクレイピングに積極的に対抗しています: IPアドレスをブロックし、リクエスト数を制限し、疑わしい活動があればアカウントを禁止します。マーケティングリサーチ、ブランドの言及のモニタリング、競合分析のためにデータを収集している場合は、プロキシとアンチデテクトツールを使用する正しい戦略が必要です。
このガイドでは、Twitter/Xの安全なスクレイピングを設定する方法、さまざまなタスクに適したプロキシの選び方、プロフィールの大量パース時にブロックを回避する方法を説明します。
なぜTwitter/Xはスクレイピングをブロックするのか、その仕組み
Xへのリブランド後、プラットフォームは自動データ収集に対するポリシーを大幅に厳格化しました。保護システムは複数のパラメータを同時に分析し、手動での作業でも注意を怠るとブロックされる可能性があります。
Twitter/Xのブロックの主なトリガー
1. レート制限の超過。 Twitterは1分あたりのリクエスト数に厳しい制限を設けています。未認証のユーザーには約15分ごとに180リクエスト、認証されたユーザーには最大900リクエストが許可されています。制限を超えるとエラー429(リクエストが多すぎます)が表示され、継続的な違反があるとIPアドレスが禁止されます。
2. 疑わしい行動パターン。 1分間に10のプロフィールを開いたり、同じ速度でページをスクロールしたり、間隔を置かずにアクションを実行すると、システムはボットを認識します。実際のユーザーは間隔を置き、コンテンツを読み、時には気を散らします。
3. 複数のアカウントに対して同じIPを使用。 短時間に1つのIPアドレスから5〜10の異なるアカウントがアクセスすると、赤信号です。Twitterはすべてのアカウントを連鎖的にブロックする可能性があります(チェーンバン)。
4. デジタルフィンガープリントの欠如。 プラットフォームはブラウザに関するデータを収集します: バージョン、拡張機能、画面解像度、タイムゾーン、WebGL、Canvas。これらのデータが実際のデバイスと一致しない場合や、複数のアカウントで一致する場合は、疑いの理由となります。
⚠️ 重要: イーロン・マスクによるTwitterの買収とXへのリブランド後、保護システムはより攻撃的になりました。APIアクセスも今では有料(基本料金で月額$100から)で、ウェブインターフェースを通じた無料のスクレイピングは特に厳しく監視されています。
Twitter/Xはどのように自動化を特定するか
保護システムは多層的な分析を使用しています:
- User-Agentとヘッダーの分析。 HTTPリクエストのヘッダーが実際のブラウザと一致しない場合や、自動化の痕跡(例えば、User-AgentにSeleniumやPuppeteerが含まれている)を含む場合、リクエストはブロックされます。
- JavaScriptの検証。 Twitterは、ページが実際のブラウザによって開かれていることを確認するためにJavaScript呼び出しを積極的に使用しています。
- マウスとキーボードの動作分析。 プラットフォームはカーソルの動き、スクロール速度、クリックパターンを追跡します。ボットは通常、直線的に動くか、全くマウスを動かさないことが多いです。
- IPアドレスの評判。 IPがブラックリストに載っている場合(有名なホスティングプロバイダーのデータセンターや評判の悪いプロキシプロバイダー)には、その信頼性が低下します。
Twitter/Xのパースに適したプロキシ: タイプの比較
プロキシのタイプの選択は、あなたのタスクによって異なります: 公開データの大量パース、認証されたアカウントとの作業、競合のモニタリング。各タイプとそのTwitter/Xでの使用法を説明します。
レジデンシャルプロキシ — アカウント作業に最適な選択
レジデンシャルプロキシは、インターネットプロバイダーによって提供された実際の家庭ユーザーのIPアドレスを使用します。Twitter/Xにとって、これは最も安全なオプションであり、プラットフォームはこのトラフィックを通常のユーザーと区別できません。
Twitter/Xにレジデンシャルプロキシを使用するタイミング:
- 認証されたアカウントとの作業(ログイン、非公開プロフィールのパース)
- 特定のアカウントやハッシュタグの長期的なモニタリング
- 高強度でのパース(バンのリスクを最小限に抑える必要がある場合)
- 異なる地理的地域からのデータ収集(地域トレンドの分析など)
利点: Twitter/Xからの最大の信頼レベル、低いブロック率、キャプチャに対する作業の可能性(通常は発生しない)、スティッキーセッションのサポート(1つのIPが10〜30分間使用される)。
欠点: より高いコスト(通常はトラフィックに対して支払い、1GBあたり$7-15)、データセンターよりも速度が遅い。
モバイルプロキシ — アカウントの最大保護のために
モバイルプロキシは、モバイルキャリア(4G/5G)のIPアドレスを使用します。これはソーシャルメディアにとって最も信頼されるタイプのIPであり、Twitter/XはモバイルIPをブロックすることはほとんどありません — 一つのアドレスの背後には数千の実際のユーザーがいる可能性があります。
Twitter/Xにモバイルプロキシを使用するタイミング:
- 失いたくない貴重なアカウントとの作業
- 以前のブロック後のパース(最大限の保護が必要な場合)
- アクションの自動化: いいね、リツイート、フォロー(ただし、これはTwitterの利用規約に違反します)
- IPによる厳しいブロックを回避(モバイルIPはほとんどブラックリストに載ることがありません)
利点: 最大の信頼レベル、IPによるバンのリスクがほぼゼロ、"エアプレーンモード"を通じたIPのローテーションの可能性(5〜10分ごとにIPを変更)。
欠点: 最も高価なプロキシタイプ(1か月あたり1つのIPで$50-100)、利用可能なIPの数が限られている、速度はモバイル接続の品質に依存します。
データセンタープロキシ — 公開データの大量パース用
データセンタープロキシはホスティングプロバイダーのサーバーのIPアドレスです。これらは高速で安価ですが、Twitter/Xはこれらに対して疑いを持っています。
Twitter/Xにデータセンターを使用できるタイミング:
- 認証なしでの公開プロフィールのパース(機能が制限される)
- 低強度でのデータの一時的な収集
- レジデンシャルプロキシでの実行前にパーススクリプトのテスト
- 公式APIを通じて作業(有料アクセスがある場合)
利点: 低コスト(1か月あたり$1-3)、高速度(最大1Gbps)、安定した接続。
欠点: 高いブロックリスク、キャプチャの解決が頻繁に必要、認証されたアカウントとの作業には適さない、多くのIPがすでにTwitter/Xのブラックリストに載っています。
Twitter/X用プロキシタイプの比較表
| パラメータ | レジデンシャル | モバイル | データセンター |
|---|---|---|---|
| Twitter/Xからの信頼レベル | 高い | 非常に高い | 低い |
| ブロックのリスク | 低い(5-10%) | 最小(1-3%) | 高い(30-50%) |
| アカウントとの作業 | ✅ はい | ✅ はい | ❌ 推奨されません |
| 速度 | 中程度(10-50 Mbps) | 中程度(5-30 Mbps) | 高い(100-1000 Mbps) |
| コスト | $7-15 / 1GB | $50-100 / IP / 月 | $1-3 / IP / 月 |
| 最適な用途 | 認証付きパース | 貴重なアカウント | 公開データ |
Twitter/Xのレート制限: リクエストの制限を超えない方法
Twitter/Xはサーバーの過負荷と自動データ収集を防ぐために、リクエスト数に厳しい制限を設けています。制限を超えると、一時的なブロック(15分から数時間)またはIP/アカウントの永久禁止を受けることになります。
Twitter/Xの現在の制限(2024年)
X Premiumの有料サブスクリプションが導入された後、制限は複数のカテゴリに分かれました:
| アカウントタイプ | ツイートの表示/日 | APIリクエスト(15分) |
|---|---|---|
| 未認証 | 制限付きアクセス | 約180リクエスト |
| 無料アカウント | 600-1000ツイート | 約300リクエスト |
| X Premium($8/月) | 6000-10000ツイート | 約900リクエスト |
| 認証済み(旧) | 厳しい制限なし | 約900リクエスト |
重要: これらの制限はAPIだけでなく、通常のウェブインターフェースでの表示にも適用されます。ユーザーの行動をエミュレートするブラウザを通じてパースしている場合でも、これらの制限は依然として適用されます。
パース時のレート制限を回避する方法
1. IPアドレスのローテーション。 自動ローテーション機能を持つプロキシプールを使用します。レジデンシャルプロキシの場合、最適な変更頻度は50〜100リクエストごと、または10〜15分ごとです。これにより、異なるIP間で負荷を分散し、1つのアドレスの制限を超えないようにします。
2. 複数のアカウントの使用。 大量のデータを収集する必要がある場合は、5〜10のTwitter/Xアカウントを作成し、パースをそれらに分散させます。各アカウントは独自のプロキシを通じて作業し、個別のデジタルフィンガープリントを持つ必要があります。
3. リクエスト間の遅延。 最大速度でリクエストを行わないでください。ランダムな間隔を追加します:
- プロフィールの表示間: 3-7秒
- フィードのスクロール間: 2-5秒
- ハッシュタグ検索間: 5-10秒
- 50-100アクションごとの長い間隔: 30-60秒
4. データのキャッシュ。 同じデータを再度リクエストしないでください。パース結果をデータベースに保存し、プロフィールがすでに処理されていないか確認します。
💡 アドバイス: エラー429(リクエストが多すぎます)を受け取った場合、すぐにリクエストを再試行しないでください。最低でも15分の間隔を置くか、プロキシのローテーションを通じてIPアドレスを変更してください。再試行は永久的な禁止につながる可能性があります。
安全なスクレイピングのためのアンチデテクトブラウザの設定
アンチデテクトブラウザは、各Twitter/Xアカウントにユニークなデジタルフィンガープリントを作成することを可能にし、安全なパースにとって重要です。これがないと、プラットフォームは複数のアカウントを相互に関連付け、連鎖的にブロックする可能性があります。
Twitter/X用の人気のアンチデテクトブラウザ
Dolphin Anty — アービトラージャーやSMM専門家の間で最も人気のあるオプションの1つです。無料プランでは最大10のプロファイルを作成でき、小規模なパースタスクには十分です。
AdsPower — 機能と価格の良いバランスを提供します。RPA(ロボティックプロセスオートメーション)を通じた組み込みの自動化があり、コードを書くことなくパースを設定できます。
Multilogin — 最大の保護レベルを持つプレミアムソリューションです。大規模なエージェンシーによって使用されますが、高価です(€99/月から)。大規模なデータのプロフェッショナルなパースのためにのみ正当化されます。
GoLogin — 良好なフィンガープリントの品質を持つ予算に優しいオプションです。アカウントを移動中に操作するためのモバイルアプリがあります。
Twitter/Xのパース用プロファイルのステップバイステップ設定(Dolphin Antyの例)
ステップ1: 新しいブラウザプロファイルの作成
- Dolphin Antyを開き、「プロファイルを作成」をクリックします。
- オペレーティングシステムを選択します: Windows、macOS、またはLinux(実際のデバイスに一致するもの、またはTwitterユーザーの間で最も一般的なものを選択してください)
- プロファイル名を指定します: 例えば、「TwitterパーサーUS #1」
ステップ2: プロキシの設定
- 「プロキシ」セクションでタイプを選択します: HTTP、HTTPS、またはSOCKS5(Twitter/XにはSOCKS5が好ましい)
- プロキシのデータを入力します: IPアドレス、ポート、ログイン、パスワード
- 「プロキシを確認」をクリックします — ステータスが緑で、ジオロケーションが正しいことを確認します。
- 重要: 各Twitter/Xアカウントには別々のプロキシを使用してください。
ステップ3: フィンガープリントの設定
- User-Agent: 現在のChromeの実際のUser-Agentを選択します(例えば、Windows 10のChrome 120など)
- 画面解像度: 人気の解像度を使用します(1920x1080、1366x768、1440x900) — エキゾチックな値は設定しないでください。
- タイムゾーン: プロキシのジオロケーションと一致する必要があります(プロキシが米国/ニューヨークの場合はESTを設定)
- ブラウザの言語: 地域に応じて(米国の場合はen-US、英国の場合はen-GB)
- WebRTC: 無効にするか、プロキシのIPに置き換えます(さもなければ、実際のIPが漏れる可能性があります)
- CanvasとWebGL: 「Noise」モードを使用します(ノイズを追加) — これにより、各プロファイルにユニークなフィンガープリントが作成されます。
ステップ4: 追加のセキュリティ設定
- パスワードの自動入力を無効にします(Twitterは保存されたデータの存在を確認する可能性があります)
- 各スクレイピングセッションの後にクッキーをクリアします。
- ブラウザの拡張機能を使用しないでください — これらはユニークなフィンガープリントを作成し、自動化を明らかにする可能性があります。
- 「Do Not Track」(DNT)を有効にします — 多くの実際のユーザーがこれを使用しています。
⚠️ 重大なエラー: 複数のアカウントに同じフィンガープリントを使用しないでください! Twitter/Xは同一のデジタルフィンガープリントを簡単に検出し、関連するすべてのアカウントをブロックします。アンチデテクトブラウザ内の各プロファイルはユニークなパラメータを持つ必要があります。
Twitter/Xのパースツール: 完成されたソリューションからコードまで
ツールの選択は、あなたの技術的スキルとタスクのボリュームによります。コードなしの簡単なサービスからプロフェッショナルなスクリプトまでのオプションを説明します。
Twitter/Xの完成されたパースサービス(コードなし)
Phantombuster — Twitter/X用のテンプレートを備えたクラウド自動化サービスです。プロフィール、フォロワー、ハッシュタグによるツイートをパースできます。設定には5〜10分かかります: テンプレートを選択し、パラメータ(ハッシュタグ、アカウントリスト)を指定し、プロキシを接続して開始します。
Apify — 完成されたスクレイパーのマーケットプレイスです。Twitter/X用のいくつかのアクター(完成されたスクリプト)があり、プロフィールのパース、ツイートの収集、言及のモニタリングが可能です。クラウドを通じて動作し、プロキシをサポートし、制限のある無料プランがあります。
Octoparse — ビジュアルパーサーのコンストラクタです。プログラムのインターフェースでTwitter/Xを開き、収集する必要のある要素(名前、バイオ、フォロワー数)をクリックすると、プログラムが自動的にスクリプトを作成します。簡単なタスクには適していますが、ページの複雑な構造には対応できない場合があります。
アンチデテクトブラウザでのRPAによる自動化
一部のアンチデテクトブラウザ(AdsPower、Octo Browser)には、ユーザーのアクションを記録して再生するための組み込みRPA(ロボティックプロセスオートメーション)ツールがあります。
動作方法:
- アンチデテクトブラウザでTwitter/Xを開きます。
- アクションの記録モードをオンにします。
- 必要なアクションを実行します: プロフィールを開き、データをコピーし、次に進みます。
- 記録を停止します — ブラウザがスクリプトを作成しました。
- パース用のアカウントリストをアップロードし、スクリプトをループで実行します。
利点: プログラミングスキルを必要とせず、実際のブラウザを通じて動作するため(高い保護回避レベル)、ランダムな遅延や行動のエミュレーションを簡単に追加できます。
コードによるパース: Python + Selenium/Playwright
より複雑なタスクやプロセスの完全な制御が必要な場合は、プログラミングを使用します。Pythonは、豊富なライブラリのエコシステムのおかげで、スクレイピングに最も人気のある言語です。
主要なライブラリ:
- Selenium — ブラウザの自動化、Chrome/Firefoxで動作し、プロキシとユーザーアクションのエミュレーションをサポートします。
- Playwright — Seleniumの現代的な代替手段で、より高速で安定しており、ヘッドレスモードをサポートします。
- Tweepy — Twitterの公式APIと連携するためのライブラリ(有料アクセスが必要)
- Twint — APIなしでTwitterをパースします(注意: Twitterはこの方法を積極的にブロックしており、不安定に動作します)。
Python + Seleniumの基本スクリプトの例:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time
import random
# プロキシの設定
proxy = "123.45.67.89:8080" # あなたのプロキシに置き換えてください
chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={proxy}')
chrome_options.add_argument('--disable-blink-features=AutomationControlled')
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
# ブラウザの初期化
driver = webdriver.Chrome(options=chrome_options)
# Twitterプロフィールを開く
driver.get('https://twitter.com/elonmusk')
time.sleep(random.uniform(3, 7)) # ランダムな遅延
# プロフィールデータをパース
try:
name = driver.find_element(By.XPATH, '//div[@data-testid="UserName"]').text
bio = driver.find_element(By.XPATH, '//div[@data-testid="UserDescription"]').text
followers = driver.find_element(By.XPATH, '//a[contains(@href, "/followers")]/span').text
print(f"名前: {name}")
print(f"バイオ: {bio}")
print(f"フォロワー: {followers}")
except Exception as e:
print(f"パースエラー: {e}")
driver.quit()
コード作業時の重要なポイント:
- アクション間に
time.sleep(random.uniform(3, 7))を追加してください — これは実際のユーザーの行動をエミュレートします。 --disable-blink-features=AutomationControlledを使用して自動化の兆候を隠してください。- リアルなUser-Agentに変更してください:
chrome_options.add_argument('user-agent=Mozilla/5.0...') - try/exceptを通じてエラーを処理してください — Twitter/Xはページの構造を頻繁に変更します。
- 結果をデータベース(SQLite、PostgreSQL)またはCSVファイルに保存してください。
大量パース前のTwitter/Xアカウントのウォーミングアップ
新しいTwitter/Xアカウントをパースに使用する場合、大量のデータ収集をすぐに開始することはできません。プラットフォームはアカウントの「年齢」とその活動を追跡しており、攻撃的な行動をする新しいアカウントは最初にブロックされます。
アカウントのウォーミングアッププラン(7-14日)
1-3日目: 基本設定と最小限の活動
- プロフィールを設定します: アバター、バイオ、ウェブサイトのリンク(実際のデータを使用し、プロフィールを空にしないでください)
- ニッチ内の人気アカウントに5〜10フォローします。
- フィードを2〜3分間スクロールし、2〜3いいねを付けます。
- 1〜2リツイートを行います。
- 1日に10アクション以上は行わないでください。
4-7日目: 活動の増加
- さらに10〜15アカウントをフォローします。
- 1〜2の自分のツイートを投稿します(「Hello Twitter!」のような簡単なものでも可)。
- 1日にいいねの数を5〜10に増やします。
- 他のユーザーのプロフィールを閲覧し始めます(1日に5〜10のプロフィール)。
- いくつかのツイートをブックマークします。
8-14日目: パースの準備
- 20〜30アカウントをフォローし、合計フォロー数を50〜70にします。
- 2〜3日に1ツイートを投稿します。
- 1日に10〜20のプロフィールを閲覧します。
- ハッシュタグ検索を使用します(ただし、まだパースしないでください — 単に検索して読むだけです)。
- 12〜14日目には軽いパースを開始できます: 1日に20〜30のプロフィールを間隔を置いてパースします。
💡 アドバイス: Twitter/Xアカウントを購入する場合(ファームアカウント)、最低でも3〜6ヶ月の年齢があり、プロフィールが充実していて活動履歴があるものを選択してください。このようなアカウントはすぐにパースに使用できますが、それでも小規模なボリュームから始めてください。
「ウォームアップ」されたアカウントの兆候
- アカウントの年齢: 最低14日、できれば30日以上
- フォロー数: 50〜100(多すぎず、少なすぎず)
- フォロワー数: 5〜20(実際のフォロワーが数人いるだけで信頼が増します)
- ツイート履歴: 最低5〜10の投稿
- いいねとリツイート: 履歴に20〜50のアクション
- 充実したプロフィール: アバター、バイオ、場合によってはリンク
安全なスクレイピングのチェックリスト: バンからの保護のための12のルール
Twitter/Xのパース時に遵守すべきすべての推奨事項を1つのチェックリストにまとめます:
✅ セキュリティチェックリスト
1. 高品質のプロキシを使用してください。
- アカウントとの作業には: レジデンシャルまたはモバイルプロキシを使用してください。
- 1つのプロキシ = 1つのアカウント(混合しないでください)。
- 使用前にプロキシのジオロケーションを確認してください。
2. ユニークなフィンガープリントを設定してください。
- アンチデテクトブラウザを使用してください(Dolphin Anty、AdsPower、Multilogin)。
- 各アカウント = ユニークなパラメータのセット(User-Agent、解像度、タイムゾーン)。
- WebRTCを無効にするか、プロキシのIPに置き換えてください。
3. レート制限を遵守してください。
- 1つのアカウントから1時間あたり300〜500リクエストを超えないでください。
- アクション間にランダムな遅延を追加してください: 3〜7秒。
- 50〜100アクションごとに長い間隔を取ってください(30〜60秒)。
4. 新しいアカウントをウォームアップしてください。
- アクティブなパースの前に最低7〜14日間待ってください。
- プロフィールを充実させ、活動履歴を作成してください。
- 小規模なボリュームから始めてください: 1日に20〜30のプロフィール。
5. 実際のユーザーの行動をエミュレートしてください。
- ランダムなマウスの動きを追加してください。
- 異なる速度でページをスクロールしてください。
- 時には気を散らしてください: 他のタブを開いたり、間隔を置いたりします。
6. IPアドレスをローテーションしてください。
- 50〜100リクエストごと、または10〜15分ごとにIPを変更してください。
- 安定性のためにスティッキーセッションを使用してください(1つのIPが10〜30分間使用される)。
- 同じIPにあまり頻繁に戻らないでください。
7. エラーを適切に処理してください。
- エラー429(リクエストが多すぎます)の場合 — 最低15分間の間隔を置いてください。
- エラー403(禁止)の場合 — IPを変更し、フィンガープリントを確認してください。
- キャプチャが表示された場合 — 手動で解決するか、サービスを通じて解決してください(2Captcha、AntiCaptcha)。
8. データをキャッシュしてください。
- 結果をデータベースに保存してください。
- 同じプロフィールを再度パースしないでください。
- ログを保持してください: どのプロフィールがいつ処理されたか、どのような結果が得られたか。
9. 負荷を分散してください。
- 大規模なパースのために5〜10のアカウントを使用してください。
- 各アカウントは独自のリズムで動作します(同期しないでください)。
- 異なる時間帯にパースしてください(すべてのアカウントを同時に使用しないでください)。
10. ピーク活動時間に作業してください。
- ターゲットジオロケーションの労働時間にパースしてください(現地時間の9:00〜18:00)。
- 夜間のパースを避けてください(00:00〜06:00) — これは疑わしいです。
11. アカウントの状態を監視してください。
- アカウントを毎日確認してください: ブロックされていないか、警告がないか。
- アカウントが警告を受けた場合 — 3〜7日間活動を減らしてください。
- 統計を保持してください: 各アカウントがどれだけのプロフィールをパースしたか、問題があったか。
12. ダイレクトメッセージや非公開データをパースしないでください。
- 公開データのみを収集してください: プロフィール、ツイート、フォロー。
- プライベートアカウントを回避しようとしないでください。
- Twitter/Xの利用規約を遵守してください(パースはこれに違反しますが、リスクを最小限に抑えてください)。