目次
ピット2:httpから取得した情報がページ表示と矛盾している
この記事の内容はインターネットからのものであり、技術研究のためにモバイルAPPで収集されたデータは、インターネットで収集された情報です。
実際、いわゆるAPPデータのクロールとWebページデータのクロールには一定の違いがあります。Webページデータをキャプチャするために、WebサイトへのアクセスとWebページのコンテンツのキャプチャをシミュレートするモードでデータをキャプチャできます。APPは、データ送信パケット形式(WiresharkおよびFiddler + Python )を傍受する傾向があります。
一般的に、WireShark + Fiddlerを使用して、ほとんどのデータを問題なく取得します。しかし、ここで問題があります。SSL/ TLSやその他の暗号化方法で暗号化されたネットワークデータに遭遇した場合、多くの場合、何もできません。以前は、送信セッションの秘密鍵があれば、WireSharkに提供して、これらの暗号化されたデータパケットを復号化できましたが、これは、ネットワークデータの暗号化にRSAを使用したい時代です。もの。今日、誰もが前方暗号化技術PFSの時代を徐々に受け入れてきたため、この方法はもはや適用できません。フォワード暗号化テクノロジーの目的は、各データインタラクションで異なる秘密鍵を使用することであるため、前のRSA時代のように、セッション全体のネットワークデータパケットをクラックするために1つの秘密鍵のみを使用する場合はそれは不可能です(実際、同様のブラウザのセッションキー機能でも解決できます)。
1.アプリデータキャプチャ分析
表示可能なすべてのAPPデータをキャプチャできます。
300以上のAPPキャプチャが分析および調査されています。
アプリの50%については、キャプチャパラメータを分析し、パケットキャプチャソフトウェアを介して情報をキャプチャできます。
暗号化アルゴリズムを分析して情報を取得するには、アプリの30%を適切に逆コンパイルする必要がある場合があります。
アプリの10%は強化されており、解凍してから解凍して、暗号化アルゴリズムを分析し、情報を取得する必要がある場合があります。
アプリの10%は、さまざまな署名、証明書、デバイスバインディング、その他の方法で暗号化アルゴリズムを隠しています。
一般的に、クロールできないアプリはなく、時間の問題です。
2.クロールのアイデア
1.キャプチャ
2.フック
2.1。パケットキャプチャ
コードの経験やAPP開発の学生は簡単に理解できます。実際、多くのAPPはWebサービス通信プロトコルを使用しており、公開データであるため、ほとんどが暗号化されていません。ネットワークポートを監視してAPPをシミュレートする限り、APP内のデータがどのように取得されるかを知ることができます。
POSTまたはGETに関係なく、要求をシミュレートするコードを記述するだけで、要求によって返される情報を取得できます。次に、返された情報の構造分析を通じて、必要なデータを取得できます。
public static void main(String[] args) {
Spider.create(new GithubRepoPageProcessor())
//从https://github.com/****开始抓
.addUrl("https://github.com/****")
//设置Scheduler,使用Redis来管理URL队列
.setScheduler(new RedisScheduler("localhost"))
//设置Pipeline,将结果以json方式保存到文件
.addPipeline(new JsonFilePipeline("D:\\data\\webmagic"))
//开启5个线程同时执行
.thread(5)
//启动爬虫
.run();
}
2.2。フックテクノロジー
HOOKテクノロジーは、オペレーティングシステムのカーネルを使用するテクノロジーです。Androidシステムはオープンソースであるため、いくつかのフレームワークを使用してカーネルを変更し、必要な機能を実現できます。HOOKの形で、Xposedフレームワークを採用します。Xposedは、他の開発者のアプリケーション(システムサービスを含む)を変更せずにプログラムの操作を変更できるオープンソースのフレームワークサービスです。あなたの望み通りにアプリケーションを実行する目的を達成するために、多くの強力なモジュールをそれに基づいて作ることができます。
Androidフォンを城と考えると、Xposedを使用すると、神の視点を持ち、都市の運営の詳細を見ることができます。また、城の運営を変更するために介入することもできます。
どういう意味ですか?簡単に言えば、あなたは彼を通してあなたのAPPを自動的に制御することができます。シミュレーターでAPPを開くと、コーディングを通じて、このステップを実行する方法と次に実行する方法をAPPに指示できます。キーを押すウィザードやゲームを殺すプラグインに似ていると理解できます。
そして、彼が一歩踏み出すたびに、APPとサーバー間の相互作用のデータを取得できます。この方法は、一部の成熟したアプリで広く使用されています。たとえば、レターコレクション。
public class HookActivity implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
final String packageName = lpparam.packageName;
XposedBridge.log("--------------------: " + packageName);
try {
XposedBridge.hookAllMethods
(Activity.class, "onCreate", new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param)
throws Throwable {
XposedBridge.log("=== Activity onCreate: " + param.thisObject);
}
});
} catch (Throwable error) {
XposedBridge.log("xxxxxxxxxxxx: " + error);
}
}
}
3.登るピット
ピット1:署名アルゴリズム
手紙の記事リストページと特定の情報ページを例にとると、そのhttpアクセスをキャプチャすると、そのURLのコアパラメータの1つは、それを生成する方法がわからないことであることがわかります。そのため、URLを直接使用して実行することはできません。情報のクロール。署名アルゴリズムを解読できない場合、HTTPロードは行き止まりです。
ピット2:httpから取得した情報がページ表示と矛盾している
特定の文字の特定の情報ページを例にとると、特定の文字ページへの直接アクセスとhttpによってクロールされた情報を比較すると、httpによってクロールされた情報が少ないことは明らかです。速度と整合性の両方を処理するには、両方の方法を使用する必要があります。
ピット3:シミュレーターのピット
APPは自動的に動作環境を認識してシールドします。最も強力なのは、エミュレーターで開いた場合でも実機で開いた場合でも、カーネルが何であるかに関係なく、すべての制限が課せられる特定の文字です。素晴らしい人に会いましたが、実際の電話をカスタマイズして協力してくれる携帯電話メーカーを見つけました。
ピット4:アカウントのピット
この穴は少し大きいです。数字を見つけて維持するのは簡単ではありません。さらに悪いことに、タイトルは一晩で事前解放に戻ることになります。
4.難易度の評価
1.1つ星
このタイプのアプリには特別な保護はありません。Webページのアプリで要求されたURLに直接アクセスできます。
難易度:なし
2.2つ星
このようなアプリで使用されるCookieおよびセッションテクノロジーでは、データを要求するためにCookieなどの情報が必要です。
難しさ:
1.リクエストヘッダーにはCookie値を付ける必要があります
3.サムスン
このようなアプリがリクエストを開始すると、ヘッダーにmd5検証フィールドが追加されます。このフィールドは、リクエストされたURLのパラメータに対して特別な処理を実行してからハッシュします。このタイプのアプリをクロールする場合は、アプリを逆コンパイルして、多くの処理を行う必要があります。コードの読み取り、アプリのハッシュアルゴリズムとパラメータースプライシングの分析。
難しさ:
1.逆コンパイル
2.Androidコード読み取り能力
3.それを見つけるのに多くの時間とエネルギーがかかりますが、それは最も苦痛です。。。。
4.4つ星
このタイプのアプリは、リクエストへのurlリクエストを開始します。バックグラウンドでリクエストを受信した後、返されたデータは有効なデータ用に暗号化されるため、パケットキャプチャツールで分析すると、特定のデータは表示されません。このタイプのアプリをクロールする場合、最初に逆コンパイルしてから、要求されたデータアルゴリズムを暗号化する方法を分析することしかできません。アルゴリズムがクラックされた後でのみ、データを分析できます。
難しさ:
1.パケットキャプチャツールを使用して必要なデータを分析できない
2.逆コンパイル
3. Androidコードを読み取り、データを暗号化するためのアルゴリズムを見つける機能
3.それを見つけるのに多くの時間とエネルギーがかかりますが、それは最も苦痛です。。。。
5.ツール
1.パケットキャプチャツール
Mac用Wireshark
Macシステムチャールズ
Windowsフィドラー
2.逆コンパイル
Apktool 、dex2jar、jd-gui-windows
Jadx-gui
はdexファイルを直接逆コンパイルできます。これは便利で使いやすいです。
JD-GUI
はdexファイルをjarファイルに転送する必要があります。関数にジャンプできます
JEBの
使用量が少ない
3.フックツール
Xposed
フリーダ
6.例/記事
[APPリバースエントリーレベル]灰色ちゃんライブブロードキャストAPPのリバースプロセスを覚えておいてください