验证码的识别

验证码是一种反爬虫的措施,目前的验证码主要有图像验证码、极验滑动验证码、点触验证码、微博宫格验证码等。根据不同类型的验证码,有以下识别的方法。

图像验证码

利用OCR字符识别技术来实现,需要安装tesserocr库进行识别。因为验证码图片的背景有些多余的线条、颜色会干扰识别效果,因此可以在识别前对图片进行二值化处理或灰度处理

极验滑动验证码

它通过拖动滑块来拼合图像进而实现验证。识别的主要思路:利用selenium来模拟点击验证按钮,获取包含缺口的图片,将原图与其对比,识别出缺口位置,模拟拖动。模拟拖动时需要注意,不能匀速,因为人无法做到匀速拖动,因此会导致识别识别。比较好的办法就是,模拟加速和减速运动来进行拖动。前段先加速后段在减速。

点触验证码的识别

这种验证码主要有两种,一种是点击图中所以符合要求的图片,二是按照顺序点击指定的文字。对于这种验证码,可以利用第三方平台来实现识别,比如超级鹰。具体思路将验证码的图片传入到第三方平台上,然后根据第三方平台范围的坐标位置,进行依次点击。

微博宫格验证码的识别

这种验证码的宫格之间会有一条指示连线,指示了用户需要滑动的轨迹。如果要识别这种验证码,就需要识别箭头的指示方向,因此需要首先找到所有箭头的位置,然后计算像素点的变化规律。这个方法比较麻烦。对于这种验证码可以采用另一种思路:模板匹配,即首先将所有可能出现的验证码图片收集下来,这样每个图片的滑动顺序已知,构成一个模板库。在每一次识别时,将原图与模板库中的图片进行匹配即可。

你可能感兴趣的:(验证码的识别)