之前注冊玩過一段時間的社交app--soul,發現其沒有網頁版也沒有桌面版,app里也沒有相關的數據導出功能,作為一個老用戶,很多日常發布的瞬間很想導出來,作為紀念,所以就想看看能不能腳本抓取我的數據,才有了下面的記錄:
一.對soul抓包分析Soul App的數據請求,需要用到工具對app應用進行抓包
0 - 工具:Fillder(直接下載安裝)
1 - 設置手機和電腦連接的wifi代理,具體步驟可以參考《使用fiddler對手機APP進行抓包》
2 - 打開Fillder,對soul 的數據請求api進行跟蹤,抓到下面的請求:
1. 請求Header
其中有幾個主要的header :
api-sign : 請求簽名(由一個 字符串,UUID(替換"-"為""),時間戳 三個參數通過類c的
public static String a(aa paramaa, String paramString, long paramLong)
方法生成)
requeust-nonce:由UUID.randomUUID().toString().replaceAll("-", "")生成, 生成api-sign簽名的參數之一,String類型的UUID
X-Auth-UserId:用戶的ID(固定不變)
X-Auth-Token:用戶身份認證Token(固定不變)
app-time:時間戳
其他的幾個如上圖所示,基本不會變化
2.響應body
如圖所示,如果請求成功,返回的是一個json數據
失敗的話就是:{"code":9000003,"message":"您傳遞的信息有誤,請仔細檢查后重試","data":null,"success":false}
以上基本的抓包,可以知道現在需要的是api-sign的生成方法是怎樣的,然后根據自己的ID和token組合header進行爬取的請求偽造。但官方沒有公開API調用文檔,所以只有下載soul app的apk文件,進行反編譯查看源碼
二、反編譯apk查找api簽名規則1.反編譯工具:
0 - dex2jar(直接下載)
1 - jd-GUI(直接下載,是一個可執行的jar文件)
2 - soul 安卓版的apk
2.使用步驟
0 - 使用系統解壓軟件直接對apk文件解壓,獲得文件夾目錄,其中包含了classes.dex的類似文件,dex文件是Android虛擬機上面可以執行的文件,jar文件其實就是java的class文件,解壓后如下圖:
1 - 下載dex2jar后解壓,將后綴為.dex的classes文件拷貝到dex2jar的目錄下,使用DOS的cmd進入到該目錄,使用命令:
d2j-dex2jar classes.dex
對dex文件進行轉換為jar文件,該文件包含了soul App的java源碼:
2 - 使用jd-GUI查看jar文件的java源碼:
直接將classes2-dex2jar.jar 文件拖入到JD-GUI界面中,查找關鍵詞"api-sign"便可找到生成請求header的類及方法:
生成api-sign的方法:
public static String a(aa paramaa, String paramString, long paramLong) { localStringBuilder = new StringBuilder(); localStringBuilder.append(paramaa.a().a().getPath()); HashMap localHashMap = new HashMap(); Object localObject1 = new ArrayList(); int i = 0; try { Object localObject2; while (i < ((s)paramaa.d()).a()) { localObject2 = (s)paramaa.d(); String str2 = ((s)localObject2).a(i); localHashMap.put(str2, ((s)localObject2).c(i)); ((List)localObject1).add(str2); i += 1; } localObject1 = (String[])((List)localObject1).toArray(new String[0]); Arrays.sort((Object[])localObject1, String.CASE_INSENSITIVE_ORDER); if (localHashMap.size() != 0) { int j = localObject1.length; i = 0; while (i < j) { localObject2 = localObject1[i]; if (!bw.a((CharSequence)localHashMap.get(localObject2))) { localStringBuilder.append((String)localObject2).append(URLDecoder.decode((String)localHashMap.get(localObject2), "Utf-8")); } i += 1; } } String str1; return f.b(localStringBuilder.toString()).toUpperCase(); } catch (Exception localException1) { paramaa = paramaa.a(); if (paramaa.q() > 0) { i = 0; for (;;) { if (i < paramaa.q()) { str1 = paramaa.a(i); localObject1 = paramaa.b(i); if ((!bw.a(str1)) && (!bw.a((CharSequence)localObject1))) {} try { localObject2 = URLDecoder.decode(((String)localObject1).replaceAll("%(?![0-9a-fA-F]{2})", "%25"), "utf-8"); localStringBuilder.append(str1).append((String)localObject2); i += 1; } catch (Exception localException3) { for (;;) { try { localStringBuilder.append(str1).append((String)localObject1); } catch (Exception localException2) {} } } } } } localStringBuilder.append(UTDevice.getUtdid(SoulApp.b())); localStringBuilder.append("10000003"); localStringBuilder.append(SoulApp.b().a().getAuthKey()); localStringBuilder.append(a(paramLong)); localStringBuilder.append(paramString); localStringBuilder.append("3.0.15".replaceAll(".", "")); j.a("genSign = :" + localStringBuilder.toString()); } }三、后續
后續有時間再把整個源碼看一遍。。畢竟還是代碼量不小。。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77168.html
摘要:第一次做和手對接的項目,雖然只是做一個靜態頁面,但是遇到的問題無數,分享出來,做個記錄。項目需求,做一個靜態頁面,為導流,要求記錄號,為后續分析準備,頁面訪問量使用統計,頁面要能夠分享。 第一次做和手Q對接的項目,雖然只是做一個靜態頁面,但是遇到的問題無數,分享出來,做個記錄。項目需求,做一個靜態頁面,為APP導流,要求記錄QQ號,為后續分析準備,頁面訪問量使用MTA統計,頁面要能夠分...
摘要:比如分鐘破譯朋友圈測試小游戲文章里用的方法但有些根本就沒有提供網頁端,比如今年火得不行的抖音。所以常用的方式就是通過在電腦上裝一些抓包軟件,將手機上的網絡請求全部顯示出來。總結下,重點是的抓取,關鍵是配置代理證書,難點是對請求的分析。 爬蟲的案例我們已講得太多。不過幾乎都是 網頁爬蟲 。即使有些手機才能訪問的網站,我們也可以通過 Chrome 開發者工具 的 手機模擬 功能來訪問,以便...
摘要:在上看到發的視頻被狂轉開始注意之前幾乎對這個詞語沒有印象看到是在的演講還以為是新技術在上找一下這次好多個視頻是關于的視頻的內容主要是講網站優化分別用做例子可惜沒有大概要等小右補方案應該沒有問題從視頻看優化的效果非常顯著本來好幾秒的 在 Twitter 上看到 Addy Osmani 發的視頻被狂轉, 開始注意https://twitter.com/addyosmani/status/7...
閱讀 2786·2021-11-22 14:45
閱讀 2925·2021-09-10 11:26
閱讀 3231·2021-09-07 10:18
閱讀 2220·2019-08-30 14:08
閱讀 617·2019-08-29 12:22
閱讀 1393·2019-08-26 13:48
閱讀 2535·2019-08-26 10:24
閱讀 1150·2019-08-23 18:35