警告: この記事は学習や研究のための参考のみを目的としており、違法な目的には使用しないでください。
前回の記事「Mobike 非公式ビッグデータ分析」では、春祭り中の Mobike のデータ分析について説明しました。次の一連の記事では、このデータへのクローラーの効率についてさらに詳しく説明します。
なぜMobikeのデータをクロールするのか
Mobikeは成都に入る最初のシェア自転車で、毎日地下鉄の駅を降りるとAPPでたくさんの自転車が見えますが、到着すると自転車が見えなくなります。そこにはいない。どこかに隠れている車もあれば、GPS のエラーで見つからない車もあり、自転車が近づけないように壁で区切られて住宅地に置かれている車もあります。
それでは、これらの自転車がゾンビ自転車になっているかどうかを分析するために、これらの自転車のデータを取得する方法はあるのでしょうか?誰かが意図的に誰もアクセスできないようにコミュニティに公開したのでしょうか?
これらの疑問をきっかけに、このデータを取得する方法を研究し始めました。
データの入手先
データを確認できる場合は、データを自動的に取得する方法が常に用意されています。ただ、Mobike のデータ分析のタスクでは、データの取得方法がデータ分析の効率を左右します。では、データはどこから来たのでしょうか?
最も直接的な情報源は Mobike アプリです。最新のソフトウェア設計では、フロントエンドとバックエンドの分離に注意が払われており、サーバーはAPP、Webページなどを同時に提供します。この傾向では、ソフトウェアの HTTP リクエストを理解するだけで済みます。一般的に、役立ついくつかのツールがあります:
キャプチャパケットを直接キャプチャする:
CharlesPacketCapture(Android)ルーター上では干渉が多すぎて、https に対処するのは簡単ではありません。したがって、最初に Fiddler または Charles を使用してみるしかありません。 Fiddler のプロキシを切断し、携帯電話で場所を移動し続けて、新しいリクエストがあるかどうかを確認します。しかし、残念ながら、リクエストはすべてAmap- map
- を取得するためのもののようで、Mobikeに関するデータはありません。
何が起こっているのですか?モバイル版をお試しください。パケット キャプチャに切り替えた後、実際にトラフィックが発生し、リクエストの中で最も懸念していたものを見つけました:
- 4372317-de272f8395d2106f.png
- This
API
リクエストは一目瞭然です。郵便屋さん 試してみたところ、正しく情報が返されました。
数日連続で登山データを取得した後、データを分析したところ、Mobike の GPS が常に鼓動しているようで、鼓動が数キロを超えることがありました。明らかに正常値ではありませんでした。
もしかしたら、彼らのインターフェース
が偽のデータを返すように操作されている可能性はありますか? APP でも自転車から返されるデータが跳ね上がっていることが観察されました。ある早朝から翌朝まで、本当にそうなのか、自宅近くの車を定期的にリフレッシュしてみました。
写真が見つかりません
ビデオのスクリーンショットです。実際には車がそこに止まっているのですが、GPSの軌跡では動いていることがわかります。短期間で、あるいはかなり遠くまで、その位置に戻ります。
そんなデータはデータ分析には全く使えず、半ば諦めていました。
転送
WeChat ミニ プログラムの人気に伴い、Mobike もすぐにミニ プログラムを開始しました。これを見たときは笑ってしまいました。そう、別のデータ ソースを試してみることができました。 Packet Capture でデータを一度取得した後は、API を決定するのは簡単です。具体的なプロセスについてはここでは説明しません。クロール後、2 ~ 3 日分のデータをクロールしたところ、方向転換があり、データが通常の自転車の軌跡と一致していることがわかりました。
あとはクローラーの効率を上げるだけです。
その他の試み
時々、アプリのソースコードを直接分析して API の入り口を見つけるのが非常に便利です。Mobike Android アプリを逆コンパイルしましたが、いくつかの有用なリソース ファイルを除いて、他のファイルはすべておかしいことがわかりました。タイガー360のミキサーが詰まっています。インターネット上には砲撃の方法を分析した記事がありますが、勉強する時間があまりないので忘れてください。
API 設計についてもお話します
Mobike の API がクロールして分析しやすい理由は、主に API 設計がシンプルすぎるためです:
http リクエストのみを使用するため、クロールが簡単です パッケージ分析
これらの API はリクエストを暗号化しないため、サービスが悪用されやすくなります。
さらに、WeChat ミニプログラムも API 漏洩の重要なソースです。結局のところ、APP 内のリクエストはネイティブ コードを通じて暗号化されて送信される可能性がありますが、mini にはそのような機能はないようです。 -プログラム。
ご興味があれば、Xiaolan Bicycle APP のリクエストを確認してみてください。https リクエストを使用し、データリクエストを暗号化することで、データをキャプチャすることがはるかに困難になります。
もちろん、Mobike 関係者がデータを気にしないのであれば、そのような API 設計は問題ありません。
以上がMobike クローラー分析 - API を見つけるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版
便利なJavaScript開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
