微信投票群

首页

当前位置:首页 > 微信投票

 微信刷票验证码识别的基本思路和方法

当前栏目:微信投票|更新时间:2019-05-07 16:14:28|浏览:0

微信刷票验证码识别基本思路和方法:投票软件相比验证码识别的技术内容。为了防止作弊,许多投票网站将添加随机验证码并在投票前输入验证码。但是,验证码是否添加将是万无一失的,并不完全正确。虽然并非所有的验证码都能被识别(例如QQ的变形中文字符验证码不太可能被软件个人识别),但仍有许多验证码可以通过软件识别。

我们以天涯博客中的评论验证码为例,说明验证码识别的基本思想和方法:

(网页截图)

第一步,获取验证码图片
C#可以使用HttpWebRequest类GET验证代码的URL来获取返回的数据流,然后将数据流值分配给Bitmap变量。将PictureBox控件放在Winform中,并将其Image属性指定为Bitmap变量以显示验证码图像。
您还可以使用Bitmap的Save方法将图像保存为Bmp文件。
Stream resStream=response.GetResponseStream(); //获取验证码数据流
位图sourcebm=新位图(resStream); //初始化位图图像WWW./免费通用网络自动选民
在Photoshop中将验证码图像放大1600%,如下所示:


第二步是对验证码图像进行脱色(将颜色转换为灰度)
颜色去除是为了进一步制作黑白双色图片。
颜色c=sourcebm.GetPixel(x,y);
int luma=(int)(c.R * 0.3 + c.G * 0.59 + c.B * 0.11); //用于转换灰度的算法
sourcebm.SetPixel(x,y,Color.FromArgb(luma,luma,luma)); www.免费通用网络自动选民


第三步,去除噪音,转换成黑白图片
从灰度图像可以看出,数字的颜色较暗,而杂色的颜色相对较浅,因此您可以设置临界颜色值。高于或等于此值的颜色设置为白色,低于此值的设置。它是黑色的。
颜色c=sourcebm.GetPixel(x,y);
if(c.Rgt;=critical_value)WWW.免费通用网络自动选民
sourcebm.SetPixel(x,y,Color.FromArgb(255,255,255));
否则
sourcebm.SetPixel(x,y,Color.FromArgb(0,0,0));


第四步是动态获取每个数字的边界


For(int x=0; xlt; sourcebm.Width; x ++)
{ myColumn=true;
for(int y=0; ylt; sourcebm.Height; y ++)
{ 颜色c=sourcebm.GetPixel(x,y); www.免费通用网络自动选民
如果(c.R==0 charStart==false),则为第一个黑点
{ widthStartX [charNum]=x;
charStart=true;
break;
}
if(c.R==0 charStart==true)//后续黑点
{ myColumn=false;
break; WWW.免费通用网络自动选民
}
}
if(myColumn==true charStart==true widthStartX [charNum]lt; x)//如果列中没有黑点,并且在结束之前没有黑点
{ widthEndX [charNum]=x - 1;
charStart=false;
charNum ++;
}
if(charStart==true myColumn==false x==(bmp.Width - 1))//如果黑点开始出现,最后一列也有黑点
{ widthEndX [charNum]=x;
charStart=false; www.免费通用网络自动选民
charNum ++;
}
}

五,获取每个角色的特征码
在每个字符的边界内,检测每个像素,如果像素为白色,则为“0”,如果像素为黑色,则为“1”,如果“0”为“1”,则为数字或者角色。签名。
颜色c=sourcebm.GetPixel(x,y);
NBSP如果(CR==0)
NBSPNBSPNBSP STR=STR + QUOT; 1英寸; www.免通用网络自动选民
NBSP别的
NBSPNBSPNBSP海峡=海峡+ QUOT; 0英寸;

第六,完成验证码图像保存所获得的与保存的特征相比签名和对应的数字或字符,然后将新获取的签名代码,如果它们相同,则提取相应的数字或字符以完成验证代码的识别。

微信刷票验证码识别的基本思路和方法

微信刷票验证码识别基本思路和方法:投票软件相比验证码识别的技术内容。为了防止作弊,许多投票网站将添加随机验证码并在投票前输入验证码。但是,验证码是否添加将是万无一失的,并不完全正确。虽然并非所有的验证码都能被识别(例如QQ的变形中文字符验证码不太可能被软件个人识别),但仍有许多验证码可以通过软件识别。

我们以天涯博客中的评论验证码为例,说明验证码识别的基本思想和方法:

(网页截图)

第一步,获取验证码图片
C#可以使用HttpWebRequest类GET验证代码的URL来获取返回的数据流,然后将数据流值分配给Bitmap变量。将PictureBox控件放在Winform中,并将其Image属性指定为Bitmap变量以显示验证码图像。
您还可以使用Bitmap的Save方法将图像保存为Bmp文件。
Stream resStream=response.GetResponseStream(); //获取验证码数据流
位图sourcebm=新位图(resStream); //初始化位图图像WWW./免费通用网络自动选民
在Photoshop中将验证码图像放大1600%,如下所示:


第二步是对验证码图像进行脱色(将颜色转换为灰度)
颜色去除是为了进一步制作黑白双色图片。
颜色c=sourcebm.GetPixel(x,y);
int luma=(int)(c.R * 0.3 + c.G * 0.59 + c.B * 0.11); //用于转换灰度的算法
sourcebm.SetPixel(x,y,Color.FromArgb(luma,luma,luma)); www.免费通用网络自动选民


第三步,去除噪音,转换成黑白图片
从灰度图像可以看出,数字的颜色较暗,而杂色的颜色相对较浅,因此您可以设置临界颜色值。高于或等于此值的颜色设置为白色,低于此值的设置。它是黑色的。
颜色c=sourcebm.GetPixel(x,y);
if(c.Rgt;=critical_value)WWW.免费通用网络自动选民
sourcebm.SetPixel(x,y,Color.FromArgb(255,255,255));
否则
sourcebm.SetPixel(x,y,Color.FromArgb(0,0,0));


第四步是动态获取每个数字的边界


For(int x=0; xlt; sourcebm.Width; x ++)
{ myColumn=true;
for(int y=0; ylt; sourcebm.Height; y ++)
{ 颜色c=sourcebm.GetPixel(x,y); www.免费通用网络自动选民
如果(c.R==0 charStart==false),则为第一个黑点
{ widthStartX [charNum]=x;
charStart=true;
break;
}
if(c.R==0 charStart==true)//后续黑点
{ myColumn=false;
break; WWW.免费通用网络自动选民
}
}
if(myColumn==true charStart==true widthStartX [charNum]lt; x)//如果列中没有黑点,并且在结束之前没有黑点
{ widthEndX [charNum]=x - 1;
charStart=false;
charNum ++;
}
if(charStart==true myColumn==false x==(bmp.Width - 1))//如果黑点开始出现,最后一列也有黑点
{ widthEndX [charNum]=x;
charStart=false; www.免费通用网络自动选民
charNum ++;
}
}

五,获取每个角色的特征码
在每个字符的边界内,检测每个像素,如果像素为白色,则为“0”,如果像素为黑色,则为“1”,如果“0”为“1”,则为数字或者角色。签名。
颜色c=sourcebm.GetPixel(x,y);
NBSP如果(CR==0)
NBSPNBSPNBSP STR=STR + QUOT; 1英寸; www.免通用网络自动选民
NBSP别的
NBSPNBSPNBSP海峡=海峡+ QUOT; 0英寸;

第六,完成验证码图像保存所获得的与保存的特征相比签名和对应的数字或字符,然后将新获取的签名代码,如果它们相同,则提取相应的数字或字符以完成验证代码的识别。

网站友情链接: