selenium执行js并绕过webdriver监测常见方法

 更新时间:2022年04月12日 11:35:07   作者:Jeff的技术栈  
这篇文章主要为大家介绍了selenium执行js并绕过webdriver监测常见方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪

selenium执行js

优点:直接调用浏览器的环境
障碍:绕过selenium监测

原理:

# 执行js代码
bro.execute_script('js代码')

常见的selenium监测手段

正常登录 window.navigator.webdriver == undefined
自动化的 window.navigator.webdriver == true

除此之外,还有一些其它的标志性字符串(不同的浏览器可能会有所不同),常见的特征串如下所示:

webdriver  
__driver_evaluate  
__webdriver_evaluate  
__selenium_evaluate  
__fxdriver_evaluate  
__driver_unwrapped  
__webdriver_unwrapped  
__selenium_unwrapped  
__fxdriver_unwrapped  
_Selenium_IDE_Recorder  
_selenium  
calledSelenium  
_WEBDRIVER_ELEM_CACHE  
ChromeDriverw  
driver-evaluate  
webdriver-evaluate  
selenium-evaluate  
webdriverCommand  
webdriver-evaluate-response  
__webdriverFunc  
__webdriver_script_fn  
__$webdriverAsyncExecutor  
__lastWatirAlert  
__lastWatirConfirm  
__lastWatirPrompt  
$chrome_asyncScriptInfo  
$cdc_asdjflasutopfhvcZLmcfl_  

了解了这个特点之后,就可以在浏览器客户端JS中通过检测这些特征串来判断当前是否使用了selenium,并将检测结果附加到后续请求之中,这样服务端就能识别并拦截后续的请求。

常用绕过selenium监测1

正常登录 window.navigator.webdriver == undefined
自动化的 window.navigator.webdriver == true

from selenium import webdriver
options = webdriver.ChromeOptions()
# 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
options.add_experimental_option('excludeSwitches', ['enable-automation'])
#停止加载图片
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
browser = webdriver.Chrome(options=options)
browser.get('https://www.taobao.com/')

常用绕过selenium监测2

from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('debuggerAddress','127.0.0.1:9222')
browser=webdriver.Chrome(executable_path=r'C:\Users\TR\AppData\Local\Google\Chrome
\Application\chromedriver.exe',chrome_options=chrome_options)
browser.get('http://www.zhihu.com')

终端输入如下指令:chrome.exe --remote-debugging-port=9222 --user-data-dir=“D:\cdsf”(需要谷歌驱动在系统环境变量下,然后再运行程序)

remote-debugging-port是你代码中指定的端口debuggerAddress;executable_path是你谷歌驱动位置;user-data-dir随便指定一个目录就行

常用绕过selenium监测3

1.使用chrome的远程调试模式结合selenium来遥控chrome进行抓取,这样不会携带指纹信息

步骤:

- 使用调试模式手工启动chrome,进入chrome的安装路径,例如chrome装在 C:\program\google\chrome.exe下
- 进入chrome安装路径
- 执行命令:
#注意端口不要被占用,防火墙要关闭,user-data-dir用来指明配置文件的路径
   chrome.exe --remote-debugging-port=9222 --user-data-dir="指向任意空文件夹"

2.启动完·之后新建python文件

运行代码:

import requests
from selenium import webdriver
chrome_options = "C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe"
chrome_options  = webdriver.ChromeOptions()
chrome_options.add_experimental_option('debuggerAddress','10.8.13.95:9222')
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get("https://www.zhihu.com/signup?next=%2F")
# chrome.exe --remote-debugging-port=9222 --user-data-dir="D:\moni"

这样监测的就不是selenium模拟了

常用绕过selenium监测4

def selenium(js):
    option = webdriver.ChromeOptions()
    # option.add_argument('--headless')
    option.add_experimental_option('useAutomationExtension', False)
    option.add_experimental_option('excludeSwitches', ['enable-automation'])
    bro = webdriver.Chrome(executable_path='./chromedriver', options=option)  # 弹出浏览器,要给浏览器驱动的地址
     # 打开页面优先执行的js,execute_cdp_cmd
    bro.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
        "source": """
            Object.defineProperty(navigator, 'webdriver', {
              get: () => undefined
            })
          """
    })
    bro.implicitly_wait(10)
    bro.get('https://www.toutiao.com/')
    time.sleep(5)
    print(bro.page_source)  # 获取页面返回的html代码
    bro.execute_script(js)
    input()

以上就是selenium执行js并绕过webdriver监测常见方法的详细内容,更多关于selenium执行js绕过webdriver监测的资料请关注脚本之家其它相关文章!

相关文章

  • python基于SMTP发送QQ邮件

    python基于SMTP发送QQ邮件

    这篇文章主要为大家详细介绍了python基于SMTP发送QQ邮件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • 解决Python 进程池Pool中一些坑

    解决Python 进程池Pool中一些坑

    这篇文章主要介绍了解决Python 进程池Pool中一些坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python优雅实现二分查找的示例详解

    Python优雅实现二分查找的示例详解

    二分查找是一种高效的搜索算法,用于在有序数组中查找特定元素,本文将介绍二分查找的基本原理,并通过Python代码进行详细讲解,需要的可以参考一下
    2023-07-07
  • Sublime Text4 配置 Python3 环境、代码提示、编译报错的解决方案

    Sublime Text4 配置 Python3 环境、代码提示、编译报错的解决方案

    这篇文章主要介绍了Sublime Text4 配置 Python3 环境、代码提示、编译报错教程,通过图文并茂的形式给大家介绍了配置自动代码提示的方法,需要的朋友可以参考下
    2022-01-01
  • Python标准库与第三方库详解

    Python标准库与第三方库详解

    这篇文章主要介绍了Python标准库与第三方库,需要的朋友可以参考下
    2014-07-07
  • python中matplotlib的颜色以及形状实例详解

    python中matplotlib的颜色以及形状实例详解

    在Python中经常使用matplotlib画图,为了让图像显示的更加好看,经常需要对图表点、线形状及颜色进行设置,下面这篇文章主要给大家介绍了关于python中matplotlib的颜色以及形状的相关资料,需要的朋友可以参考下
    2022-01-01
  • Python机器学习算法之k均值聚类(k-means)

    Python机器学习算法之k均值聚类(k-means)

    这篇文章主要为大家详细介绍了Python机器学习算法之k均值聚类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • python矩阵/字典实现最短路径算法

    python矩阵/字典实现最短路径算法

    这篇文章主要为大家详细介绍了python矩阵/字典实现最短路径算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Python进行密码学反向密码教程

    Python进行密码学反向密码教程

    这篇文章主要为大家介绍了Python进行密码学反向密码的教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • python 实现生成均匀分布的点

    python 实现生成均匀分布的点

    今天小编就为大家分享一篇python 实现生成均匀分布的点,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12

最新评论