首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

最新验证码识别模拟登陆B站

「本文目录」

1 分析登录界面结构

2 使用selenium打开登录页面

3 获取页面当前验证码图片

4 使用超级鹰识别验证码

5 对获取的坐标数据进行提取,并用动作链完成点击

1 分析登录界面结构

首先明确我们的目标,打开登陆界面,定位用户名和密码对应的标签,输入相关数据后,点击登录,此时页面会弹出验证码。

下面用两种方法进行验证码的获取,然后提交给「超级鹰」进行识别,接收到汉字的坐标后,处理数据,然后用动作链进行点击操作,最后定位点击确认,登陆成功。

2 使用selenium打开登录页面

「代码实现:」

3 获取页面当前验证码图片

3.1 方法一:页面截图,将验证码区域进行裁剪保存

使用此方法时,注意我们截取验证码图片时需要截取完整,完整验证码截图如下:

首先做的当然是将点击登录后的页面进行截图,然后定位到验证码的位置,通过location()方法获取验证码左上角的坐标,size()获取验证码的宽和高,左上角坐标加上宽和高就是验证码右下角的坐标。获取坐标后就可以用crop()方法来进行裁剪,然后将裁剪到的验证码图片保存。

此时虽然获取了验证码图片,但是还不能直接提交给超级鹰。

因为超级鹰识别的验证码图片的宽和高有限制,最好不超过460px*310px

但是截取到的验证码图片宽高为338px*432px,这时就要先将图片缩小一倍再提交即可,等到收到坐标数据再将坐标乘2

「代码实现:」

3.2方法二、通过网页获取图片地址,并保存

这种方法比上一种更加方便,分析网页源码获取图片地址,对该地址发送请求,接收返回的二进制文件,进行保存。首先打开网页源码找到图片地址。

图片地址是img标签的src属性值,通过xpath得到地址,直接对此url发送请求,接收数据并保存即可。

「注意:」由于获取的图片的高度仍然大于超级鹰标准格式,所以也需要将图片缩小。

「代码实现:」

4 使用超级鹰识别验证码

这部分没什么说的,直接调用就行。

「代码如下:」

5 对获取的坐标数据进行提取,并用动作链完成点击

超级鹰识别返回的数据格式是:123,12 | 234,21。

我们可以将数据以' | '进行分割,保存到列表中,再以逗号分割将x,y的坐标保存,得到[ [123,12],[234,21] ]这一格式,然后遍历这一列表,使用动作链对每一个列表元素对应的x,y指定的位置进行点击操作,最后定位并点击确认,登录成功。

「代码实现:」

更多阅读

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210130A01OXQ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券