監視我的手機:數據都去哪兒了?
“現在的人幾乎是全部透明的。我心里就想,馬化騰肯定天天在看我們的微信,因為他都可以看的,隨便看,這些問題非常大。” —— 李書福
日常使用的手機可能比想象的更加活躍,當微信聊天、淘寶購物、抖音看視頻甚至是喵的手機待機啥也不干,某些 App 都會悄悄地與服務器交換著數據。這些數據包括微信聊天記錄、地理位置、通訊錄、通話記錄、QQ消息,甚至短信內容...
我一直想知道我的數據都去了哪里?哪些 App 在源源不斷上傳數據?數據被哪些公司搜集了?
前一段時間,瀏覽過一篇國外的博客《 my phone's silent 》,文中作者 Kushal 使用 代理的方式,監控自己的手機 1 個星期,截獲手機與服務器之間的所有請求,最后統計了手機到底悄悄地在和哪些公司的服務器進行連接。
受到 Kushal 的啟發,我決定使用部署 ss 的方式截獲我個人的手機數據。
監控方案
實驗設備代理方案
手機的數據都是與不同的服務器進行著連接,如何獲取所有的連接?首先我想到的是手機要通過 Wi-Fi 路由器上網,那么如果在路由器端截取數據包,會比較容易。但是無法獲取手機的移動基站流量。
于是在 1 臺云服務器上搭建了個代理服務,手機客戶端設置為全局代理連接 VPN 服務器,就可以在服務器端獲取所有的數據請求。
部署服務
為了保證上網訪問速度,提升網絡體驗,推薦選擇國內的服務器,代理服務器首先安裝 Docker
$ sudo apt-get -y install docker.io
啟動 ss Docker 容器
通過閱讀 ss 的文檔,可知在啟動 ss 時只需要加上 -v 參數(Verbose mode)即可輸出詳細 Log。同時使用 tmux 讓服務在后臺運行,將輸出以追加的方式( >>)重定向到 logs.txt 文件。
$ tmux
$ sudo docker run -t --name ss -p 9000:9000 mritd/shadowsocks -s "-s 0.0.0.0 -p 9000 -m aes-256-cfb -k yourpassword --fast-open -v" >> logs.txt
手機客戶端
在手機端安裝 ss 或者酸酸乳客戶端,配置代理服務器地址、端口、密碼與加密方式,代理模式設置為全局代理。
然后在服務器端,使用 tail 命令從指定點開始將從文件寫到標準輸出,顯示實時 Log,服務搭建成功
$ tail -f logs.txt
當手機使用微信時,記錄的 Log 日志如下
數據處理
DNS 域名解析
DNS(Domain Name System),翻譯過來就是域名系統,是互聯網上作為域名和 IP 地址相互映射的一個分布式數據庫。獲取到的記錄大多數是域名,需要先解析成 IP 地址
import socket
def domain_to_ip(domain):
return socket.gethostbyname(domain)
例如,解析 的 IP 地址
domain_to_ip('www.baidu.com')
'14.215.177.38'
IP 地理數據庫
推薦使用 ,一個開源的 IP 到地區的映射庫,具有 99.9% 準確率,提供 Binary,B 樹和純內存三種查詢快速搜索算法。
>> result = ipgeo.find('www.baidu.com')
>> print(result)
{'ip': '14.215.177.38', 'city_id': 2140, 'country': '中國', 'province': '廣東省', 'city': '廣州市', 'operator': '電信'}
保存數據
df.to_csv(out_csv, index=False)
print('saved to {}'.format(out_csv))
數據可視化
經過十多天的記錄,俺一共記錄了 280059 條記錄
接下來使用 對數據進行可視化。Echarts 是百度開源的一個數據可視化 JS 庫,而 是一個用于生成 Echarts 圖表 Python 庫。
主要的互聯網公司
從上圖可以看出,俺的安卓手機(安裝了谷歌服務),在國內的網絡環境,請求次數最多還是 Google。
然后就是日常使用的微信和 了。由于平時會看 B 站視頻,所以 排名第三 orz...
我手機安裝的是 輸入法,但是去往 的請求居然有 1952 條,查看了用戶協議才發現:“QQ輸入法”是經騰訊公司認可,由搜狗公司發布的客戶端軟件。
還有像美團、高德地圖這樣的軟件,平時并不怎么頻繁使用,網絡請求卻異常地活躍,不知道偷偷摸摸干著啥。
夜間活動排行
過濾出凌晨 00:00 ~ 06:00 時間段的活動,可以發現去往 *. 的連接始終是最多的。
全球分布
國內各省份分布
可以看到俺的流量大多去往了廣東、上海和北京這樣的地方,臺灣這么高的原因是谷歌的服務器在那邊,DNS 解析谷歌的域名都指向了臺灣。
電信運營商
服務器端口統計
其他
在一加手機的網絡請求中,發現了一些發往 oppo 服務器的請求,看來不光硬件由 oppo 代工,連軟件也是。
[('epoch.cdo.oppomobile.com', 208),
('gslb.cdo.oppomobile.com', 38),
('istore.oppomobile.com', 38),
('opsapi.store.oppomobile.com', 34),
('api.cdo.oppomobile.com', 22),
('message.pull.oppomobile.com', 21),
('st.pull.oppomobile.com', 13),
('cdopic0.oppomobile.com', 9),
('newds01.myoppo.com', 9),
('httpdns.push.oppomobile.com', 4),
('conn1.oppomobile.com', 1),
('iopen.cdo.oppomobile.com', 1)
最后
警告: 請勿用于非法目的,非法獲取他人隱私屬于犯罪!
完整代碼
參考鏈接
*請認真填寫需求信息,我們會在24小時內與您取得聯系。