摘要:比如分鐘破譯朋友圈測試小游戲文章里用的方法但有些根本就沒有提供網頁端,比如今年火得不行的抖音。所以常用的方式就是通過在電腦上裝一些抓包軟件,將手機上的網絡請求全部顯示出來。總結下,重點是的抓取,關鍵是配置代理證書,難點是對請求的分析。
爬蟲的案例我們已講得太多。不過幾乎都是 網頁爬蟲 。即使有些手機才能訪問的網站,我們也可以通過 Chrome 開發者工具 的 手機模擬 功能來訪問,以便于分析請求并抓取。(比如 3分鐘破譯朋友圈測試小游戲 文章里用的方法)
但有些 App 根本就沒有提供網頁端,比如今年火得不行的 抖音 。(網上有些教程也是用網頁手機模擬的方法,但此法現已失效。)
對于這種情況,我們能不能抓取?要怎么抓取?今天就來分享一下。
手機抓包本文的重點就在于 如何獲取手機 App 發出的請求 。
手機 App 不像電腦上的網頁能直接通過瀏覽器查看相關信息,在手機設備上也不方便使用工具一邊流量一邊調試。所以常用的方式就是通過在電腦上裝一些 “抓包”軟件 ,將手機上的網絡請求全部顯示出來。
那為什么電腦能看到手機上的網絡請求?這里就要提下“ 代理 ”這個概念。我們之前的文章 聽說你好不容易寫了個爬蟲,結果沒抓幾個就被封了? 中也講過代理。形象的解釋就是字面的理解: 所有你發出的請求不再是直接發到目的地,而是先發給這個代理,再由代理幫你發出 。所以通過代理,可以實現 隱藏 IP、進入專用網絡、翻…咳咳那啥 等功能,也包括我們今天說的: 手機抓包 。
順帶說句,在公共場所別隨便連不確定的免費 wifi,理論上來說,人家也可以抓你的包。
這里,我們要用的工具是 Fiddler 。它是一個較成熟的免費抓包工具。可以抓取網頁、桌面軟件、手機 App 的網絡請求,并可以運行在 Windows、Mac、Linux 平臺上,支持 iOS 和 Android。(雖說都支持,但強烈建議 Windows + Android ,后面我會有吐槽)
上周我們的送書活動收到不少同學的項目和代碼,其中 @離島 同學提交了一個 Fiddler 手機抓包的教程。下載安裝
https://segmentfault.com/a/1190000015571256
本文中部分內容和圖片就轉自她這篇文章。她的博客上還有不少文章和學習筆記,可以關注交流。也歡迎其他同學給我們投稿。
搜索一下 fiddler 很容易找到它們的官網 https://www.telerik.com/fiddler,點擊 download 下載即可(有個表格隨便填下)。
Windows 下載后正常安裝。如果是 Mac,還會有安裝步驟提示,告訴你需要先安裝一個叫做 Mono 的框架,以便可以執行 Fiddler.exe。另外 Mac 版還有幾個小坑:
1. 運行 mono 命令用 sudo
2. 如果報一堆錯閃退,請用 mono --arch=32 Fiddler.exe(這個參數還必須放在文件名前面)
3. 第一次正確運行時,程序 會卡住很長時間 ,以至于我以為還是掛了,這時請耐心等待。(我要不是正好有事走開,回來發現成功了,可能就放棄嘗試了)
4. 即使正常運行了,Mac 上界面也會有各種顯示的 bug,切記不要打開的彈窗的情況下切換程序,不然回來就找不到彈窗了……
5. 軟件中無法復制……
6. 在 iOS 上無法抓取 HTTPS 請求(這基本就是廢了),需要額外創建一個證書,但這個證書工具只能在 Windows 下運行……
所以可以的話,還是用 Windows 來做。Mac 上還有個比較知名的工具 Charles ,有用過的可以留言評價下。
配置安裝好工具后,需要做一些必要配置才能抓包。
1. Fiddler 配置
設置允許抓取 HTTPS 信息包。打開下載好的 fiddler,找到 Tools - > Options,然后在 HTTPS 的工具欄下勾選 Decrpt HTTPS traffic ,在新彈出的選項欄下勾選 Ignore server certificate errors 。這樣,fiddler 就會抓取到 HTTPS 的信息包。
設置允許外部設備發送 HTTP/HTTPS 到 fiddler。設置 端口號 ,并在 Connections 選項欄下勾選 Allow remote computers to connect 。
配置好后需重啟軟件。
2. 設置手機代理
在抓包前,確保你的電腦和手機是在一個 可以互訪的局域網中 。最簡單的情況就是都連在同一個 wifi 上,特殊情況這里不展開討論(有些商用 wifi 并不能互訪)。
打開軟件,鼠標放在右上角的 Online 上可以看到 本機的 IP 。或者也可以通過命令行中的 ipconfig 命令(Mac/Linux 是 ifconfig )查看。(截圖僅為演示,以你自己的 IP 為準)
手機設置代理 IP。打開手機 無線網絡連接 ,選擇已經連接的網絡連接,點擊一個小圓圈嘆號進入可以看到下圖(安卓也類似),選擇 配置代理 ,進入后把剛剛的 IP 地址 輸入進去, 端口 就是 fiddler 中設置的 8888。
3. 安裝證書
獲取 HTTPS 請求必須要 驗證證書 。電腦端訪問:http://localhost:8888/ 進行安裝。
手機訪問前面設置的電腦的 IP 地址加端口 8888 訪問,比如圖中例子是:http://192.168.23.1:8888
有些安卓需要手動從設置里進入并導入證書,否則無法生效。
4. 測試
開啟 fiddler 的狀態下,打開手機隨便一個 APP,應對可以正常訪問,并且在 fiddler 中看到所發出的網絡請求。
如果能訪問但看不到請求,確認下有沒有代理有沒有生效。如果不能訪問,檢查下證書是否都下載并驗證。還是不行則按照上述步驟再仔細配置一遍。
分析請求完成這一步之后,接下來的事情就和網頁爬蟲沒太大區別了。無非就是從這些請求中,找到我們需要的那幾個。
fiddler 里記錄的是所有請求,比較多。在操作 App 前,記得清空已有請求,方便觀察。然后再配合上 filter 篩選器 ,定義篩選規則,會較容易找你需要的內容。找到請求后,在軟件里查看你要的信息,或者右鍵點擊選擇將請求導出。
經過操作+觀察,可以定位到獲取用戶上傳視頻列表的請求是
https://api.amemv.com/aweme/v1/aweme/post/?…
從 WebForms 欄里可以查看請求的詳細參數信息。返回值是一個組 JSON 數據,里面包含了視頻的下載地址。
這是一個需要經驗積累的活兒,不同的網站/App,規則都不一樣,但套路是相似的。對網頁爬蟲還不熟悉的話,先看看之前的文章 爬蟲必備工具,掌握它就解決了一半的問題。
代碼抓取得到地址之后,經過在瀏覽器和代碼里的一番嘗試,找到了此請求的正確解鎖方式:
1. 需要提供以下參數:max_cursor=0&user_id=94763945245&count=20&aid=1128,其中 user_id 是你要抓取的用戶 ID,其他參數都可以固定不用改。
2. 需要使用手機的 User-Agent ,最簡單的就是 {"user-agent": "mobile"}
請求代碼:
import requests as rs uid = 94763945245 url = "https://api.amemv.com/aweme/v1/aweme/post/?max_cursor=0&user_id=%d&count=20&aid=1128" % uid h = {"user-agent": "mobile"} req = rs.get(url, headers=h, verify=False) data = req.json() print(data)
uid 替換成你想抓的用戶 ID。獲取用戶 ID 有個簡單方法:在用戶頁面選擇分享,鏈接發到微信上,從網頁打開就可以看到 user_id。
提取視頻列表并下載:
import urllib.request for video in data["aweme_list"]: name = video["desc"] or video["aweme_id"] url_v = video["video"]["download_addr"]["url_list"][0] print(name, url_v, " ") urllib.request.urlretrieve(url_v, name + ".mp4")
此方法截止國慶假期還是有效的,可以通過 Chrome 開發者工具進行模擬。之后能使用多久這就沒法保證了,爬蟲代碼都不會是一勞永逸的。
總結下,重點是 fiddler 的抓取 ,關鍵是 配置、代理、證書 ,難點是 對請求的分析 。最終代碼只有簡單兩步, 獲取視頻列表、下載視頻 。
所有代碼其實就上面兩段,也上傳了,獲取地址請在公眾號( Crossin的編程教室 )回復關鍵字 抖音
想看其他十多個項目代碼實例(電影票、招聘、貪吃蛇、代理池等),回復關鍵字 項目
下課!
════
其他文章及回答:
如何自學Python | 新手引導 | 精選Python問答 | 如何debug? | Python單詞表 | 知乎下載器 | 人工智能 | 嘻哈 | 爬蟲 | 我用Python | 高考 | requests | AI平臺
歡迎微信搜索及關注: Crossin的編程教室
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42629.html
摘要:是一個文章內容提取器,可以從任意資訊文章類的網頁中提取文章主體,并提取標題標簽摘要圖片視頻等信息,且支持中文網頁。 爬蟲抓取數據有兩個頭疼的點,寫過爬蟲的小伙伴們一定都深有體會: 網站的 防抓取 機制。你要盡可能將自己偽裝成一個人,騙過對方的服務器反爬驗證。 網站的 內容提取 。每個網站都需要你做不同的處理,而且網站一旦改版,你的代碼也得跟著更新。 第一點沒什么捷徑可走,套路見得多...
摘要:又到了一年一度的情人節大家都準備送什么給自己心儀的對象呢鮮花巧克力都太俗套了,今天給大家帶來一個抖音上看到的表白神器用寫一個告白程序,讓她看到你滿滿的愛意。 又到了一年一度的情人節!大家都準備送什么給自己心儀的對象呢? 鮮花、巧克力都太俗套了,今天給大家帶來一個抖音上看到的表白神器 — 用Python寫一個告白程序,讓她看到你滿滿的愛(tao)意(lu)。 先上效果: showImg(...
摘要:可以說是每個程序每天必逛的網站,這里集聚了全球最頂級的程序員。有非常多的大公司在上面開源自己的項目。今天整理了個上頂級的開源項目。這是推出的一款性能類型檢查工具。它的主要目標是快速輕松地分發應用程序。 showImg(https://segmentfault.com/img/remote/1460000015909645); 閱讀文本大概需要 4.2 分鐘。 GitHub 可以說是每個...
摘要:我發現抖音上很多小姐姐就拍個跳舞的視頻就火了,大家是沖著舞蹈水平去的嗎,都是沖著顏值身材去的,能刷到這篇文章的都是了,我就跟大家不一樣了,一個個刷太麻煩了,我直接爬下來看個夠,先隨意展示兩個。 我發現抖音上很多小姐姐就拍個跳舞的視頻就火了,大家是沖著舞蹈水平去的嗎,都是沖著顏值身材去的,能刷...
閱讀 2109·2023-04-26 00:50
閱讀 2479·2021-10-13 09:39
閱讀 2200·2021-09-22 15:34
閱讀 1605·2021-09-04 16:41
閱讀 1336·2019-08-30 15:55
閱讀 2433·2019-08-30 15:53
閱讀 1707·2019-08-30 15:52
閱讀 748·2019-08-29 16:19