批量修改谷歌瀏覽器(Chrome)地址欄保存的歷史記錄及導出功能探索研究

內網IP調整引起的Chrome歷史記錄修改及ShadowRoot的學習

因爲IP常常變更, 致使本地項目的那些存在地址欄的歷史記錄就都失效了, 忽然腦洞大開, 有沒有辦法修改本地歷史記錄的方法?javascript

想法是: 假設我原IP是 192.168.1.51, 新IP是 192.168.1.63, 我歷史記錄有 http://192.168.1.51:8080/test.html, 我經過某種辦法強行修改Chrome歷史記錄將192.168.1.51替換成192.168.1.63, 這樣, 下次在地址欄輸入test, 他就能自動填充 http://192.168.1.63:8080/test.html了.

現實是殘酷的, Chrome軟件的歷史記錄貌似是二進制文件, 也多是出於安全考慮. 爲了快速解決問題, 我就不打算去研究如何修改二進制文件了.html

因而改了host, 映射了一個Ip到本地域名, 爲了方便內網其餘小白用戶快速修改host, 我就搞了個bat文件給他們, 執行後就追加一條來修改host, 參考批處理文件中ECHO命令顯示換行(由於我裝了adblocker訪問的時候頁面展現正常, 後來朋友說看不到, 故劃掉).java

echo. >> %WINDIR%\system32\drivers\etc\hosts & echo 192.168.1.63 bs.ybj.com >> %WINDIR%\system32\drivers\etc\hosts

固然這樣之後若是再換IP, 就要手動就改一下host文件了~ 若是偷懶改這個bat文件, 有追加一條新的同域名指向不一樣IP, 可能不會出問題, 也可能會致使每次訪問頁面卡20s左右出來. 固然這裏咱們不考慮文件修改權限的系統相關的問題~jquery

其餘思考一: ShadowRoot探索

關於修改本地歷史記錄的想法誕生後, 我順便在歷史記錄chrome://history/中搜索了一下192.168.1.51, 發現有兩百多條, 我打算將他們導出成文本替換(其實沒什麼意義), 然而我發現, 在Console面板裏, 這個歷史記錄竟然沒法經過普通的JS方法將全部的地址遍歷輸出, 經過觀察Elements面板的DOM結構, 發現緣由在於這個#shadow-root (open)這個節點內的DOM元素不能被直接獲取到. 歷來沒有研究過ShadowRoot的我懵逼了, MDN上查到, 它與主DOM樹分開渲染, 那麼此時我是否有辦法獲取到DOM子樹的根節點內的元素呢. 固然能夠, 參考How to access elements under `shadow-root` at 'chrome://downloads' using jquery and selenium?, 原來有這個神奇的/deep/. 因而試着寫了一段:chrome

const HISTORYITEMS = document.querySelectorAll('#history-app /deep/ #content /deep/ #history /deep/ #infinite-list /deep/ history-item /deep/ #title');
for (let i = 0; i < HISTORYITEMS.length; i++) {
  let item = HISTORYITEMS[i];
  let url = item.getAttribute('href');
  let name = item.getAttribute('title');
  console.log(`${i}: ${name}'的URL地址是${url}
  `);
}
因爲默認顯示條數不會所有顯示出來, 因此可能需要手動滾動至底部加載完成後執行.

其餘思考二: 真的能夠批量修改Chrome存儲的歷史記錄值

後來, 我仍是抱以試試的想法去嘗試着修改Chrome歷史記錄, 沒想到竟然仍是很容易的. 確認及準備好如下工做:瀏覽器

  1. 個人系統Windows 10 64bit
  2. 個人Chrome版本63.0.3239.132(正式版本) (64 位)
  3. 下載HxD編輯工具, 直接下載, 安裝並打開軟件
  4. 關閉Chrome瀏覽器, 並打開用戶我的配置相關文件的目錄, (請修改對應的用戶名whidy部分替換)安全

    C:\Documents and Settings\whidy\Local Settings\Application Data\Google\Chrome\User Data\Default

    備份好History, History-journal, History Provider Cache三個文件(防止誤操做形成的Chrome破壞形成的損失)bash

而後直接用HxD依次打開這三個文件, 使用編輯器的替換功能, 將192.168.1.51所有替換爲192.168.1.63, 保存.app

完成後, 再次啓動Chrome, 若是沒有發生什麼異常, 我想這個奇葩想法的功能就實現了. 我成功的替換了280多條歷史記錄~編輯器

相關文章
相關標籤/搜索