目前存在一個場景:需要填充網頁上的賬號密碼模擬登陸,但是不能觸發或者給chrome的密碼管理器識別到真實的賬號密碼。

以前其實就比較好奇這個密碼管理器是如何正確抓取網頁上的密碼的。


經過了一天的研究,大概可以得出幾個結論了,我不保證這個邏輯是正確的,但是如果有其他人需要參考我想還是能提供一些幫助的,當然也可能存在其他我沒觀測到的情況:

  1. 在網頁加載完成後密碼管理器就會根據某種dom查找的算法邏輯找出網頁中存在的賬號密碼input, 然後持續的跟蹤這些dom元素的狀態信息。
  2. 因為存在dom狀態跟蹤,所以修改input的value時,密碼管理器的值也會產生變化。
  3. 彈出是否保存密碼的時候一般是涉及網頁跳轉(URL變化)

我這裡目前只想到了2種方案來達成目標:

  • 第一種:在觸發登陸後,在網頁跳轉執行前,將賬號密碼修改為fake值,這樣就能在跳轉後騙過密碼管理器。
  • 第二種:斷開密碼管理器對dom狀態的跟蹤,使用重新刪除和創建dom的方式來完全規避密碼管理器. 這個方法是最直接有效。但是目前大部分的前端應用會使用Vue/React等框架,他們的原理是虛擬dom渲染,這個方法會影響這些響應式運行時實現。