首页 > 其他分享 >Selenium绕过爬虫检测(终极方案)

Selenium绕过爬虫检测(终极方案)

时间:2024-03-28 11:02:03浏览次数:23  
标签:浏览器 Chrome 检测 Selenium 爬虫 path 终极 options

众所周知,Selenium是一个用于自动化Web应用程序测试的工具,通过控制浏览器执行这些脚本来模拟用户的操作。但是,太容易被检测!通过Selenium启动的浏览器,有很多的特征能够被检测出来,进而触发验证码、滑块等。

网上有很多的防检测方法,大都是掩耳盗铃,对于一些网站来说没什么效果。只要使用Selenium启动浏览器,必定会被检测到。

通过访问 sannysoft 可以看到,使用Selenium启动的网站,不管用了什么防检测,都会被检测出来。

既然使用Selenium启动浏览器就会被检测到,那该如何绕过检测?

没错,那就是不用Selenium启动。我们可以通过手动启动浏览器,并用Selenium连接此浏览器,达到完美的防检测。但是我们既然用Selenium,肯定是为了自动化,不可能每次都先手动打开浏览器。

我们可以使用subprocess 来启动浏览器,再用Selenium连接,来完成这一流程。

话不多说,直接进入正题:

(此次需要用到的插件,没有安装的小伙伴可以自行安装一下)

browser_path = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"

subprocess.Popen([browser_path,'--remote-debugging-port=9222'])

使用subprocess命令行打开浏览器,并且添加参数,给此次启动的浏览器添加一个9222的端口。browser_path 的值是你电脑里谷歌浏览器的路径,windows一般是这个。

options = Options()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(executable_path='C:\\Program Files\\Google\\Chrome\\Application\\chromedriver.exe', options=options)

driver.get('https://bot.sannysoft.com/')

然后通过Selenium的设置浏览器选项,通过上面的端口,连接上浏览器。executtable_path的路径和上面一样。

最后直接访问地址,可以看到,我们这个完全和手动打开的浏览器一模一样,成功的绕过了所有检测。

最后,贴上完整代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import subprocess
import time

browser_path = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"

subprocess.Popen([browser_path,'--remote-debugging-port=9222'])

time.sleep(3)

options = Options()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(executable_path='C:\\Program Files\\Google\\Chrome\\Application\\chromedriver.exe', options=options)

driver.get('https://bot.sannysoft.com/')

大功告成!

标签:浏览器,Chrome,检测,Selenium,爬虫,path,终极,options
From: https://blog.csdn.net/pengbin123456/article/details/137079155

相关文章

  • 就是这么简单,Selenium StaleElementReferenceException 异常分析与解决
    简介Selenium是一个流行的自动化测试工具,用于模拟用户与网页交互。然而,当我们在使用Selenium时,可能会遇到一个常见的异常,即StaleElementReferenceException。这个异常通常在我们尝试与网页上的元素交互时抛出,可能会导致我们的自动化测试脚本运行失败。本文将深入探讨StaleE......
  • selenium(8)断言,unittest
    Selenium中的断言用于验证应用程序的状态是否与所期望的一致。在使用Selenium进行自动化测试时,断言通常用于以下方面:页面属性断言:断言标题、URL或页面源码中是否包含或不包含特定字符。这是最常用的断言方式,可以用来断言页面是否正常打开,是否在指定的窗口及页面上。元素存在断......
  • 最详细爬虫零基础教程11——html格式提取之xpath
    文章目录一、html和xml二、xpath获取节点属性三、xpath语法四、案例展示总结一、html和xmllxml是一款高性能的PythonHTML/XML解析器,我们可以利用XPath,来快速的定位特定元素以及获取节点信息。区别:1.xml被设计为传输和存储数据,其焦点是数据的内容2.html是显示......
  • 最详细爬虫零基础教程10——json格式提取之jsonpath
    文章目录一、json数据解析二、案例演示1.解析获得数据2.简化代码3.豆瓣json数据解析总结一、json数据解析用来解析多层嵌套的json数据;JsonPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript,Python,PHP和Java。语......
  • 爬虫(m3u8格式视频文件)
    点击查看代码importreimportrequestsfromlxmlimportetreeimportasyncioimportaiohttpimportaiofilesimportosfromCrypto.CipherimportAES#获取第一层m3u8文件的url并下载deffirst_m3u8_url(url):resp=requests.get(url,verify=False)html......
  • Selenium报错ElementNotInteractableException元素不可交互,该如何解决?
    简介在使用Selenium进行Web自动化测试时,我们可能会遇到各种异常情况。其中之一就是ElementNotInteractableException异常,这通常意味着在尝试与页面元素交互时出现了问题。本文将详细介绍这个异常的原因、可能的解决方法,并提供示例代码来帮助你更好地理解和处理这种情况。......
  • python爬虫小案例-re正则
    案例如下:1.使用正则表达式和文件操作爬取并保存“某吧”某帖子全部内容(该帖不少于5页。本次选取的是某吧中的NBA吧中的一篇帖子,帖子标题是“克莱和哈登,谁历史地位更高”。爬取的目标是帖子里面的回复内容。源程序如下:importcsvimportrequestsimportreimporttime......
  • Selenium 控制浏览器操作
    Selenium控制浏览器方法操作使用场景实现代码get打开浏览器web测试第一步driver.get(url)refresh刷新浏览器模拟刷新浏览器driver.refresh()back回退浏览器模拟回退步骤driver.back()maxmize_window最大化浏览器......
  • Selenium Web控件定位
    web控件定位方法描述方式CLASS_NAMEclass属性对应的值driver.find_element(By.CLASS_NAME,"navbar-anonymous")CSS_SELECTORcss表达式driver.find_element(By.CSS_SELECTOR,".active.keyword")IDid属性对应的值driver.find_element......
  • Selenium 等待
    等待在测试中,添加等待是为了避免页面为渲染完成时操作导致错误等待分为三种:强制等待隐式等待显式等待类型使用方法原理适用场景直接等待time.sleep()强制线程休眠调试代码,临时添加隐式等待driver.implicitly_wait()......