注意:网站可能有多种方法来识别webdriver,下面的方法仅适用于网站对webdriver的值为undefined时无法识别
from selenium.webdriver import Chrome
from selenium import webdriver
import time
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
browser = webdriver.Chrome(options=options, executable_path='./chromedriver')
browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
browser.get("http://www.porters.vip/features/webdriver.html")
time.sleep(20)
browser.find_element_by_css_selector("#article > button").click()
elements = browser.find_element_by_css_selector("#content")
time.sleep(1)
print(elements.text)
browser.close()
import asyncio
from pyppeteer import launch
async def main():
browser = await launch()
page = await browser.newPage()
await page.evaluateOnNewDocument('''() => {
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
}
''')
await page.goto("http://www.porters.vip/features/webdriver.html")
await page.click("#article > button")
await asyncio.sleep(5)
await page.screenshot({"path": "webdriver.png"})
await browser.close()
asyncio.get_event_loop().run_until_complete(main())