js 模拟鼠标拖动

复制代码
window.addEventListener('message', function (event) {
  if (event.source != window) return;

  if (event.data.event_type && (event.data.event_type == "mockVerify")) {
    mockVerify();
  }
})



function mockVerify(){
    console.log("mockVerify");

    var btn=document.getElementById("nc_1_n1z");
    var mousedown = document.createEvent("MouseEvents");
    var rect = btn.getBoundingClientRect();
    var x = rect.x;
    var y = rect.y;
    mousedown.initMouseEvent("mousedown",true,true,window,0,  
            x, y, x, y,false,false,false,false,0,null);
    btn.dispatchEvent(mousedown);
    
    var dx = 0;
    var dy = 0;
    var  interval = setInterval(function(){
        var mousemove = document.createEvent("MouseEvents");
        var _x = x + dx;
        var _y = y + dy;
        mousemove.initMouseEvent("mousemove",true,true,window,0,  
                _x, _y, _x, _y,false,false,false,false,0,null);
        btn.dispatchEvent(mousemove);
        
        btn.dispatchEvent(mousemove);
        if(_x - x >= 300){
            clearInterval(interval);
            var mouseup = document.createEvent("MouseEvents");
            mouseup.initMouseEvent("mouseup",true,true,window,0,  
            _x, _y, _x, _y,false,false,false,false,0,null);
            btn.dispatchEvent(mouseup);
            
            setTimeout(function(){
                if(btn.className.indexOf('btn_ok') > -1){
                    console.log(btn.className);
                    document.getElementById("verify").click();
                    
                }
            }, 1000);
        }
        else{
            dx += Math.ceil(Math.random() * 50);
            console.log(dx);
        }
    }, 30);
    
    
}
复制代码

 

 

滑块验证

复制代码
function mockVerify(btnSelector){
    var btn=document.querySelector(".nc_iconfont.btn_slide");
    var mousedown = document.createEvent('MouseEvents');
    var rect = btn.getBoundingClientRect();
    var x = rect.x;
    var y = rect.y;
    mousedown.initMouseEvent('mousedown',true,true,window,0,  
            x, y, x, y,false,false,false,false,0,null);
    btn.dispatchEvent(mousedown);
    
    var dx = 0;
    var dy = 0;
    var  interval = setInterval(function(){
        var mousemove = document.createEvent('MouseEvents');
        var _x = x + dx;
        var _y = y + dy;
        mousemove.initMouseEvent('mousemove',true,true,window,0,  
                _x, _y, _x, _y,false,false,false,false,0,null);
        btn.dispatchEvent(mousemove);
        
        btn.dispatchEvent(mousemove);
        if(_x - x >= 308){
            clearInterval(interval);
            var mouseup = document.createEvent('MouseEvents');
            mouseup.initMouseEvent('mouseup',true,true,window,0,  
            _x, _y, _x, _y,false,false,false,false,0,null);
            btn.dispatchEvent(mouseup);
            var reloadTimeout = setTimeout(function(){
                location.reload();
            }, 6000);
            var retries = 10;
            var checkInterval = setInterval(function(){
                console.log(btn.className)
                if(btn.className.indexOf('btn_ok') > -1){
                    console.log("btn_ok");
                    clearInterval(checkInterval);
                    document.querySelector(btnSelector).click();
                }
                else if(retries -- == 0){
                    console.log("btn_error")
                    clearInterval(checkInterval);
                }
            }, 500);
        }
        else{
            dx += Math.ceil(Math.random() * 50);
            
        }
    }, 60); 
}
复制代码

 

posted @   rubekid  阅读(3533)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示