利用JS插件识别抖音图片验证的几种方法

#推荐
利用JS插件识别抖音图片验证的几种方法

2026-03-17 2
[!--dianshu--] C币
VIP折扣
    折扣详情
  • 体验VIP会员

    免费

  • 月卡VIP会员

    免费

  • 年卡VIP会员

    免费

  • 永久VIP会员

    免费

查看演示
下载不了?请联系网站客服提交链接错误!
TAG标签: 安装指导

#推荐
利用JS插件识别抖音图片验证的几种方法

2026-03-17 php教程 9999 2
郑重承诺丨总裁主题提供安全交易、信息保真!
TAG标签:
插件
安装指导
[!--dianshu--] C币
VIP权限详情
    会员权限详情
  • 体验VIP会员

    免费

  • 月卡VIP会员

    免费

  • 年卡VIP会员

    免费

  • 永久VIP会员

    免费

开通VIP尊享优惠特权
立即下载 等待添加 升级会员 最新活动
微信扫码咨询 微信扫码咨询

联系电话:18888888888

进入TA的商铺 联系官方客服
详情介绍

欢迎!我白天是个邮递员,晚上就是个有抱负的演员。这是我的网站。我住在天朝的帝都,有条叫做Jack的狗。

经常刷网页版的抖音,但隔一段时间就会出现验证码,有滑块和文字点选。今天尝试开发一个自动完成验证的插件,但遇到了跨域图片不能直接获得base64数据的问题。

准备插件工具:https://pan.baidu.com/s/1IiSvK8DuftEqeaXI9fZIyg?pwd=j1DM+ 提取码:j1dm

工具使用说明:

post方式向http://127.0.0.1:2000提交数据{type:"ocrCode",img:图形base64}      识别文字字母等{type:"detection",img:图形base64}         识别点选文字范围{type:"slide",targetImg:滑块base64,backgroundImg:背景base64}        识别滑块{type:"clickImage",key:"窗口关键字",img:按钮base64}         点击图形按钮{type:"passKey",key:按键}                   模拟键盘按键{type:"activityWindow",window:"要激活的窗口标题关键字",key:按键【可选】}          激活窗口并按键{type:"click"}               点击鼠标{type:"clickPoint",x:X坐标,y:Y坐标}        指定坐标点击鼠标{type:"move",x:X坐标,y:Y坐标}               移动鼠标{type:"moveAndClick",x:X坐标,y:Y坐标}                       移动鼠标到指定坐标再点击{type:"write",text:"要输入的内容"}           模拟键盘输入文字

第一种:通常获取图片数据直接用canvas drawImage简单直接快速。但在部分网站中是禁止使用canvas的,所以我就用第二种:  使用 XMLHttpRequest异步(注意只能异步)读取blob数据转base64。但如果图片是跨域的,第一、二种都会失效第三种(支持跨域): 在浏览器插件的background.js中使用 XMLHttpRequest读取图片然后传给inject_script.js 。也可以用于其它数据的读取。以下代码示例,过抖音验证(文字点选类识别率较低,需要训练模型然后更新到识别程序中才能完善)。

//识别验证码function ocrFormApi(_data) {    var _code = "本地未开启P娃儿猫验证码识别工具的web服务。";    try {        console.log("提交后台识别中...");        $.ajax({            type: "POST",            url: "http://127.0.0.1:2000/",            timeout: 2 * 1000,            async: false,            data: _data,            success: function (data) {                _code = data;            },            error: function (_d) {                _code = "识别错误";            }        });    } catch (e) {     }    return _code;}//滑块操作(滑块元素ID,要滑动的距离)function mockVerify(_imgId, _distance) {    var btn = document.querySelector("#" + _imgId);    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);        console.log("MOVE");        btn.dispatchEvent(mousemove);        if (_x - x >= _distance) {            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);            console.log("END");        }        else {            dx += Math.ceil(Math.random() * 50);         }    }, 60);}//传入图像元素通过canvas转换function getImgBase64(_img) {    var canvas = document.createElement("canvas");    canvas.width = _img.naturalWidth;    canvas.height = _img.naturalHeight;    var ctx = canvas.getContext("2d");    ctx.drawImage(_img, 0, 0);    return canvas.toDataURL("image/png").replace("data:image/png;base64,", "");}//传入图片地址(不能跨域),通过blob转换(只能异步)function getImgBase64ByUrl(_url, _success) {    var xhr = new XMLHttpRequest();    xhr.responseType = "blob";    xhr.open("POST", _url, true);    xhr.onload = function (data, textStatus, request) {// 请求完成处理函数        if (this.status === 200) {            var _blob = this.response;// 获取返回值            let _f = new FileReader();            _f.onload = function (_e) {                console.log(_e.target.result);                _success(_e.target.result);            }            _f.readAsDataURL(_blob);        } else {            console.log(this.status);        }    };    xhr.send();}function checkCodeOut() {    if ($("#captcha-verify-image:visible").length) {        //获取跨域图片数据(把  getImgBase64ByUrl 中的方法放到插件的background中,因为background没有跨域问题)        window.sendMessage({ type: "getDataFromUrl", data: { url: $("#captcha-verify-image:visible").attr("src"), blob: 1, type: "GET" } }, function (_base64) {            var _backgroundImg = _base64.replace("data:image/jpeg;base64,", "");            //点选文字            if ($("#verify-bar-code:visible").length) {                window.sendMessage({ type: "getDataFromUrl", data: { url: $("#verify-bar-code:visible").attr("src"), blob: 1, type: "GET" } }, function (_base64) {                    var _targetImg = _base64.replace("data:image/jpeg;base64,", "");                    //识别出要求点选的文字                    var _data = ocrFormApi({ type: "ocrCode", img: _targetImg });                    //_data = JSON.parse(_data);                    var _txt = _data.code;                    //识别背景图上的文字及对应坐标                    _data = ocrFormApi({ type: "detection", img: _backgroundImg });                    console.log(_data)                    _data = _data.code;                    for (var _i = 0; _i < _txt.length; _i++) {                        if (_data[_txt.charAt(_i)]) {                            console.log("“" + _txt.charAt(_i) + "”字点击范围:", _data[_txt.charAt(_i)])                        } else {                            console.log("“" + _txt.charAt(_i) + "”字范围未能识别成功,请刷新。");                            $(".secsdk_captcha_refresh--text").click();                        }                    }                });            }            //滑块            if ($(".captcha_verify_img_slide:visible").length) {                window.sendMessage({ type: "getDataFromUrl", data: { url: $(".captcha_verify_img_slide:visible").attr("src"), blob: 1, type: "GET" } }, function (_base64) {                    var _targetImg = _base64.replace("data:image/jpeg;base64,", "");                    var _data = ocrFormApi("slide", { type: "slide", targetImg: _targetImg, backgroundImg: _backgroundImg });                    console.log("滑块需要操作的数据:", _data);                    $(".captcha_verify_img_slide:visible").attr("id", "52pj_slide");                    mockVerify("52pj_slide", _data.x);                });            }        });        return;    }    setTimeout(checkCodeOut, 1000);}function init() {    var _l = location.href;    if (_l.indexOf("www.douyin.com") != -1) {        checkCodeOut();        return;    }    return;}if (typeof $ == 'undefined') {    var s = document.createElement("script");    s.onload = init;    s.src = "https://cdn.bootcss.com/jquery/2.1.4/jquery.min.js";    document.getElementsByTagName("HEAD")[0].appendChild(s);} else {    init();}

下载地址
  • 提取密码
  • 1561
  • 解压密码
  • DWQwdewq
    立即免费下载
    利用JS插件识别抖音图片验证的几种方法
收藏 (15) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 ()

所有文章为演示数据,不提供下载地址,版权归原作者所有,仅提供演示效果!

CMS主题网 php教程 利用JS插件识别抖音图片验证的几种方法 /showinfo-48-57-0.html

我们只做高端Wordpress主题开发!

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用
查看详情

相关文章

帝国CMS二次开发 函数文件      PRinterror()/e/class/connect.phpline 132query()/e/class/db_sql.php line 10fetch1()/e/class/db_sql.php line 30fetch()/e/class/db_sql.php line 22checklevel()/e/class/functions.php line 3414insert_dolog()/e/class/functions.php line 3...
#推荐
2026-03-17 14 C币
帝国CMS8.0父子信息调用方      帝国CMS8.0版新增父子信息功能,让一条信息也能成为一个信息、一个栏目、一个专题、甚至一个网站。本文共有四个部分:一、父子信息功能使用流程。二、调用子信息:可以用索引灵动标签调用。三、父子信息列表访问地址的语法说明。四、进阶:调用当前父子信息...
#推荐
2026-03-17 4 C币
帝国CMS判断当前数据库是      有时候我们需要判断数据库是否包含某字段,就可以使用下面这段SQL语法,$fr=$empire-&gt;fetch1(&quot;SELECT COUNT(*) AS column_exists FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = &amp;#39;$infotb&amp;#39; AND COLUMN_NAME = &amp;#39;money&amp;#39;&quot;);if($fr[&amp;...
#推荐
2026-03-17 4 C币
Python开发一个ChatGPT GU      1、首先去下载这个ChatGPT库,用到的库是这个:https://github.com/acheong08/ChatGPT2、安装这个ChatGPT库:pip3 install revChatGPT==0.0.a423、同目录还需要一个“config.json”:{    &quot;session_token&quot;: &quot;&quot;,    &quot;cf_clearance&quot;: &quot;&quot;,    &quot;user_agent&quot;: &quot;
#推荐
2026-03-17 4 C币
使用CSS Grid Generator拖      如果你是CSS小白,不会使用复杂的UI框架,又需要开发一个响应式网站,那么我的站长站推荐你使用CSS Grid Generator,直接拖拽网格,就可以立即生成响应式CSS代码,复制到自己项目即可使用。使用方法1、首先根据你的项目需求,生成指定的列数和网格数量2、然后拖到...
#推荐
2026-03-17 3 C币
Playwright闲鱼智能监控机      项目介绍Playwright闲鱼智能监控机器人项目,基于 Playwright 和AI过滤分析的闲鱼多任务实时监控与智能分析工具,配备了功能完善的 Web 管理界面。可以实时按规则抓取闲鱼商品,垃圾佬的最爱。闲鱼智能监控机器人:https://github.com/dingyufei615/ai-goof...
#推荐
2026-03-17 3 C币
过年给网站加一对灯笼CSS      马上快过年了,给网站加一对红灯笼,这样才有过年的喜庆劲儿。灯笼是代码生成的无需图片,而且还会摆动。使用方法把HTML下面代码粘贴到网页BODY内任意位子都可以。灯笼的位子可以微调.deng-box的left和right数值。CSS代码&lt;!-- 灯笼代码 --&gt;&lt;div class=&quot;de...
#推荐
2026-03-17 3 C币
ajax上传文件进度条功能示      ajax上传文件时,有时比较耗时,需要在界面上显示下进度信息,获取ajaxSettings中的xhr对象,为它的upload属性绑定progress事件的处理函数前端代码&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf8&quot;&gt;&lt;title&gt;test upload&lt;/title&gt;&lt;!--jquery--&gt;&lt;script src=&quot;h...
#推荐
2026-03-17 3 C币