旋转图片验证码防御能力到底有多高、人机校验现巨大漏洞?旋转图片验证码(识别/破解)解决(一)
旋转图片验证码,一个为防止爬虫攻击的行为验证产品。小红书的旋转验证码图库非常庞大,而且每个月更新图库,使破解和模型增加了难度。
这些产品有很多共同点,它们的目标都是为了防止爬虫攻击,防止一些恶意的程序来爬取网站数据,或者恶意注册等等,它们都统称为人机校验程序。
那么问题来了,旋转图片验证码到底如何破解呢?
第一步,我们先采集小红书的验证码图片
代码如图
使用的是autojs的代码,如果有不懂的可以联系我:mkk2328
function 截图保存验证码(){
requestScreenCapture()
tutu_flag = 0
yzm = 0
相同个数 = 0
if(files.createWithDirs("/sdcard/缓存/验证码信息.txt")){
files.write("/sdcard/缓存/验证码信息.txt", "");
}
if(files.createWithDirs("/sdcard/缓存图片/验证码信息.txt")){
files.write("/sdcard/缓存图片/验证码信息.txt", "");
}
while(1){
var confirm = text("刷新").visibleToUser(true).findOne(100);
if (confirm) {
print("====点击刷新=====")
click(confirm.bounds().centerX(), confirm.bounds().centerY());
sleep(2000)
}
while(1){
var confirm = text("加载中").visibleToUser(true).findOne(50);
if (confirm) {
print("在加载中")
sleep(3000)
}else{
sleep(2000)
break
}
sleep(1000)
}
var confirm = textContains("当前网络不佳").visibleToUser(true).findOne(50);
if (confirm) {
click(confirm.bounds().centerX(), confirm.bounds().centerY());
sleep(2000)
}
var img = captureScreen();
var aa = images.clip(img, 275,694,528,525)
// var aa = images.clip(img, 276,690,530,531)
sleep(1000)
var stop = textContains("center_").findOne(1000)
if (stop != null) {
print("中心id = " + stop.text())
var arr = files.listDir("/sdcard/缓存图片/");
log(arr.length);
for (let index = 0; index < arr.length; index++) {
if(stop.text() == arr[index].split(".")[0]){
print("有重复图片,不保存")
tutu_flag = 1
相同个数 = 相同个数 + 1
break
}
}
print("开始保存图片")
images.saveImage(aa, "/sdcard/缓存图片/"+ stop.text() + ".png");
if(tutu_flag == 0){
files.append("/sdcard/缓存/验证码信息.txt", stop.text() + "----0----0" );
}
yzm = yzm + 1
print("验证码个数 = " + yzm + ",相同个数 = " + 相同个数)
tutu_flag = 0
}
print("结束")
}
}
第二步,开始对验证码进行训练,手动对每个验证码进行角度记录
第三步,开始推算出每个验证码的区别和相似度
这个明天开始写,今天开始休息。