Social Ops

プロキシを利用したマルチアカウントソーシャルメディア管理

4 min read Published Updated 853 words

ソーシャルメディアプラットフォームがアカウントを関連付けるのは、魔法ではなく、IPレピュテーション、行動クラスタリング、ブラウザフィンガープリントの衝突を集約することで行います。2つのアカウントで単一のプロキシIPを共有することは直接的なリンクとなります。MetaやTikTokのようなプラットフォームは、共有IPアドレスを95%の信頼度で同一所有者の指標として扱います。アカウントごとにIPを分離せずにプロキシだけに依存すると、数日以内に検出されることが確実です。

共有IPシグネチャがアカウントリンクを引き起こす理由

すべてのHTTPリクエストは送信元IPを保持します。プラットフォームはこのIPをアカウントID、セッションCookie、デバイスフィンガープリントとともに記録します。別のアカウントが同じIPから認証されると、プラットフォームはクロスアカウントIP結合を実行します。これは単純な文字列一致ではなく、サブネットクラスタリング(/24 for IPv4)、ASNの重複、時間的近接性を使用します。2つのアカウントが24時間以内に同じ203.0.113.0/24から出現した場合、リスクスコアが急上昇します。データセンターIPは特に有害です。IP品質データベース(ipqualityscore.comなど)のデータによると、データセンター範囲の80%がソーシャルメディアの不正利用対策チームによって最初の使用から24時間以内にフラグ付けされます。ISPプールからの住宅用IPはより良好ですが、それらもASNでグループ化されます。同じ都市の同じISPから異なるIPを使用する2つのアカウントは、依然としてBGPプレフィックスを共有し、プラットフォームはこれを弱いリンクとして扱います。

モバイル、住宅用、データセンターの検出プロファイル

モバイルIPはキャリアグレードNAT(CGNAT)範囲(RFC 6598)から提供されます。単一のモバイルIPは数千のユーザーにサービスを提供できます。プラットフォームはこれを認識しており、モバイルIPの重複をノイズとして割り引きます。しかし、それでモバイルプロキシが安全になるわけではありません。T-MobileやVodafoneなどのキャリアは既知のASNからIPを割り当て、プラットフォームはキャリアごとのレピュテーションテーブルを維持しています。すべてのアカウントを同じモバイルキャリア経由でルーティングすると、依然としてASNシグナルを共有することになります。ISP(Comcast、Deutsche Telekom)からの住宅用プロキシはIPごとにより優れた匿名性を提供しますが、そのIPプールはしばしば迅速に再利用されます。今日あるアカウントで使用したプロキシIPが、明日には別のユーザーに割り当てられ、セッションの固定性が損なわれる可能性があります。データセンタープロキシは最悪です。安価で高速ですが、即座にフラグ付けされます。プラットフォームはwhoisルックアップを実行し、PTRレコードを確認します。server.provider.comを指す逆DNSは即座に危険信号となります。本番のマルチアカウント設定では、アカウント間で再利用されない専用IPを持つ住宅用またはモバイルプロキシを使用してください。

アカウントごとのスティッキーセッション — IPの永続性は必須

各アカウントは、そのライフサイクル全体を通じて単一のプロキシIPにバインドする必要があります。セッションの固定性により、プラットフォームがIPの変動(それ自体が疑わしいシグナル)を認識するのを防ぎます。最も簡単な実装は、アカウントごとのプロキシ設定ファイルです。以下は、専用プロキシとランダム化されたユーザーエージェントを使用してcurlリクエストを起動するbash関数です。

function acct_request() {
  local account_id="$1"
  local proxy_ip="$2"
  local proxy_port="$3"
  local ua=$(shuf -n1 /path/to/user_agents.txt)
  curl --proxy "socks5://$proxy_ip:$proxy_port" \
       --proxy-user "user:pass" \
       -H "User-Agent: $ua" \
       --cookie "session_$account_id=..." \
       --cookie-jar "/tmp/cookies_$account_id.txt" \
       "https://platform.com/api/endpoint"
}

このスクリプトは、アカウントIDごとにプロキシ割り当てを一定に保ちます。ブラウザ自動化の場合は、Puppeteer--proxy-server経由のページごとのプロキシと専用ブラウザコンテキストとともに使用してください。アカウント間でプロキシを共有しないでください。共有IPからの1回のリクエストでも記録され、1つのアカウントがフラグ付けされたときに遡及的リンクを引き起こす可能性があります。

プロキシ分離と同時に行うブラウザフィンガープリントの分離

IPは1つの次元にすぎません。プラットフォームは、キャンバスフィンガープリント、WebGLレンダラー、インストール済みフォント、タイムゾーン、navigator.hardwareConcurrencyも収集します。異なるIPを持つが同じブラウザフィンガープリントを共有する2つのアカウントは、高い信頼度でリンクされます。フィンガープリントはIPよりも安定していることがよくあります。アカウントごとにフィンガープリントを分離する必要があります。個別のブラウザプロファイル(Chrome --user-data-dir)や、puppeteer-extra-plugin-stealthのようなフィンガープリントランダム化ライブラリを使用したヘッドレスブラウザを使用してください。それでも、微妙なリークが存在します。navigator.webdriverフラグ、chrome.runtimeの存在、WebRTCのローカルIPリークなどです。ブラウザでWebRTCを無効にするか、同じプロキシ経由でルーティングしてください。よくある間違いは、住宅用プロキシを使用しながらWebRTCを有効にしたままにすることです。ブラウザはSTUNリクエストを介して実際のIPをリークし、プロキシを即座に無効化します。

大量停止の連鎖リスク

1つのアカウントがスパム、ポリシー違反、または自動化された動作でフラグ付けされると、プラットフォームはそのアカウントだけで止まりません。過去に同じIP、同じブラウザフィンガープリント、あるいは同じログインパターン(例:同一の時間帯のアクティビティ)を共有したすべてのアカウントをレビュー対象としてキューに入れる、後方スキャンを実行します。これが大量停止の連鎖です。1つの侵害されたプロキシIPが、再利用していた場合には50のアカウントを停止させる可能性があります。さらに悪いことに、プラットフォームは脅威インテリジェンスを共有します。MetaのFacebook ThreatExchangeとGoogleのreCAPTCHA Enterpriseは、IPとフィンガープリントのハッシュを相互に交換します。Instagramでフラグ付けされたIPは、WhatsAppやFacebookでの停止を引き起こす可能性があります。唯一の防御策は厳格な分離です。1つのIP、1つのフィンガープリント、1つのアカウント。共有インフラは使用しないでください。個別の仮想マシンや、コンテナごとのプロキシとフィンガープリント設定を持つDockerコンテナを使用してください。プロキシポールを毎週監査し、virustotal APIやip-api.comなどのツールを使用してIPのブラックリスト登録を確認してください。IPがいずれかの不正利用データベースに出現した場合は、直ちにそのIPを廃止し、アカウントを新しいIPに移行してください。1回の停止連鎖のコストは、アカウントごとに専用プロキシリソースを維持するコストよりも桁違いに高くなります。