者: 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小時內與您取得聯系。