Google Chrome動了我的乳酪?
一、前言
隨著Google Chrome瀏覽器的釋出,突然湧現了很多跟Chrome相關的文章,特別是《Chrome的居心叵測》和《對“Chrome居心叵測”一文之深入分析》令我感觸頗深。我是凡人,所以也來湊下熱鬧 ^_^ 。本文主要記述Chrome在安裝、執行、解除安裝過程中的一些行為和結果,而儘量不對其進行主觀評價。
二、工具
在動手試驗之前,先介紹下需要使用的三種工具,分別是:FilMon、RegMon和Ultra Network Sniffer。詳細的用法請大家自己去搜索,我這裡只是簡要的介紹下。
(1)檔案監視工具——FilMon
FilMon是File Monitor的縮寫,意即檔案監視器,它可以監視系統中的所有檔案操作,包括開啟、讀、寫、關閉等。通過過濾設定,我們可以只觀測Chrome的檔案操作行為。我在測試時的設定如下:(a)包含:“*” ;(b)排除:“Explorer.EXE;Regmon.exe;svchost.exe;wmiprvse.exe;360tray.exe;Rtvscan.exe;lsass.exe;csrss.exe;realsched.exe;dexplore.exe;winlogon.exe;logon.scr
(2)登錄檔監視工具——RegMon
RegMon可以對登錄檔的所有操作進行監測,同樣的,我設定了:(a)包含:“*”;(b)排除:“Explorer.EXE;svchost.exe;Filemon.exe;csrss.exe;notepad.exe;wmiprvse.exe;Rtvscan.exe;spoolsv.exe;VPTray.exe;winlogon.exe;360tray.exe;Regmon.exe;System;lsass.exe;realsched.exe;dexplore.exe;LUALL.EXE;logon.scr”。設定的原則同FilMon,這裡不再重述。
(3)網路截包監視工具——Ultra Network Sniffer
Ultra Network Sniffer可以擷取通過本機的所有網路包,並生成報告,通過設定指定網絡卡、指定程序和網路協議,可以得到我們想要的結果。我這裡只有一塊物理網絡卡Realtek 8139,沒說的,當然選它了;程序選擇我們的觀測物件chrome.exe;而網路協議則不做篩選,以反映chrome的所有網路行為。
三、實驗及資料
看完上述工具介紹之後,勤勞而聰明的您也許已經自動動手實驗了。而我分安裝、執行、解除安裝三個部分對chrome進行分析,其中執行部分分別用chrome瀏覽了幾個有代表性的網站,如:技術
(1)安裝
當您執行安裝程式“chrome_installer.exe”之後,chrome便已經完全安裝到當前使用者的“Application Data”目錄中,在後面的彈出視窗中無論選擇確定或者取消都不影響這一點。在我的電腦中,生成的目錄“C:/Documents and Settings/Administrator/Local Settings/Application Data/Google/Chrome”裡,有兩個子目錄“Application”和“User Data”。
(a)其中“Application”目錄存放的chrome可執行程式及一些動態連結庫,佔用空間44.8M,不過這裡面有一個名為“Installer”的子目錄在執行期並不需要,浪費了我們22.3M的空間。
(b)“User Data”目錄裡有兩個比較重要的東西,檔案“Safe Browsing”和目錄“Cache”,最初佔用空間6.58M;“Safe Browsing”從字面上看是安全瀏覽的意思,如果您打開了chrome瀏覽器,並且網路是連通的,那麼“Safe Browsing”會持續增長,從我上午安裝好chrome到現在下午3點半,該檔案已經達到了38.5M,或許是因為google的不安全網站資料庫比較大,它還在源源不斷的下載不良網站資料到我的電腦中;“Cache”是快取目錄,會隨著您瀏覽不同的網頁數目而變大。
(c)在安裝的過程中,會在臨時目錄“C:/Documents and Settings/Administrator/Local Settings/Temp”中建立若干臨時檔案,以及一個子目錄“chrome_219”,其中子目錄“chrome_219”會在安裝之後會被刪除,而其它臨時檔案則遺留在臨時目錄中。
(d)在安裝過程中,記錄有77785次IO操作(包括create,open,read,write,close,delete,query等),FilMon生成的日誌文字檔案有12.3M,不能直接用excel 2000完全載入分析,等我想到更好的分析方法再到這裡補充分析結果。目前的思路是嘗試使用更高版本的excel,或者用程式設計的方式將日誌轉換成SQL資料表,然後再進行分析。
(e)在安裝過程中的登錄檔操作15772次,沒有增加自動執行的啟動程式和服務。
(f)總結以上幾點:安裝目錄不可選;剛裝完佔用51.4M硬碟空間;在使用的過程中會增肥;沒有增加啟動程式和服務。
(2)執行
Chrome瀏覽器在執行過程中都做了什麼呢?為此我測試了它在瀏覽不同網頁時的表現,每種測試都執行開啟瀏覽器,輸入並瀏覽一個網頁,關閉瀏覽器的過程,每次耗時10分鐘左右;測試的網頁包括:技術類的部落格園http://www.cnblogs.com/、遊戲類的暴雪http://www.blizzard.com/、視訊類的土豆http://www.tudou.com/、音樂類的百度mp3.baidu.com、以及新聞類的新浪新聞news.sina.com.cn。
(a)測試得到的檔案io和登錄檔操作資料如下表:
測試網頁 |
檔案IO次數 |
登錄檔操作次數 |
測試時間 |
測試時長 |
部落格園 |
140678 |
3003 |
9:18:58到 9:28:38 |
9:40 |
暴雪 |
217082 |
2696 |
9:30:42到 9:41:10 |
10:28 |
土豆 |
164356 |
2980 |
9:43:50到 9:51:52 |
8:02 |
百度MP3 |
428937 |
2796 |
9:58:00到 10:15:51 |
17:51 |
新浪新聞 |
351122 |
3217 |
10:20:04到 10:31:20 |
11:16 |
合計 |
1302175 |
14692 |
57:17 |
Chrome瀏覽器在剛執行時,會載入系統目錄下的多個動態連結庫,然後會訪問安裝目錄中的“Cache”目錄多次,絕大部分的IO操作都集中在“Safe Browsing”和“Safe Browsing-journal”兩個檔案;沒有發現chrome訪問硬碟中的其它目錄和檔案。
(b)Chrome的網路通訊狀況
在Chrome以HTTP方式獲取到我們所檢視的網頁之後,它會頻繁的訪問64.233.189.102(埠:80,協議:HTTP,域名:safebrowsing.clients.google.com)和74.125.11.94(埠:80,協議:HTTP,域名:static.cache.l.google.com)。從域名的字面含義來看,safebrowsing.clients.google.com是安全瀏覽伺服器,static.cache.l.google.com是快取伺服器。我從2008年9月12日10:55:34.200一直讓chrome開始測試到2008年9月14日10:50:45.121,一共擷取到10176個數據包。Ultra Network Sniffer儲存的日誌檔案不能方便的直接用資料庫軟體進行匯入分析,這裡我暫時偷懶先抽取了第50~99條記錄進行分析,以後如果有時間我想辦法把所有的記錄都統計出來。這50條記錄的統計結果如下表:
遠端伺服器 |
流入本機資料包數目 |
流出本機資料包數目 |
小計 |
127.0.0.1 |
4 |
4 |
8 |
74.125.11.94 |
40 |
2 |
42 |
64.233.189.102 |
0 |
0 |
0 |
合計 |
44 |
6 |
50 |
注:127.0.0.1是本機,這部分資料沒有含義;流出到74.125.11.94的2個數據包都是HTTP GET請求,從74.125.11.94
流入的40個數據包都是HTTP頭和HTTP Binary Data。
從上表我們可以看出:(1)從本機流出的資料包很少,說明chrome幾乎不將本機的資料傳出;(2)流入的資料包都是二進位制檔案,不知道具體是什麼內容。
(c)Internet Explorer的檔案IO狀況
在測試的過程中,我還順便測試了一下IE6在瀏覽http://www.cnblogs.com/這個頁面的檔案IO狀況,用時10分22秒,共9351次檔案IO操作,大多操作集中在“C:/Documents and Settings/Administrator/Local Settings/History/History.IE5/”、“C:/Documents and Settings/Administrator/Cookies/”、“C:/Documents and Settings/Administrator/Local Settings/Temporary Internet Files/Content.IE5/”和“C:/Program Files/Thunder Network/Thunder/Profiles/”等目錄的檔案,其中Thunder Network是訊雷的預設安裝目錄。
對比IE和chrome,chrome的檔案IO操作是IE的10倍以上。
(3)解除安裝
解除安裝chrome比較簡單,點選開始選單的“解除安裝谷歌瀏覽器”即可快速的刪除掉chrome,不需要重新啟動電腦。解除安裝完之後會彈出一個要求填寫解除安裝原因的網頁,不過填與不填結果都一樣,chrome已經解除安裝完成了。解除安裝之後會在chrome的安裝目錄內遺留“User Data”這個子目錄,裡面保留有使用者的設定或者是它一廂情願的預設設定 和 Safe Browsing檔案以及快取檔案,該目錄的大小跟你使用chrome的頻繁程度及時間有關,我有次解除安裝之後佔我10.6M空間,剛才解除安裝之後佔我71.8M空間。
四、結論
非常感謝您能看完本文,我遵守儘量不做評論的約定不下結論。不過我相信您心中已經有了自己的看法,如果您願意跟別人分享您的看法,請在後面留下您的評論。
(注:實驗資料有380M,這裡不允許我發這麼大的檔案,我就不傳送上來了。如果您對資料有疑問,大可自己用文中介紹的方法自己動手重現。)
最後,祝大家中秋快樂。
相關推薦
Google Chrome動了我的乳酪?
一、前言 隨著Google Chrome瀏覽器的釋出,突然湧現了很多跟Chrome相關的文章,特別是《Chrome的居心叵測》和《對“Chrome居心叵測”一文之深入分析》令我感觸頗深。我是凡人,所以也來湊下熱鬧 ^_^ 。本文主要記述Chrome在安裝、執行、解除安
誰動了我的乳酪,誰動了我的程式碼,誰又動了我的“bug"
"你的是我的,我的還是我的”經常在熱戀中的情侶中這樣說,但現實生活中還是要好好掌握自己的主動權。 自己的東西,始終是自己的,不允許任何人在不知情的情況下,進行隨意的支配,就算在親密的人,在不知情的情況下,觸犯到了彼此的隱私,心情也會不美麗的,久而久之,還會積累很多的矛盾。
誰動了我的乳酪?--java例項初始化的順序問題
故事背景 有一天,老鼠小白髮現了一個奇怪的問題,它的乳酪的生產日期被誰搞丟了,不知道乳酪是否過期,可怎麼吃呀? 讓我們來看看吧 import java.util.Date;public class Cheese { public static final Cheese chees
HashMap踩坑實錄——誰動了我的乳酪
說到HashMap,hashCode 和 equals ,想必絕大多數人都不會陌生,然而你真的瞭解這它們的機制麼?本文將通過一個簡單的Demo還原我自己前不久在 HashMap 上導致的線上問題,看看我是如何跳進這個坑裡去的。 起因 在重構一段舊程式碼的時候發現有個 HashMap 的key物件沒有重寫 ha
《誰動了我的網絡資產》:4星。移動互聯時代的軟件使用技巧。
分享 常見 播放 4.4 權重 短信 排名 引擎 一道 本書作者自稱極客,我基本認可。全書講的是一些軟件使用的說明和技巧,許多技巧對IT從業人員來說也是比較新鮮的。 全書內容大致有以下三類:1:反欺詐知識與技巧;2:一些場景下的軟件推薦;3:軟件使用技巧。 總體評價
誰動了我的特征?——sklearn特征轉換行為全記錄
blog selection clas 意義 print encoder 分享 steps 轉換函數 目錄 1 為什麽要記錄特征轉換行為?2 有哪些特征轉換的方式?3 特征轉換的組合4 sklearn源碼分析 4.1 一對一映射 4.2 一對多映射 4.3 多對多映
MySQL實戰 | 03 - 誰動了我的資料:淺析MySQL的事務隔離級別
原文連結:這一次,帶你搞清楚MySQL的事務隔離級別! 使用過關係型資料庫的,應該都事務的概念有所瞭解,知道事務有 ACID 四個基本屬性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和永續性(Durability),今天我們主要來理解一下事務的隔離性。
誰動了我的Girl的窩
本文程式碼使用的語言為C#,請使用別的語言的同學自行轉換為自己習慣的語言 談到單例模式,首先要明確為什麼要使用單例模式? 目的:保證一個類僅有一個例項物件,並且該物件全域性共享 方法:構造私有化,屬性或方法公開化 1、最簡單的單例模式:餓漢式 由於在類被載入
不同人對BUG的反應,程式設計師:誰動了我的程式碼?
Bug 是個很有趣的東西,有程式碼的地方就有它,不同人對待 Bug也有不同的反應,一起來看吧~ 程式設計師:誰動了我的程式碼? 這確實是一種似曾相識的感覺,我經過無數次的解釋都沒有人相信,但我還是要說一句:它原本不是這個樣子的。 不過,程式猿通常有著執著的精神,在夜深人靜
深入理解PHP記憶體管理之誰動了我的記憶體
首先讓我們看一個問題: 如下程式碼的輸出, var_dump(memory_get_usage()); $a = "laruence"; var_dump(memory_get_usage()); unset($a); var_dump(memory_get_usage()); 輸出
誰動了我的 Token
這裡涉及到的系統是一個 7 年的遺留系統(技術棧是 .NET MVC2),即將被客戶淘汰。這篇博文的主題無關技術本身,文中談到的技術細節也不是什麼高大上的,更多的是想記錄因這件事情觸發的非技術思考。 早上7點45分來到公司,我坐在辦公桌旁邊開始考慮今天的工作事項。想到客戶一直抱怨的電子表單系統在產品環境上8
Android,誰動了我的記憶體(1)
一、 Android的記憶體機制 Android的程式由Java語言編寫,所以Android的記憶體管理與Java的記憶體管理相似。程式設計師通過new為物件分配記憶體,所有物件在java堆內分配空間;然而物件的釋放是由垃圾回收器來完成的。C/C++中的記憶體機制
偶現的MissingServletRequestParameterException,誰動了我的引數?
概述 排查過程 結論 概述 最近遇到一個偶現的問題,在向服務端請求的時候,偶爾會出現異常,在請求中的query String 傳遞了引數,卻出現了異常MissingServletRequestParameterException 如下所示
我學不動了...
最近過得真的是挺充實,都快習慣加班的節奏了,好在還能有個雙休。 記得去年剛出來實習找工作那會,迫不及待的想找家公司入職,巴不得是家公司要就去了。 工作後就轉型做 java 後端了,現在想想,還是挺明智的,現在這行情,後端確實比較好找工作。 從開始的連增刪改查都不會,到現在能獨立負責一些模組,想想這個過程
京東互保下線,阿里相互保無奈更名,巨頭進軍保險動了誰的乳酪?
在上月中旬,支付寶聯合信美相互險共同推出了新型保險產品“相互保”,憑藉著“一人生病,大家出錢,一人出事,萬人共濟”這樣新穎的參保模式,相互保也迅速成為了火爆一時的網紅保險,不僅加入人次迅速突破1000萬人,也引發了網際網路巨頭的爭相效仿,京東更在隨後不久就推出了與“相互保”規則類似的“京東互保”。
Google 的 Angular 迫使我放棄了 Web 開發
一直以來,Facebook 的 React、Google 的 Angular 和尤雨溪的 Vue
為什麼我再也不想和 Google HR 交談了
【伯樂線上導讀】: 關於程式設計師面試時現場寫程式碼,估計大家還記得 2015 年 6 月的一個新聞,知名包管理工具 Homebrew 的作者 Max Howell 去 Google 面試。因為他沒能寫出反轉二叉樹演算法,最後被 Google 拒絕了。後來 9 月份
JDK 12又來了,我學不動了...
開發十年,就只剩下這套架構體系了! >>>
RabbitMQ入門,我是動了心的
人一輩子最值得炫耀的不應該是你的財富有多少(雖然這話說得有點違心,呵呵),而是你的學習能力。技術更新迭代的速度非常快,那作為程式設計師,我們就應該擁有一顆擁抱變化的心,積極地跟進。 在 RabbitMQ 入門之前,我已經入門了 Redis、Elasticsearch 和 MongoDB,這讓我感覺自己富有極