zoukankan      html  css  js  c++  java
  • selenium怎样避免被服务器检测

      selenium是用来完成浏览器自动化相关的操作.可以通过代码的形式制定一些基于浏览器自动化的相关操作(行为动作),当代码执行后,浏览器就会自动触发相关的事件.但这并不能避免服务器的检测.当在浏览器中打开开发者工具输入window.navigator.webdriver时会显示true,说明被服务器检测到了,通常情况下会显示undefined.下面我们就通过对selenium进行设置,避免被检测.

    from selenium import webdriver
    from selenium.webdriver import ChromeOptions
    
    option = ChromeOptions()     #实例化一个ChromeOptions对象
    option.add_experimental_option('excludeSwitches', ['enable-automation'])  #以键值对的形式加入参数
    
    bro = webdriver.Chrome(executable_path='./chromedriver.exe',options=option)  #在调用浏览器驱动时传入option参数就能实现undefined
    

      以上操作只适用于比较老的Google版本,最新的版本上述操作已经失效,新版可以尝试下边的操作(只适用于88之前的版本):

    driver = webdriver.Chrome()
    driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
            "source": """
            Object.defineProperty(navigator, 'webdriver', {
              get: () => undefined
            })
          """
        })

       对于火狐浏览器可以尝试一下内容:

    profile = webdriver.FirefoxProfile()
    profile.set_preference("dom.webdriver.enabled", False)
    driver = webdriver.Firefox(firefox_profile=profile)
    

      

  • 相关阅读:
    使用VisualStudio进行单元测试之二
    使用VisualStudio进行单元测试之一
    ExtJS监听键盘事件:回车键实现登录功能
    PPTP无法连网
    Android深度探索.
    Android深度探索
    Android驱动开发
    window.open()的具体使用方法
    js控制的几种页面跳转和传值(转载)
    Hatching shader
  • 原文地址:https://www.cnblogs.com/wangtaobiu/p/10822071.html
Copyright © 2011-2022 走看看