selenium爬虫检测之如何避免对isTrusted属性检测

2023-11-17

如何避免对isTrusted属性检测?

检测原理

什么是isTrusted属性?在web api官方网站mozilla.org有如下解释:“Event接口的 isTrusted 属性是一个只读属性,它是一个布尔值(Boolean)。当事件是由用户行为生成的时候,这个属性的值为 true ,而当事件是由脚本创建、修改、通过 EventTarget.dispatchEvent() 派发的时候,这个属性的值为 false 。”

Demo举例

创建Demo

创建一个名为‘sample_istrusted.html’本地的Html网页

<html>
<body>

<h1>测试isTrusted属性</h1>

<button type="button" name="bt" id="bt">点我</button>

</body>
</html>

使用Selenium +FireFox打开该网页

from selenium import webdriver


chrome_options = webdriver.FirefoxOptions()
chrome = webdriver.Firefox()

chrome_options.add_argument('lang=zh-CN,zh,zh-TW,en-US,en')
chrome_options.add_argument(
    'user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleW\
    ebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36')

chrome.get(r"C:\Users\chaosheng\Desktop\sample_istrusted.html")

在浏览器控制台创建点击函数,绑定事件的处理函数将会在button点击的时候在控制台输出isTrusted的值。

document.querySelector("#bt").addEventListener("click",
function(event) {
    console.log('被点击,isTrusted值为:');
    console.log(event.isTrusted);
});

测试

人手点击按钮测试 True

人手点击值为True
在这里插入图片描述

执行代码:控制台运行js代码来执行点击事件 False

使用程序点击值为False

document.querySelector('#bt').click();

在这里插入图片描述

小总结

到这里我们大概明白了原理:扩展到所有事件,如果事件是我们手动触发的isTrusted(可信)就是true,如果是通过JavaScript去直接执行就是false。

执行代码:利用py断点输入py命令来执行点击事件 True

1.新建selenium_ipdb.py并运行

from selenium import webdriver


chrome_options = webdriver.FirefoxOptions()
chrome = webdriver.Firefox()

chrome_options.add_argument('lang=zh-CN,zh,zh-TW,en-US,en')
chrome_options.add_argument(
    'user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleW\
    ebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36')

chrome.get(r"C:\Users\chaosheng\Desktop\sample_istrusted.html")

import ipdb

# 断点,执行到这里程序会进入ipython的调试控制台
ipdb.set_trace()

2.在浏览器控制台添加点击事件如上文
3.在断点处执行Python代码
在这里插入图片描述

chrome.find_element_by_name('bt').click();
执行代码:利用py断点输入js命令来执行点击事件 False
 chrome.execute_script('document.querySelector("#bt").click();')

原因

因为我们在用python执行:

driver.find_element_by_name(“bt”).click();
  我们实际上走的是Chrome DevTools Protocol协议的这个接口:
  在这里插入图片描述

并不是在chrome控制台下直接执行js,所以isTrusted还是和我们手动点击一样是可信的,就如同相当于浏览器给你开了一个方便之门,可以“假装是手动”,类似的其他点击操作原理一样,大家可以自己去尝试。

结果

所以,最后我们需要注意的就是在selenium爬虫的时候,要想不要被前端反爬利用isTrusted检测到,就不要用直接执行js的方式去操作浏览器。

来源

https://zhuanlan.zhihu.com/p/335858574

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

selenium爬虫检测之如何避免对isTrusted属性检测 的相关文章

随机推荐

  • 双指针技巧总结

    一 双指针技巧 情景1 通常 我们只需要一个指针进行迭代 即从数组中的第一个元素开始 最后一个元素结束 然而 有时我们会使用两个指针进行迭代 双指针的典型场景 1 从两端向中间迭代数组 2 一个指针从头部开始 而另一个指针从尾部开始 1 反
  • python获取最大、最小值

    1 获取数组极值 并返回索引 c 10 5 0 5 3 10 15 20 25 print c index min c 返回最小值 print c index max c 返回最大值 2 对series求最值 file path D Rec
  • 【C++】模板初阶

    文章目录 1 文件的编译和链接 1 1编译 1 2链接 2 函数模板 2 1函数模板格式 2 2函数模板的显示实例化 2 3非模板函数和同名函数模板的调用顺序 3 类模板 4 模板声明和定义分离的情况 1 文件的编译和链接 1 1编译 编译
  • (一)linux系统简介, centos简介及特点,设置静态IP,防火墙

    本章重点 linux系统简介及特点 下载安装 网络和防火墙的相关命令 具体内容 linux系统简介 Linux 内核最初只是由芬兰人林纳斯 托瓦兹 Linus Torvalds 在赫尔辛基大学上学时出于个人爱好而编写的 git 代码同步技术
  • [007]爬虫系列

    一 背景 有些时候网站开发者为了反爬 会做一些状态码欺骗的处理 原理如下 例如 浏览器发送一个请求 获取一个js文件 服务器返回状态码 例如 503等 此时浏览器就会按照状态码503给它做相应的处理 即 浏览器为了速度 会清缓存 所以直接s
  • 压力测试工具apache-ab讲解

    最近在做webservices 得到的数据是从德国那边的服务器 要将这些数据整合到现在网站中去 不知道性能如何 就做个压力测试 现在有些压力测试工具都是收费的 在开源的apache中自带个ab工具 就在C Apache2 2 bin ab
  • Leetcode初级算法——链表

    删除链表中的节点 请编写一个函数 使其可以删除某个链表中给定的 非末尾 节点 传入函数的唯一参数为 要被删除的节点 现有一个链表 head 4 5 1 9 它可以表示为 示例 输入 head 4 5 1 9 node 5 输出 4 1 9
  • pycharm使用anaconda

    一 Anaconda 1 简介 Anaconda就是可以方便的对的python包进行管理 并且可以通过可视化界面对虚拟环境进行管理 Anaconda包含大部分python库 且自带jupyter notebook等一系列应用 实在是学习py
  • Anaconda Prompt 如何切换工作路径

    Anaconda Prompt 默认路径 默认路径是你的用户名路径 切换路径 Anaconda Prompt在默认路径下 无法直接cd到其他盘 只能在根目录下进行切换盘符 在用户名路径下 输入cd 切换到根目录 返回根目录 使用cd 切换到
  • Office 之将 PPT 图片完美插入 Word

    将 PPT 图片完美插入 Word 原始文档 https www yuque com lart tools wdg4ww 前言 PPT 提供了简单易用的基本绘图支持 而 Word 则提供了专业的文档撰写和处理的支持 但这些工具并不是独立且互
  • 国内版ChatGPT插件来了,快速帮你阅读分析一本书,拆书神器

    好消息 我们都知道 自 OpenAI 开放插件后 其插件数量一直在迅速增加 据国外网友统计 最新的插件总数已经有 430 个 与 5 月 13 日刚开放时的 74 个相比 增长超过 400 而现在 文心一言网页版也正式添加了插件机制 普通用
  • 数据库操作不再困难,MyBatis动态Sql标签解析

    系列文章目录 MyBatis缓存原理 Mybatis的CachingExecutor与二级缓存 Mybatis plugin 的使用及原理 MyBatis四大组件Executor StatementHandler ParameterHand
  • 网页设计,前端大作业-个人主页网站

    个人主页网站 下载链接在文末 个人介绍 比较简单的一个网站适合初学者学习使用 点我下载
  • 简单有效,如何彻底卸载删除AlibabaProtect.exe

    简单有效 如何彻底卸载删除AlibabaProtect exe Process Hacker https www isharepc com 33781 html
  • Java常量池理解和经典总结

    Java常量池理解和经典总结 一 相关知识 1 什么是常量 第一种 是一个值 这个值本身 我们就叫做常量 整型常量 1024 实型常量 1 024 字符常量 g c w 字符串常量 gcw 逻辑常量 true false 这只是我们平时我们
  • JPEG数据格式分析

    添加链接描述 参考如让 感谢原创分享 JPEG数据分析 分析对象是一幅8x8的jpg图片 如下 图片已被放大并被虚线切分 这里写图片描述 用windows照片查看器查看图片详细信息 信息 参数 大小 667字节 尺寸 8x8 宽度 8像素
  • 【干货】Spring远程命令执行漏洞(CVE-2022-22965)原理分析和思考

    前言 上周网上爆出Spring框架存在RCE漏洞 野外流传了一小段时间后 Spring官方在3月31日正式发布了漏洞信息 漏洞编号为CVE 2022 22965 本文章对该漏洞进行了复现和分析 希望能够帮助到有相关有需要的人员进一步研究 1
  • 《热题100》字符串、双指针、贪心算法篇

    思路 对于输入的的字符串 只有三种可能 ipv4 ipv6 和neither ipv4 四位 十进制 无前导0 小于256 ipv6 八位 十六进制 无多余0 00情况不允许 不为空 class Solution def solve sel
  • 区块链扩容系列之Plasma MVP

    以太坊低TPS一直被诟病 最近V神提出一种将以太坊TPS提升到500的方案 一经发表就被BM调侃 可见以太坊低TPS目前确实严重阻碍了以太坊的发展 连V神都不得不经常发声 我们知道以太坊低TPS的一个关键原因是以太坊采用POW 因而将部分交
  • selenium爬虫检测之如何避免对isTrusted属性检测

    如何避免对isTrusted属性检测 检测原理 什么是isTrusted属性 在web api官方网站mozilla org有如下解释 Event接口的 isTrusted 属性是一个只读属性 它是一个布尔值 Boolean 当事件是由用户