爬虫:通过滑动或者点触验证码的方法及实现(点触+滑动)

本文详细介绍了极验验证码(geetest)的三种模式:点击直接通过、滑动验证码和点触验证码,并提供了使用Python的selenium模块进行自动化验证的分析和实现方法,包括如何判断验证成功、识别滑动和点触验证码等。
摘要由CSDN通过智能技术生成

一、极验验证码(geetest)的三种验证模式

以极验官网登录(https://auth.geetest.com/login/)为例:

 

 在点击 “点击按钮进行验证”按钮后,会出现三种情况

1.点击直接通过

在一段时间的前几次登录时,点击按钮,会直接通过验证:

 

 

2.点击出现滑动验证码

登录几次后,再次登录时,就会出现滑动验证码:

 

 3.点击出现点触验证码:

登录过多时,就会出现点触验证码,这也是极验最难的一种验证码:

 

 

 二、分析

利用Python的selenium模块进行自动登录。

1.判断是否通过验证:

有一个类名为geetest_success_radar_tip的div标签,在加载后内容为空,验证成功后,内容变为“验证成功”,可以通过其内容来判断,是否验证成功。

 
 


下面是我截取的自己写的一段代码,主要是表达出含义,没有截取所有代码,理解就好:
    
self.success = self.browser.find_element_by_css_selector('.geetest_success_radar_tip') # 获取显示结果的标签 def is_success(self): time.sleep(1) if self.success.text == "验证成功": return True else: return False
 
 

 

 
 

 

 
 

 2.点击直接通过

在点击“点击验证按钮”后,对是否验证成功进行一次判断,如果验证通过,则可以进行下一步动作。

3.滑动验证

滑动验证的标签是canvas,类名是geetest_canvas_slice,在点击“点击验证”后,如果是滑动验证,这个标签将会被加载,如果不是,则这个标签不会被加载。

所以可以通过查看是否存在这个标签,来判断验证是否是滑动验证:

    def is_slide(self):
        time.sleep(1)
        try:
            slie_img = self.browser.find_element_by_css_selector('canvas.geetest_canvas_slice')
            if slie_img:
                return slie_img
        except NoSuchElementException:
            return False

 

如果是滑动验证,则可以通过比对有缺口图片和原图片,从而确定缺口的位置,然后模拟滑动滑块,从而达到验证的目的。具体操作,我在上一篇随笔中已经写过,请参考:
https://www.cnblogs.com/ohahastudy/p/11493971.html
 
 

4.点触验证

和滑动验证类似,点触验证可以通过判断是否存在类名为geetest_item_img的img标签来判断该验证为点触验证。

 

 

 

    def is_pick(self):
        try:
            pick_img = self.browser.find_element_by_css_selector('img.geetest_item_img')
            return pick_img
        except NoSuchElementException:
            return False

 


保存该图片后,我们可以发现,该图片实际上是由两部分组成:

 

 
 

 图片中验证码的识别,我是通过超级鹰这个平台来识别的。按照超级鹰的文档,将图片发过去,并指明类型,在几秒之后会返回一个结果,内容含有需要识别模块的坐标,而其顺序也是按照上图中白色部分指定的顺序,可以说是非常贴心了。

获取坐标后,将坐标提取出来,然后通过模拟点击即可。

三、具体实现:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from PIL import Image
from six import B
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值