2021最新Selenium真正绕过webdriver检测

发表于:2021-6-16 09:18

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:顽强拼搏的阿k    来源:CSDN

  一、什么是真正绕过浏览器检测?
  https://bot.sannysoft.com 这是chrome的真正检测网址。为什么要强调绕过webdriver属性检测?有些网址通过webdriver检测使得Selenium无法获取元素、无法控制按钮等情况。
  1、PC环境打开chrome的效果
  一般来说普通的启用webdriver即使也是会标红的,以上是打开本地chrome的检测属性。
  2、 普通的启动webdriver
  上码:
  from selenium import webdriver
  class WebDriverChrome(object):
      def __init__(self):
          self.driver = self.StartWebdriver()
      def StartWebdriver(self):
          options = webdriver.ChromeOptions()
          options.add_argument("start-maximized")
          options.add_experimental_option("excludeSwitches", ["enable-automation"])
          options.add_experimental_option("useAutomationExtension", False)
          driver = webdriver.Chrome(options=options)
          return driver
      def RunStart(self):
          self.driver.get('https://bot.sannysoft.com')
          # time.sleep(10)
          # self.driver.quit()
  if __name__ == '__main__':
      Crawl = WebDriverChrome()
      Crawl.RunStart()
  3、Js注入真正绕过webdriver的检测属性
  为什么我注入的js属性有效?
  该js文件是pyppetter中绕过webdriver检测所用到的,现在直接导入到Selenium启动的chrome中。
  上码:
  from selenium import webdriver
  class WebDriverChrome(object):
      def __init__(self):
          self.driver = self.StartWebdriver()
      def StartWebdriver(self):
          options = webdriver.ChromeOptions()
          options.add_argument("start-maximized")
          options.add_experimental_option("excludeSwitches", ["enable-automation"])
          options.add_experimental_option("useAutomationExtension", False)
          driver = webdriver.Chrome(options=options)
          with open('./stealth.min.js') as f:
              js = f.read()
          driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
              "source": js
          })
          return driver
      def RunStart(self):
          self.driver.get('https://bot.sannysoft.com')
          # time.sleep(10)
          # self.driver.quit()
  if __name__ == '__main__':
      Crawl = WebDriverChrome()
      Crawl.RunStart()
  js注入的文件[stealth.min.js]
  命名不统一要求能读取就可以了。
  获取方式:
  安装node.js
 npx extract-stealth-evasions
  就会在你执行命令的文件夹下面生成一个stealth.min.js文件。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号