• 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)
    

      

  • 相关阅读:
    1_Flask开启debug
    29_使用celery发送短信
    00_celery介绍(处理耗时任务)
    28_django限制请求方法装饰器
    27_扩展User模型
    05-3_单链表的实现
    05-2_单向链表
    05-1_链表的定义
    04-2_Python中的线性表
    04-1_线性表的操作
  • 原文地址:https://www.cnblogs.com/wangtaobiu/p/10822071.html
Copyright © 2020-2023  润新知