您好,登錄后才能下訂單哦!
如何正確移除中Pyppeteer的window.navigator.webdriver,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
時過境遷,隨著 Chrome 版本升級,這一方法也宣告失效。
今天我們來講講如何隱藏Pyppeteer。
今天的方法非常簡單,不需要修改源代碼。
大家閱讀 Selenium 版的文章,應該看到我們的原理是通過 CDP 執行一段 JavaScript 代碼。這段代碼中有一個關鍵詞叫做addScriptToEvaluateOnNewDocument
。表示添加一段腳本,在打開新文檔時執行。
我們記住這個關鍵詞EvaluateOnNewDocument
。現在大家打開 Pyppeteer 的官方 API[1],搜索evaluateOnNewDocument
可以看到原來 Pyppeteer 也是支持這個功能的。
這樣一來文件就非常簡單了,我們在 Pyppeteer 里面直接調用它,并傳遞 JavaScript 代碼就好了:
import asyncio
from pyppeteer import launch
async def main():
browser = await launch(executablePath='/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', headless=False)
page = await browser.newPage()
await page.evaluateOnNewDocument('''() => {
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
}
''')
await page.goto('http://exercise.kingname.info')
input('檢查完畢后按下回車鍵關閉窗口...')
await browser.close()
asyncio.run(main())
代碼的運行效果如下圖所示:
完美解決問題。并且只要你不開新的選項卡或者新的窗口,只在當前窗口打開新的網址或者刷新頁面,這個 js 代碼都是自動生效的,不需要重復執行。
其中關鍵的代碼就是:
await page.evaluateOnNewDocument('''() => {
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
}
''')
讓 Pyppeteer 在每個新頁面加載的時候,所有網站自帶的 js 執行之前,執行參數中的這段JavaScript 函數。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。