chromium源碼官網 https://source.chromium.org/chromium/chromium/src
說下修改的chromium源碼思路:
首先在修改源碼過檢測之前,我們要知道它是怎么檢測的,找到他通過哪個JS的API來做的檢測,只有知道了如何檢測,我們才能想辦法去繞過,俗話說,知己知彼百戰百勝嘛!
修改 webdriver 檢測
在瀏覽器中,JS環境對抗的時候,會通過 navigator.webdriver 來檢測是否為自動化在控制網站,如果返回為true,則表示是自動化在控制,否則不是,所以我們只需要將他的返回值永遠返回false即可
自動化控制返回的值
正常瀏覽器返回的值
在chromium源碼中,找到以下路徑
\src\third_party\blink\renderer\core\frame\navigator.cc
有以下兩種修改方式,選其中一種即可。
方式一:
方式二:
修改完之后保存代碼即可,在修改的時候不要將原始代碼刪除,注釋即可方便出錯的時候查問題。
保存好了之后,運行以下命令,這個命令就是前面編譯章節中的編譯命令,你當時編譯的時候用的是什么,這里就寫什么,他不是重新編譯,是增量編譯,只對新增的內容進行編譯,所以速度會快很多。
autoninja -C out/Default chrome
編譯好之后,通過自動化程序檢測一下
我們這里使用 playwright 來測試
from playwright.sync_api import sync_playwrightdef run():with sync_playwright() as p:browser = p.chromium.launch(executable_path="E:\my_code\chromium\src\out\Default\chrome.exe",headless=False)# 創建一個新的瀏覽器上下文context = browser.new_context()# 打開一個新頁面page = context.new_page()# 訪問目標網站page.goto("https://www.baidu.com")# 等待用戶輸入后再關閉瀏覽器input("Press Enter to close the browser...")# 關閉瀏覽器browser.close()if __name__ == "__main__":run()
可以看到是已經成功了