python学习交流公众号 Hello Python上线啦,欢迎关注

一:检测鼠标移动轨迹场景

部分爬虫使用selenium,airtest等,模拟用户点击等操作,以及在滑块验证码等,这时候通过检测鼠标移动轨迹,将可以在一定程度上检测出机器人,并触发反爬措施

二:逻辑与实现方式

基于监听 mousemove 事件,触发,记录鼠标坐标,验证逻辑如下:

  1. 鼠标移动位移不连续
  2. 多次点击相同位置
  3. 点击等操作前 无位移,或位移触发次数少于阈值

三:实践

前端代码示例:从左侧进入,未检测到位移,直接点击,则认为是机器人,使用中将按钮放置div 中间,或检测在body中的移动轨迹。

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>Demo</title><style>* {margin: 0;padding: 0;border: 0;}.stage {}.track-monitor {background-color: orange;}.track-pad {height: 200px;background-color: green;}.track-coordinate {background-color: purple;color: white;height: 25px;line-height: 25px;font-size: 12px;}.track-coordinate-list {font-size: 12px;width: 100%;word-break: break-word;}</style><script>window.addEventListener('load', function () {var pad = document.getElementsByClassName('track-pad')[0];var monitor = document.getElementsByClassName('track-monitor')[0];var coordinate = document.getElementsByClassName('track-coordinate')[0];var clist = document.getElementsByClassName('track-coordinate-list')[0];var reset = document.getElementsByTagName('button')[1];var btn_click11 = document.getElementsByTagName('button')[0];var fixSize = function () {monitor.width = window.innerWidth;};var context = monitor.getContext('2d');var cset = [];window.addEventListener('resize', function () {fixSize();});pad.addEventListener('mousemove', function (e) {context.strokeStyle = 'white';context.lineTo(e.x, e.y);context.stroke();coordinate.innerHTML = e.x + ':' + e.y;cset.push(coordinate.innerHTML);clist.innerHTML = cset.join(',');});reset.addEventListener('click', function () {fixSize();cset = [];clist.innerHTML = '';coordinate.innerHTML = '在绿色的方块中滑动鼠标';});btn_click11.addEventListener('click', function () {if (cset.length < 10){console.log('机器人');alert('机器人')}else {console.log('real people')}fixSize();cset = [];clist.innerHTML = '';coordinate.innerHTML = '在绿色的方块中滑动鼠标';});fixSize();});</script>
</head>
<body>
<div class="stage"><div class="track-pad"><button>点我</button></div><canvas width="100" height="200" class="track-monitor"></canvas><div class="track-coordinate">在绿色的方块中滑动鼠标</div><button>重置</button><div class="track-coordinate-list"></div>
</div>
</body>
</html>

四:问题

  1. mosemove 触发时间粒度问题。
  2. 前端有一些鼠标移动插件,需要具体分析。
  3. 记录大量位移信息,需要做相应处理

反爬虫三:检测鼠标移动轨迹相关推荐

  1. 浏览器端反爬虫特征收集之字体检测

    1 背景介绍 现今的反爬虫系统主要思路是通过收集访问者的设备特征和行为,并在后台进行行为与特征分析识别出异常流量,达到反爬虫的目的. 这些特征中字体也是一项重要的采集项.即收集一款浏览器当前有多少可用 ...

  2. 爬虫与反爬虫技术分析

    科普: 什么是爬虫: 百度百科:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还 ...

  3. python3反爬虫原理与绕过实战 网盘_Python 3反爬虫原理与绕过实战

    第 1章 开发环境配置 1 1.1 操作系统的选择 1 1.1.1 Ubuntu 简介 1 1.1.2 VirtualBox 的安装 2 1.1.3 安装 Ubuntu 3 1.1.4 全屏设置 8 ...

  4. 爬虫需谨慎!那些你不知道的爬虫反爬虫套路,学起来!

    目录 前言 一.爬虫反爬虫运行现状 1.真实世界的爬虫比例 2.哭笑不得的决策思路 二.爬虫反爬虫技术现状 1.为python平反 2.无法绕开的误伤率 3.前端工程师的逆袭 4.误伤,还是误伤 三. ...

  5. 【过于硬核慎入】这是我遇到过的最强反爬虫(反反爬虫教程)

    https://www.passkou.com/ 阅读本文前 在阅读本文前,你需要具有以下所有知识,否则你无法读懂: HTML + JS 基础 HTTP 基本知识 简单的密码学知识(MD5.AES) ...

  6. 那些你不知道的爬虫反爬虫套路

    转自:https://zhuanlan.zhihu.com/p/27299841?columnSlug=ctriptech 前言 爬虫与反爬虫,是一个很不阳光的行业. 这里说的不阳光,有两个含义. 第 ...

  7. 爬虫与反爬虫技术简介

    vivo 互联网安全团队- Xie Peng 互联网的大数据时代的来临,网络爬虫也成了互联网中一个重要行业,它是一种自动获取网页数据信息的爬虫程序,是网站搜索引擎的重要组成部分.通过爬虫,可以获取自己 ...

  8. html中::before 爬虫_反反爬虫系列(四)

    过完年,好了,咱们接着更新反反爬虫系列 至于之前有朋友表示出一下1688呀,x宝的反反爬虫 说实在的,阿里系的反爬虫很厉害,我自愧不能搞定. 比如x宝的登录,用了selenium + chrome的朋 ...

  9. 关于反爬虫,看这一篇就够了

    编者:本文来自携程酒店研发部研发经理崔广宇在第三期[携程技术微分享]上的分享,以下为整理的内容概要.墙裂建议点击视频回放,"现场"围观段子手攻城狮大崔,如何高智商&高情商地 ...

最新文章

  1. 2019牛客网暑假多校训练第四场 K —number
  2. Html 教程 (8)表单
  3. java虚拟机的俩种异常
  4. mybatis plus 事务管理器_SpringBoot第七篇:springboot开启声明式事务
  5. linux 2.6内核进程调度,Linux2.6内核进程调度系列--scheduler_tick()函数2.更新实时进程的时间片,...
  6. 【语音处理】基于matlab GUI音频信号提取分析【含Matlab源码 1738期】
  7. LPDIRECTDRAW7编译错误的解决方法
  8. 【MATLAB】基本绘图函数(涵盖所有基本绘图指令)
  9. 流程图里的形状符号的代表意义
  10. C++编程 杨辉三角
  11. 如何破“万事开头难”?试试这三招
  12. eLife:情绪学习对人脑记忆整合的回溯性促进机制
  13. 计算机英语boot,电脑开不了机显示英文boottmgr
  14. JVM G1GC参数配置
  15. 清明节主题PPT模板
  16. 关于安卓自定义进度条(二)
  17. google 广告条代码
  18. 2019 Java程序员(方向)
  19. 数字图像处理中对数变换与Gamma变换
  20. 短视频微信小程序界面

热门文章

  1. 室友吃个泡面的时间,我用十几行Python代码下载了几千张手机壁纸
  2. Java一瓶可乐_Java实现可乐瓶问题
  3. 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐
  4. 数学分析(5): 导数
  5. 进程内存空间五种 数据区
  6. 短期逆风造成了小鹏汽车的股价持续暴跌和错误定价
  7. pytest—pytest.mark.parametrize的使用
  8. 分布式内存数据技术为查询提速
  9. 《大数据系统基础》课程实践项目中期答辩顺利举行,清华持续探索大数据人才教育创新之路...
  10. 云桌面与云盘如何集成?用什么方案集成?