天天看點

如何使用WhatsApp收集大量資料(附腳本)

如果你想要拿到所有whatsapp使用者的手機号碼、頭像、以及狀态資訊,那麼我告訴你,這其實是一件非常簡單的事情,而且這些使用者甚至都不需要将你添加到他們的通訊錄裡面。

如何使用WhatsApp收集大量資料(附腳本)

大概在幾年之前,whatsapp開始允許我們在web浏覽器中使用whatsapp了。這是一種提升使用者體驗度的絕佳方法,因為與那手機螢幕裡還沒巴掌大的九宮格鍵盤相比,使用鍵盤來輸入資訊會更加的友善,而且複制粘貼或者添加附件也非常的簡單。雖然優點如此之多,但缺點也肯定會有。壞消息就是,從技術角度出發,我們将有可能利用whatsapp的web接口來建立一個龐大的whatsapp使用者資料庫。需要注意的是,可能隻有一小部分使用者不會受到影響:即那些沒有修改隐私設定的使用者(但whatsapp并不鼓勵這種不修改隐私設定的行為)。接下來,我會給大家示範如何利用whatsapp的api接口來收集大量有趣的使用者資訊。

如何使用WhatsApp收集大量資料(附腳本)

簡單介紹

web版whatsapp需要通過使用者的手機号來與whatsapp伺服器進行連接配接。簡而言之,也就是浏覽器隻需要根據一個特定的手機号就能讓背景伺服器傳回所有與該手機号有關的資訊。可能傳回的資訊如下:

使用者頭像;

與使用者狀态相關的文本資訊,例如“嗨,我正在使用whatsapp”等等;

使用者目前的線上/離線狀态;

我們發現,上述這些資訊是可以通過手機号來請求擷取的。也就是說,這個手機号所對應的whatsapp是否将你添加為好友其實并不重要。因為這種通過手機号來請求使用者資訊的操作不會受到任何的限制,是以我們就可以建立一個完整的whatsapp使用者資料庫,然後儲存使用者的手機号碼、使用者頭像、狀态文本資訊、以及線上/離線狀态。我們可以通過這些資訊建構出一個與使用者手機号相關的完整時間軸,而這個時間軸可以告訴我們使用者的上線與離線時間。

如何使用WhatsApp收集大量資料(附腳本)

目前,幾乎所有的網站在使用者浏覽器中呈現内容時,都包含有一種特殊的程式來決定網站的功能及表現形式,這種特殊的程式就是我們所說的javascript代碼,這些js代碼決定了使用者在點選某個按鈕或移動滑鼠時網站應該産生怎樣的動作。除此之外,它們也可以與伺服器進行連接配接,并請求某些類型的資料。當然了,web端whatsapp也不例外。它會向whatsapp的背景伺服器發送一個手機号碼,幾毫秒之後它便會收到有關這個手機号碼的資訊。對于我們來說,這種javascript程式的好處就是任何人都可以檢視到它的源代碼,而且我們還可以将其用于其他的地方。我正是利用了這種可能性開發出了一個腳本,這個腳本可以向伺服器請求大量手機号碼所對應的賬号資訊,更加重要的是,任何一個人都可以編寫出這樣的一種腳本。下面這張圖檔顯示的是我的腳本請求的400個随機手機号所對應的資訊:

如何使用WhatsApp收集大量資料(附腳本)

隐私方面的擔憂

那麼,當我們拿到這些資訊之後,我們能做些什麼呢?首先你要知道的是,任何人都可以建立出這樣的一種資料庫,我們不僅可以知道一個使用者(手機号)何時上線下線,而且還可以知道某個使用者頭像所對應的手機号碼。接下來我跟大家說一個最貼近實際的使用場景。面部識别技術想必大家都聽說過吧?這項技術近幾年已經發展得很不錯了,你可以設想一下,當你走在街上看見了一個美女(或帥哥),然後偷偷拍了一張ta的照片,而現在你隻需要将這個照片放到資料庫中進行比對,你就可以拿到ta的手機号了。如果這是一個你所讨厭的人,那麼你還可以利用ta的照片、手機号、以及其他的資訊并通過面部識别系統來登入ta的某些線上服務。是不是很簡單呢?這就是我對whatsapp這個問題所産生的擔憂。

whatsapp給出的回應

我非常支援“負責任的漏洞披露”,是以當我發現了這個漏洞之後,我便立刻與facebook(因為whatsapp是facebook旗下的産品)取得了聯系。總而言之,他們已經意識到了這件事情(有可能收集到大量使用者資料),但是他們并不認為這個問題與使用者隐私有關。他們給出的回複如下:

如何使用WhatsApp收集大量資料(附腳本)

雖然他們的回複看起來也沒什麼問題,而且我自己甚至差點都被他們說服了。但是冷靜下來仔細想想,總是感覺怪怪的…

技術分析

不建議非技術人員閱讀這部分内容,因為你們可能會看不懂…

web端whatsapp使用了一個文檔中沒有提到的api,你可以随意使用這個api,但你首先得自己弄清楚怎麼去使用它。這裡,javascript api在與whatsapp伺服器進行通信時使用了一個websocket。

如何使用WhatsApp收集大量資料(附腳本)

我在我的腳本中使用了三個api,第一個是store.profilepicthumb.find(

),我用它來收集使用者頭像。你可以這樣使用它:

如何使用WhatsApp收集大量資料(附腳本)

請注意,你必須在web端whatsapp所運作的同一标簽中發送請求,你還需要在頁面dom中添加一個元素。

第二個api是store.wap.statusfind(

):它可以收集手機号所對應的文本資訊:

如何使用WhatsApp收集大量資料(附腳本)

第三個api是store.presence.find(

),它可以用來請求使用者的線上/離線狀态:

如何使用WhatsApp收集大量資料(附腳本)

通過将這些api調用放到一個循環中,我們就可以不斷向伺服器請求資訊了。

腳本下載下傳

注:請不要将其用于非法目的!

作者:alpha_h4ck

來源:51cto