コンテンツにスキップ

モバイルアプリ API からデータをスクレイピングするための完全ガイド

現代のモバイルファーストの世界では、モバイル アプリの人気が爆発的に高まり、多くのサービスで従来の Web サイトに取って代わりています。現在、主要なアプリ ストアでは 5 万以上のアプリが利用可能です。平均的なスマートフォン ユーザーは 80 以上のアプリをインストールしています。また、オンラインで費やされる時間の 90% は、モバイル ウェブではなくアプリで占められています。

これはどういう意味ですか? モバイル アプリは、デジタル化が進む世界において、最も価値があり豊富なデータ ソースの 1 つになりつつあります。 位置データ、使用状況統計、プロファイル、トランザクションなどをモバイル アプリのトラフィックから抽出できます。

これは企業、研究者、開発者にとって大きなチャンスとなります。ただし、このデータを収集するには、アプリとそのバックエンド API 間の通信を傍受する必要があります。これは、モバイル アプリが暗号化された HTTPS 接続を使用してデータを安全に送信するためです。

ネットワーク トラフィックを盗聴するだけではコンテンツは明らかになりません。トラフィックを復号化する方法が必要です。

中間者 (MITM) プロキシ サーバーの登場です。

この包括的な 4,000 語のガイドでは、次のことを学びます。

  • MITM プロキシとは正確には何で、どのように機能するのか
  • モバイル アプリのトラフィック分析用に独自の MITM プロキシを設定するステップバイステップの方法
  • プロキシを使用してモバイル アプリ API を観察およびリバース エンジニアリングする方法
  • モバイルアプリ API から貴重なデータをスクレイピングするためのツールとテクニック
  • 責任あるデータ収集のための MITM プロキシのベスト プラクティス

Tinder、Airbnb、Yelp などのアプリからデータを抽出する実際の経験が必要な場合は、ここが最適な場所です。始めましょう!

中間者 (MITM) プロキシとは何ですか?

MITM プロキシがモバイル アプリ データのスクレイピングをどのように許可するかを理解するには、まず HTTPS 暗号化が何を行うかを理解する必要があります。

HTTPS は、SSL/TLS 証明書を使用して、クライアント (モバイル アプリなど) とサーバー (API バックエンドなど) の間の通信を暗号化します。これにより、ネットワーク上でスパイ行為を行う人がトラフィックを閲覧したり改ざんしたりすることが防止されます。

しかし、クライアントと宛先サーバーの間の中間に立って、そのトラフィックを傍受できたらどうなるでしょうか?

これはまさに MITM プロキシが行うことです。プロキシは、すべてのトラフィックが通過する仲介者として機能します。

クライアント <—-> MITM プロキシ <—-> 宛先サーバー

プロキシは、クライアントとサーバーとの個別の SSL 接続を確立して、トラフィックを復号化します。その後、平文リクエストを再暗号化して送信する前に、そのリクエストを検査、分析、さらには変更することができます。

プロキシのルート証明書を信頼された機関としてインストールすることにより、効果的に任意のドメインになりすますことができます。これにより、ブラウザーのセキュリティ警告をトリガーすることなく、シームレスな傍受が可能になります。

一般的な MITM プロキシには次のようなものがあります。

プロキシプラットフォームノート
ミットプロキシMac、Windows、Linux強力なコンソールベースのツール
チャールズプロキシMac、Windows、LinuxGUI、デバイス設定サポート
バイオリン弾きWindowsWindows アプリからのトラフィックをデバッグできる

このガイドでは、次の使用方法を示します。 ミットプロキシ それは無料でオープンソースであり、セットアップが速いためです。

次に、MITM プロキシを介してトラフィックをルーティングするようにモバイル デバイスを構成する方法を見てみましょう。

ステップ 1: コンピュータに mitmproxy をインストールする

最初のステップは、デスクトップまたはラップトップ コンピュータに mitmproxy プロキシ サーバーをインストールして起動することです。それを経由するように設定されたデバイスからのリクエストをインターセプトします。

macOS にインストールする

Mac を使用している場合、mitmproxy をインストールする最も簡単な方法は、Homebrew を使用することです。

$ brew install mitmproxy

Linux にインストールする

Linux では、ディストリビューションのパッケージ マネージャーを使用します。例:

$ sudo apt install mitmproxy # Debian/Ubuntu
$ sudo dnf install mitmproxy # Fedora

Windows にインストールする

Windows ユーザーは、次から公式バイナリ リリースをダウンロードできます。 mitmproxy.org。 mitmdump ユーティリティではなく、必ず最新の mitmproxy バージョンを選択してください。

プロキシを開始する

インストールしたら、デフォルトのポート 8080 で mitmproxy を起動します。

$ mitmproxy

インターセプトされたリクエストが mitmproxy コンソールに表示されるはずです。

mitmproxy コンソール

プロキシを使用するようにモバイル デバイスを設定するときは、これをバックグラウンドで実行したままにしてください。

ステップ 2: mitmproxy 経由でルーティングするようにモバイル デバイスを構成する

ここで、インターセプトのために mitmproxy プロキシを介してトラフィックをルーティングするようにモバイル デバイスを構成する必要があります。

一般的なモバイル オペレーティング システムの手順は次のとおりです。

iPhone/iOSの場合

  1. iPhone を mitmproxy を実行しているコンピュータと同じ Wi-Fi ネットワークに接続します。

  2. [設定] > [Wi-Fi] に移動し、現在のネットワークを選択します。

  3. スクロールしてタップする プロキシを構成する.

  4. 選択 マニュアル 独自のプロキシの詳細を設定するには:

    • サーバー: ネットワーク上のコンピュータの IP アドレス (例: 192.168.1.10)

    • ポート:8080

これにより、すべてのデバイス トラフィックがコンピュータと mitmproxy 経由でルーティングされます。

Androidの場合

  1. Android デバイスをプロキシと同じ Wi-Fi ネットワークに接続します。

  2. [設定] > [Wi-Fi] > [詳細オプション] > [プロキシ] に移動し、選択します マニュアル.

  3. 「ホスト名」フィールドにコンピュータの IP アドレスを入力し、「ポート」に 8080 を入力します。

  4. 「保存」をタップしてプロキシ構成を適用します。

Windows Phone の場合

  1. スタート画面から左にスワイプしてアプリリストを表示し、 をタップします 設定.

  2. 無線LAN 接続されているネットワークを長押しします。選択する 編集.

  3. 高度なオプションを表示 その後 プロキシを設定する マニュアルに。

  4. コンピュータの IP アドレスとポートに 8080 を入力します。

  5. Save プロキシ経由で接続します。

以上です!これで、モバイル デバイスは、傍受のためにすべてのトラフィックを mitmproxy 経由でルーティングするようになります。

ステップ 3: mitmproxy 証明書をモバイルデバイスにインストールする

この時点で、モバイル デバイスからのトラフィックが mitmproxy コンソールに表示されるようになります。ただし、ほとんどのアプリは HTTPS を使用するため、コンテンツを表示することはできません。

HTTPS トラフィックを復号化するには、モバイル デバイスに信頼されたルート認証局として mitmproxy 証明書をインストールする必要があります。

Mitmproxy は、次の場所に便利なサイトを提供しています。 http://mitm.it これにより、特定のデバイス プラットフォームの証明書が生成されます。

単に行く http://mitm.it モバイル デバイスのブラウザで、OS のリンクをクリックします。

mitm.it サイト

次に、ダウンロードした証明書をデバイスにインストールします。

iOSの場合

  1. [設定] > [一般] > [バージョン情報] > [証明書の信頼設定] に移動します。

  2. 有効にします ミットプロキシ 証明書

Androidの場合

  1. を助けて mitmproxy-ca-cert.pem デバイスストレージ上のどこかにファイルを保存する

  2. [設定] > [セキュリティ] > [ストレージからインストール] に移動します。

  3. 現在地に最も近い mitmproxy-ca-cert.pem file

Windows Phone の場合

  1. [システム] > [暗号化] > [証明書のインポート] に移動します。

  2. ダウンロードしたものを選択します mitmproxy-ca-cert.crt

mitmproxy 証明書を VPN またはアプリに対して信頼できるものとして設定する必要がある場合があります。 mitmproxy は、デバイスからの HTTPS 暗号化トラフィックさえも傍受できるようになりました。

トラフィックをデバッグする必要がある場合にのみ証明書を有効にし、完了したら無効にしてください。他のアプリのデータを不必要に公開しないでください。

さて、楽しい部分の時間です…モバイル アプリ API をリバース エンジニアリングしてスクレイピングするためにトラフィックを観察する方法を見てみましょう。

ステップ 4: モバイル アプリ API の観察と反転

プロキシを使用するように構成されたデバイスで、学習するモバイル アプリを開きます。たとえば、Swiggy 食品配達アプリを使用します。

コンピューターの mitmproxy コンソールに、モバイル デバイスの IP アドレスからのリクエストが表示されるはずです。

分析する API のドメインでビューをフィルターします。スウィッギーの場合はこれです prod-api.swiggy.com:

mitmproxy の Swiggy API トラフィック

モバイル アプリを操作するときは、API リクエストのパターンを探してください。リクエストを展開して詳細を表示できます。

拡張されたAPIリクエスト

さまざまなアプリ フローをテストすると、バックエンド API にどのようなエンドポイントが存在し、どのようなデータが返されるのかが明らかになります。スクレイピングに関して興味があるのは、 GET JSON データを返すリクエスト。

Swiggy からのトラフィックを観察すると、次のことがわかります。

  • /restaurants/list/v5 ある場所のレストランのリストを返します
  • /menu/v4 特定のレストランのメニューを取得します
  • /geocode/v1 住所を緯度/経度座標に変換します

等々。これにより、API エンドポイントを理解し、計画を立てることができます。

これで、API リクエストを複製してデータを抽出できるようになりました。たとえば、電話をかけると、 /restaurants/list/v5 lat & lng パラメータはレストランの JSON リストを返します。

import requests

api_url = ‘https://prod-api.swiggy.com/restaurants/list/v5‘

params = {
  ‘lat‘: 12.972442, 
  ‘lng‘: 77.580643 
}

response = requests.get(api_url, params=params)
data = response.json() 

for restaurant in data:
  print(restaurant[‘name‘], restaurant[‘area‘])

これにより、指定された場所の近くにある Swiggy レストランの名前とエリアが印刷されます。プロキシを使用すると、アプリがどのように機能するかを確認し、スクレイピング用の API をリバース エンジニアリングできます。

モバイルアプリAPIのスクレイピング戦略

アプリの API トラフィックを検査してエンドポイントとパラメーターを理解したら、プログラムによるデータの収集を開始できます。

いくつかのベストプラクティスがあります:

  • プロキシを使用する – レート制限によるブロックを避けるために、異なるレジデンシャル IP をローテーションします。

  • 入力をランダム化する – 地理座標やユーザー ID などを変更して、より人間らしく見えるようにします。

  • スロットルリクエスト – リクエスト間に遅延を追加して、ボリュームを制限します。

  • データをキャッシュする – 重複したリクエストを避けるために応答を保存します。

  • エラーを処理する – 失敗したリクエストを再試行し、HTTP エラーを適切に処理します。

  • データのページ付け – 応答内のページネーション リンクに従って、すべてのデータを抽出します。

  • 必要に応じて POST を使用する – 注文などの一部のアクションには POST リクエストが必要です。

  • 素早く解析する – すべてを解析するのではなく、必要なデータだけを抽出します。

  • メタデータのスクラブ – レコードを識別する可能性のある一意の ID、タイムスタンプなどを削除します。

  • 最新のものにします – アプリの更新後に API の変更を確認します。

創造性を活かして、モバイル アプリ API からあらゆる種類の貴重なデータを抽出するスクレイパーを構築できます。利用規約を注意深く遵守し、責任を持ってデータを使用してください。

責任あるモバイル API スクレイピング

他の形式の Web スクレイピングと同様に、モバイル API からデータを収集するには、いくつかの倫理的考慮事項が必要です。

  • サーバーに過負荷をかけないでください – 影響を最小限に抑えるためにリクエスト量を制限します。

  • 使用を制限する – 必要性が正当化できるデータのみを収集します。

  • 利用規約を尊重する – 利用規約やNDAへの違反を避けてください。

  • データを保護する – データを安全に保存し、保存期間を最小限に抑えます。

  • データの匿名化 – 目的に不要な個人情報を削除します。

  • 法律をチェックする – 場所によってはデータ収集の種類を規制している場合があります。

  • 賢明に使う – データは単に収集できるから収集するのではなく、価値を提供する必要があります。

透明性と倫理は非常に重要です。優れたデータには大きな責任が伴います。

まとめ

このガイドが、中間者プロキシによるモバイル アプリ データの傍受に関する包括的な概要を提供できたことを願っています。重要なポイント:

  • MITM プロキシを使用すると、プロキシ証明書をインストールすることで、モバイル アプリからの HTTPS トラフィックを傍受できます。

  • mitmproxy などのツールを使用すると、このトラフィックを検査して、アプリが API バックエンドとどのように通信するかを簡単に理解できます。

  • API エンドポイントをリバース エンジニアリングすると、リクエストを複製してモバイル アプリ データを収集できるようになります。

  • プロキシ、スロットル、その他の技術を使用して、モバイル アプリ データを大規模に効率的に収集できます。

  • 倫理的かつ合法的にモバイル API をスクレイピングするようにしてください。

モバイル アプリケーションは、利用されるのを待っている大量のデータを提供します。 MITM プロキシを使用してアクセスする方法がわかったので、可能性は無限大です。

どのクールなアプリからデータのスクレイピングを始めますか?他にもモバイル プロキシ スクレイピングに関するご質問がございましたら、お知らせください。

参加する

あなたのメールアドレスは公開されません。 必須フィールドは、マークされています *