主頁 > 資料庫 > 抖音爬蟲教程-APP資料采集常見思路

抖音爬蟲教程-APP資料采集常見思路

2020-12-13 07:25:30 資料庫

其實所謂抓取APP資料和抓取網頁資料是存在一定的不同,抓取網頁資料可以采用模擬訪問網站然后抓取網頁接收內容的模式進行資料抓取,而APP則更傾向于通過截獲資料傳輸包的形式進行(Wireshark和Fiddler+Python),
一般來說,我們用WireShark+Fiddler來獲取大部分資料是沒有多大問題的,但這里有個問題是,如果你碰到的是用SSL/TLS等加密手段加密過的網路資料的時候,往往我們只能束手無策,在過去的話,如果我們擁有的該傳輸會話的私鑰的話我們還是可以將它提供給WireShark來讓其對這些加密資料包進行解密的,但這已經是想當年還用RSA進行網路資料加密的年代的事情了,當今大家都已經逐漸擁抱前向加密技術PFS的時代了,所以該方法就不再適用了,因為前向加密技術的目的就是讓每個資料互動都使用的是不同的私鑰,所以你像以前RSA時代一樣想只用一個私鑰就能把整個session會話的網路資料包都破解出來的話是不可能的了(其實可以也通過類似瀏覽器的Session Key功能解決),

1.App資料抓取分析

凡是可以看到的APP資料都可以抓取,
分析研究過不下300個APP抓包,
50%的app,通過抓包軟體就可以分析出抓取引數并抓取到資訊,
30%的app,可能需要適當的反編譯,分析出加密演算法并抓取到資訊,
10%的app,可能加固,需要脫殼,然后反編譯,分析出加密演算法并抓取到資訊,
10%的app,通過各式各樣的簽名,證書,設備系結等方法,隱藏加密演算法,
總的來說,沒有不能抓取的app,只是時間成本的問題,

2.爬取思路

1.抓包
2. HOOK

2.1.抓包

有代碼經驗或APP開發的同學都很容易理解,其實很多APP,走的都是webservice通訊協議的方式,并且由于是公開資料,而且大部分是無加密的,所以只要對網路埠進行監測,對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技術

HOOK技術是一種走作業系統內核的技術,由于安卓系統是開源的,所以可以借助一些框架修改內核,從而實作你要的功能,HOOK的形式,我們走的是Xposed框架,Xposed是一款可以在不修改任何其他開發者開發的應用(包括系統服務)的情況下,改變程式運行的一個開源框架服務,基于它可以制作出許多功能強大的模塊,以此來達到應用程式按照你的意愿運行的目的,
如果把安卓手機看做一座城堡,那Xposed可以讓你擁有一個上帝視角,城里的運作細節盡收你眼底,還能讓你插一手改變城堡的運作規律,
什么意思呢?簡單的說就是你可以通過他,自動化的控制你的APP,如果將我們的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.需要爬的坑

坑一:簽名演算法

以某信的文章串列頁及某資訊頁為例,對其http訪問進行抓包,會發現其url的一個核心引數是我們無法知道如何生成的,這就導致,我們不可能直接用該url進行資訊爬取;簽名演算法如果無法破解,HTTP這條路就是死路了,

坑二:http爬取回來的資訊和頁面顯示不一致

以某信的某資訊頁為例,對比直接訪問某信頁面及http爬取的資訊,可明顯發現http爬取到的資訊較少,造成得兩種方式都用,才能既照顧速度又照顧完整性,

坑三:模擬器中的坑

APP自動識別你的運行環境進行屏蔽,最厲害的還是某信,連你是用模擬器打開還是真機打開,是什么內核的,全部進行限制,曾經見過牛人,找某手機廠商專門定做真機來配合,

坑四:帳號的坑

這個坑就有點大了,要找號、養號,都不是件容易的事情,更慘的是封號,真真讓你一夜回到解放前,

4.難度評估

1.一星

此類app沒有進行特殊的防護,可以直接在網頁訪問app中請求的url
困難點:無

2.二星

此類app使用的cookie和session等技術,對資料的請求需要cookie等資訊
困難點:
1、請求頭需要附帶cookie值

3.三星

此類app在發起請求時,在headers中添加md5驗證欄位,該欄位對請求的url的引數進行特殊的處理然后進行hash;如果想爬這類app,需要對app進行反向編譯,經過大量的代碼閱讀,分析該app的hash演算法和引數拼接;
困難點:
1、反編譯
2、Android代碼的閱讀能力
3、花費大量時間和精力也不一定能找到,這是最蛋疼的,,,,

4.四星

此類app對請求發起url請求,后臺收到請求后在回傳的資料中,針對有效資料進行加密,所以在用抓包工具進行分析時,無法看到具體的資料;如果想爬取這類app,只能先去反編譯,然后分析出如何對請求資料加密的演算法,只有完成了演算法的破解才能進行資料的分析,
困難點:
1、無法通過抓包工具對所需資料進行分析
2、反編譯
3、Android代碼的閱讀能力,尋找加密資料的演算法
3、花費大量時間和精力也不一定能找到,這是最蛋疼的,,,,

5.工具

1. 抓包工具

mac系統 Wireshark
                   Mac系統 charles
                   windows Fiddler

2.反編譯

Apktool,dex2jar,jd-gui-windows
Jadx-gui
能直接反編譯dex檔案,方便好用
JD-GUI
需要將dex檔案轉到jar檔案,可以跳轉函式
JEB
用的較少
3.hook 工具
Xposed
Frida


TiToData:專業的短視頻、直播資料介面服務平臺,網址: TiToData

覆寫主流平臺:抖音,快手,小紅書,TikTok,YouTube

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/233874.html

標籤:其他

上一篇:抖音爬蟲教程-逆向分析-使用關鍵字進行功能破解

下一篇:學習筆記: mysql增刪改查基礎陳述句

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more