|
前言 undetected_chromedriver是一个用于绕过Web自动化中的ChromeDriver检测的Python库。它提供了更好的隐匿性和稳定性.适用于以下场景:Web自动化测试:undetected_chromedriver可以用于模拟用户在浏览器中的操作进行自动化测试,例如填写表单、点击按钮、抓取页面内容等。由于其对驱动程序的检测绕过能力,可以帮助您避免被网站检测到并防止启动时的安全问题。网页数据爬取:undetected_chromedriver在进行网页数据爬取时也能够提供更高的隐匿性。它可以模拟浏览器行为,如加载JavaScript、执行Ajax请求等,从而获取动态生成的内容。反爬虫绕过:某些网站会使用检测机制来识别和阻止爬虫程序。undetected_chromedriver可以绕过这些检测机制,使得爬虫程序更难被网站检测到,从而提高爬取数据的成功率。目录注意使用到的第三方库代码样例运行环境应用场景代码一些常见的问题和解决方法无法启动Chrome浏览器Chrome版本与ChromeDriver版本不匹配无法绕过自动化检测性能问题不支持的功能注意 无论在何种场景下使用undetected_chromedriver,都应该遵守相关法律法规并尊重网站的访问政策。在进行任何自动化操作或爬取数据之前,最好阅读并了解目标网站的使用条款、隐私政策和robots.txt文件,并确保您的行为符合相关规定。使用到的第三方库undetected_chromedriver是一个用于绕过Web自动化中的ChromeDriver检测的Python库。unhandled_prompt_behaviour(prompt_handler:Optional[Callable]=None):设置如何处理未处理的提示框。默认情况下,当出现未处理的提示框时,将引发UnexpectedAlertPresentException异常。您可以使用此方法设置回调函数来处理这些提示框。disable_csp():禁用Chrome的内容安全策略(CSP)。CSP是一种安全机制,它可以限制浏览器加载和执行的资源和代码,从而减少潜在的安全漏洞。但是,在某些情况下,CSP可能会阻止您访问所需的资源,因此您可能需要禁用它。enable_automation():启用Chrome的自动化标识。这个方法会启用一个旗标,来帮助您避免被一些网站检测为自动化脚本并被阻止访问。start_session():启动一个新的浏览器会话,并返回与之对应的Session实例。Session对象提供了许多有用的方法,例如visit()、find()和execute_script(),可以用于操作浏览器并与网站交互。clear_cache():清除浏览器缓存。这可以帮助您避免特定网站缓存数据的影响,并确保您获得最新的页面内容。其他常用的Selenium方法:例如get()、find_element()、find_elements()、execute_script()等。Selenium selenium.webdriver.common.by提供了一组用于定位网页元素的方法。By.ID:通过元素的 id 属性进行定位。By.NAME:通过元素的 name 属性进行定位。By.CLASS_NAME:通过元素的 class 属性进行定位。By.TAG_NAME:通过元素的标签名称进行定位。By.LINK_TEXT:通过链接文本进行定位。By.PARTIAL_LINK_TEXT:通过链接文本的部分内容进行定位。By.CSS_SELECTOR:通过CSS选择器进行定位。By.XPATH:通过XPath表达式进行定位。代码样例运行环境开发环境Anaconda3python3.9selenium 4.12.0undetected-chromedriver 3.5.3浏览器谷歌浏览器 版本78.0.3904.108(正式版本)(64位)驱动 chromedriver_win32.zip(需要和浏览器版本适配,下载地址如下) https://cdn.npmmirror.com/binaries/chromedriver/78.0.3904.105/chromedriver_win32.zip应用场景访问百度网站,查询一个问题'undetected_chromedriver如何使用',获取返回的搜索信息,将其中的和链接信息进行输出.代码fromundetected_chromedriverimportChrome,ChromeOptionsfromselenium.webdriver.common.byimportBy#创建ChromeOptions对象并配置#r"D:\chromedriver.exe"options=ChromeOptions()#options.add_argument("--headless")#设置无头模式#创建Chrome对象路径最好是设置绝对路径,排查路径的问题driver=Chrome(options=options,driver_executable_path=r"D:\chromedriver.exe")#打开百度首页driver.get("https://www.baidu.com")#输入要查询的问题query="undetected_chromedriver如何使用"search_box=driver.find_element(By.CSS_SELECTOR,"input[id='kw']")search_box.send_keys(query)#提交搜索表单search_button=driver.find_element(By.CSS_SELECTOR,"input[id='su']")search_button.click()#等待搜索结果加载完成driver.implicitly_wait(5)#等待5秒钟,如果结果在该时间内加载完成则继续执行#获取搜索结果results=driver.find_elements(By.CSS_SELECTOR,"h3[class='c-titletttts-title']a")forresultinresults:title=result.texturl=result.get_attribute("href")print(f":{title}")print(f"链接:{url}")print()#关闭浏览器会话driver.quit()一些常见的问题和解决方法无法启动Chrome浏览器如果在使用undetected_chromedriver启动浏览器时遇到问题,首先确保您已正确安装Chrome浏览器和对应版本的ChromeDriver。您可以从Chrome官方网站下载最新版本的浏览器和ChromeDriver。另外,请确保您的操作系统与所使用的ChromeDriver版本兼容。Chrome版本与ChromeDriver版本不匹配undetected_chromedriver需要与您已安装的Chrome浏览器版本相对应的ChromeDriver版本。当ChromeDriver版本与Chrome版本不匹配时,可能会出现错误或启动失败。请确保两者版本匹配,并及时更新ChromeDriver。无法绕过自动化检测某些网站可能会检测到您使用的是自动化工具,并采取措施阻止您的访问。尽管undetected_chromedriver可以提供一定程度上的自动化检测绕过能力,但无法保证绝对的成功。您可以尝试使用其他技术手段,如更改User-Agent、模拟人类的浏览行为等,来增加绕过检测的成功率。性能问题使用undetected_chromedriver可能会引入一些额外的性能开销,因为它需要执行一些逻辑来绕过检测。如果您发现脚本运行速度较慢,可以尝试优化代码或考虑直接使用原生的ChromeDriver进行操作。不支持的功能undetected_chromedriver是一个针对特定用例的库,其中某些功能可能与标准的SeleniumAPI不兼容或不支持。如果您需要使用某些高级功能或特定的Selenium特性,需要参考undetected_chromedriver的文档,了解其是否支持相关功能。
|
|