者: Peter酱
转发链接:https://mp.weixin.qq.com/s/o-YqWroltD_JISwQJasWZQ
近几年比较流行的一种验证方式就是拖动验证,可以在一定程度上避免过去验证码被破解的尴尬,下面小编就为大家分享一下这个验证方式的js代码
$.fn.drag=function(options){
var x, drag=this, isMove=false, defaults={
};
var options=$.extend(defaults, options);
//添加背景,文字,滑块
var html='<div class="drag_bg"></div>'+
'<div class="drag_text" onselectstart="return false;" unselectable="on">拖动滑块验证</div>'+
'<div class="handler handler_bg"></div>';
this.append(html);
var handler=drag.find('.handler');
var drag_bg=drag.find('.drag_bg');
var text=drag.find('.drag_text');
var maxWidth=drag.width() - handler.width(); //能滑动的最大间距
//鼠标按下时候的x轴的位置
handler.mousedown(function(e){
isMove=true;
x=e.pageX - parseInt(handler.css('left'), 10);
});
//鼠标指针在上下文移动时,移动距离大于0小于最大间距,滑块x轴位置等于鼠标移动距离
$(document).mousemove(function(e){
var _x=e.pageX - x;
if(isMove){
if(_x > 0 && _x <=maxWidth){
handler.css({'left': _x});
drag_bg.css({'width': _x});
}else if(_x > maxWidth){ //鼠标指针移动距离达到最大时清空事件
dragOk();
}
}
}).mouseup(function(e){
isMove=false;
var _x=e.pageX - x;
if(_x < maxWidth){ //鼠标松开时,如果没有达到最大距离位置,滑块就返回初始位置
handler.css({'left': 0});
drag_bg.css({'width': 0});
}
});
handler.ontouchstart(function(e){
isMove=true;
x=e.pageX - parseInt(handler.css('left'), 10);
});
//鼠标指针在上下文移动时,移动距离大于0小于最大间距,滑块x轴位置等于鼠标移动距离
$(document).ontouchmove(function(e){
var _x=e.pageX - x;
if(isMove){
if(_x > 0 && _x <=maxWidth){
handler.css({'left': _x});
drag_bg.css({'width': _x});
}else if(_x > maxWidth){ //鼠标指针移动距离达到最大时清空事件
dragOk();
}
}
}).ontouchend(function(e){
isMove=false;
var _x=e.pageX - x;
if(_x < maxWidth){ //鼠标松开时,如果没有达到最大距离位置,滑块就返回初始位置
handler.css({'left': 0});
drag_bg.css({'width': 0});
}
});
//清空事件
function dragOk(){
handler.removeClass('handler_bg').addClass('handler_ok_bg');
text.text('验证通过');
drag.css({'color': '#fff'});
handler.unbind('mousedown');
$(document).unbind('mousemove');
$(document).unbind('mouseup');
}
};
喜欢就订阅关注我吧,小编不定期分享前端的各种小知识哦
来 源:志斌的python笔记
作 者:志斌
随着时间的推移,技术的进步,字符验证码越来越容易被破解,所以,开发者开发了一种新的反爬虫方式——滑块验证码反爬虫,来限制爬虫程序。
今天来跟大家分享一下如何解决验证码反爬虫中的滑块验证码反爬虫。
一
原理
二
破解
01
观察滑块和轨道的长度
02
模拟滑动
from selenium import webdriver
driver=webdriver.Chrome(r'chromedriver.exe')
url='http://www.porters.vip/captcha/sliders.html#'
driver.get(url)
hover=driver.find_element_by_css_selector('.hover')
from selenium import webdriver
import time
move=webdriver.ActionChains(driver)
move.click_and_hold(hover).perform()
time.sleep(1)
move.move_by_offset(340,0)
time.sleep(1)
move.release().perform()
三
小结
爱数据教育与北京大学出版社联合开展 “ 留言送书 ” 活动,本次为大家选择的书籍为:《人工智能数学基础》
【内容简介】
【作者简介】
唐宇迪,计算机专业博士,网易云课堂人工智能认证行家,51CTO学院讲师,CSDN博客专家。
李琳,河南工业大学副教授,在软件工程、机器学习、人工智能和模式识别等领域有深入研究。
侯惠芳,教授,解放军信息工程大学通信与信息系统专业博士,擅长机器学习、大数据检索、人工智能和模式识别等。
王社伟,河南工业大学副教授,西北工业大学航空宇航制造专业博士,挪威科技大学访问学者,对数字化制造、企业管理系统、机器学习、数据挖掘等有丰富的实战经验。
*请认真填写需求信息,我们会在24小时内与您取得联系。