APPのパケットキャプチャ
以前の私たちは、Pythonの爬虫類に関するある程度の知識を学んだが、コンテンツベースのPCクライアントのブラウザページをクロールしています。アプリは今はウェブ版ないだろうなビブラートなどのページを、終わらなかった携帯電話は、より多くの、そして多くを使用し、その後、上記のビデオバッチがまだクロールすることはできないでしょうか?
答えはノーです!通信プロセス内のページのためのアプリケーションのために、アプリケーションに似て、背景にリクエストがデータを取得して送信します。私たちは、デバッグツールを開くブラウザでは、特定の要求の内容を見ることができ、我々は、Appを参照してくださいに直接することはできません。だから我々は、App要求と応答のキャプチャツールを介して情報を取得するつもりです。その上でパケットキャプチャツールのWireshark、フィドラー、チャールズとについて。今日はフィドラーとの電話アプリのパケットキャプチャを作成する方法について話しています。
フィドラーズ・プロキシと同等のものを作品に構成した後、私たちは、サーバによって返された情報は、フィドラー一度転送されます、フィドラーによって送信され、携帯電話のアプリケーションからの要求を送信します。だから私たちが見るとフィドラーにより、サーバアプリケーションサーバに送信された要求に応答することができます。
シオマネキのインストール構成
我々は、選択された2つの場所を次のメニューのツール>オプション> HTTPSの最初のバイオリン弾きをインストールした後。
[接続]タブや他のデバイスが要求フィドラーを受け入れるようにできるように、リモートコンピュータが接続を許可する次に確認してください。
また、ここではポート番号は覚えておいて、デフォルトでは必要性が電話側を埋める際、8088です。
設定は、保存リニューアルオープンフィドラーをオフにしてください、完了です。
携帯電話の設定を終了します
同じLAN内の携帯電話とコンピュータを確保するために、我々はコンピュータのIPアドレスの下で見て、CMDでipconfigと入力を見ることができます。ワイヤレスネットワークを使用して私のコンピュータは、IPアドレスは192.168.1.3です。
携帯電話にワイヤレス接続を開き、接続したいホットスポットを選択します。押して変更ネットワークを選択するには、我々はフィドラープロキシエージェントで、コンピュータのIPアドレスとポートを入力します。下図のように:
保存后,在手机原生浏览器打开 http://192.168.1.3:8008 ,就是上面我们的计算机 IP 和端口。这一步我在夸克浏览器中打开是不行的,一定要到手机自带的浏览器打开。
打开后,点击下图链接,下载证书,然后安装证书。
电脑端浏览器也需要打开此地址,安装证书,方便以后对浏览器的抓包操作。
安装后就万事 OK 了,可以用手机打开 App ,在 Fiddler 上愉快的抓包了。
抓包
我们打开抖音 App,会发现 Fiddler 上出来很多连接。我们先清空没用的连接信息,然后滑动到某个人的主页上,来查看他发布过的所有视频,同时在 Fiddler 上找到视频链接。
经过观察筛选我们可以看出上图就是我们需要的请求地址,这个地址其实是可以在浏览器上打开的,但是我们需要改一下浏览器的User-Agent,我用的是Firefox的插件,打开后和 Fiddler 右边的信息是一致的。我们看下 Fiddler 右边该请求的响应信息。
看到返回了一个 JSON 格式的信息,其中aweme_list 就是我们需要的视频地址,has_more=1 表示往上滑动还会加载更多。之后就可以写代码了。
代码
代码很简单,和我们前几篇讲的一样,直接用 requests 请求相应链接即可。
代码仅做为一个简单的例子,仅仅下载当前页面的内容,如果要下载全部的视频,可以根据当次返回 JSON 结果中的 has_more 和 max_cursor 参数构造出新的 URL 地址不断的下载。
URL 中的 user_id 可以根据自己要爬取的用户更改,可以通过把用户分享到微信,然后在浏览器中打开链接,在打开的 URL 中可以看到用户的 user_id。
import requests import urllib.request def get_url(url): headers = {'user-agent': 'mobile'} req = requests.get(url, headers=headers, verify=False) data = req.json() for data in data['aweme_list']: name = data['desc'] or data['aweme_id'] url = data['video']['play_addr']['url_list'][0] urllib.request.urlretrieve(url, filename=name + '.mp4') if __name__ == "__main__": get_url('https://api.amemv.com/aweme/v1/aweme/post/?max_cursor=0&user_id=98934041906&count=20&retry_type=no_retry&mcc_mnc=46000&iid=58372527161&device_id=56750203474&ac=wifi&channel=huawei&aid=1128&app_name=aweme&version_code=421&version_name=4.2.1&device_platform=android&ssmix =&DEVICE_TYPE = STF-AL10&device_brand = HONOR&言語= ZH&os_api = 26&OS_VERSION = 8.0.0&UUID = 866089034995361&openudid = 008c22ca20dd0de5&manifest_version_code = 421&解像度= * 1920 1080&DPI = 480&update_version_code = 4212&_rticket = 1548080824056&TS = 1548080822&js_sdk_version = 1.6.4&= a1b51dc4069b2cc6252833&CP = dab7ca5f68594861e1 [WIA&MAS = 014a70c81a9db218501e1433b04c38963ccccc1c4cac4c6cc6c64cとして')
あなたが動画のリストを取得することができます後に実行します。