精华内容
下载资源
问答
  • 主要给大家介绍了关于python验证码识别教程之利用滴水算法分割图片的相关资料,文章中通过示例代码介绍的非常详细,对大家的学习或者具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 上篇文章记录了2种分割验证码的方法,此外还有一种叫做”滴水算法”(Drop Fall Algorithm)的方法,但本人智商原因看这个算法看的云里雾里的,所以今天记录滑动验证码的处理吧。网上据说有大神已经破解了滑动验证码的...
  • 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域…… 简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算...

    转自: https://my.oschina.net/jhao104/blog/647326

    一、探讨 

        识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域……
        简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。计算机涉及到的几何图形处理一般有 2维到n维图形处理,边界区分,面积计算,体积计算,扭曲变形校正。对于颜色则有色彩空间的计算与转换,图形上色,阴影,色差处理等等。

        在破解验证码中需要用到的知识一般是 像素,线,面等基本2维图形元素的处理和色差分析。常见工具为:
        •支持向量机(SVM)
        •OpenCV
        •图像处理软件(Photoshop,Gimp…)
        •Python Image Library

    二、PIL安装

        PIL: Python Imaging Library, 是Python平台的图像处理标准库,功能非常强大。

        在Debian/Ubantu Linux下直接通过apt安装:

    $ sudo apt-get install python-imaging

        Max和其他版本的Linux可以直接使用easy_install或pip安装,安装前需要把编译环境装好:

    $ sudo easy_install PIL

        Windos平台可以直接去PIL官网下载exe安装包。http://pythonware.com/products/pil/

        注:官网提供的安装包是32位的,63位系统请前往这里 http://www.lfd.uci.edu/~gohlke/pythonlibs/#pillow 下载替代包pillow。

    三、一般思路

        验证码识别的一般思路为:

     

        1、图片降噪

        2、图片切割

        3、图像文本输出

    3.1 图片降噪

        所谓降噪就是把不需要的信息通通去除,比如背景,干扰线,干扰像素等等,只剩下需要识别的文字,让图片变成2进制点阵最好。

        对于彩色背景的验证码:每个像素都可以放在一个5维的空间里,这5个维度分别是,X,Y,R,G,B,也就是像素的坐标和颜色,在计算机图形学中,有很多种色彩空间,最常用的比如RGB,印刷用的CYMK,还有比较少见的HSL或者HSV,每种色彩空间的维度都不一样,但是可以通过公式互相转换。在RGB空间中不好区分颜色,可以把色彩空间转换为HSV或HSL。色彩空间参见 http://baike.baidu.com/view/3427413.htm 

        验证码图片7039.jpg:

        1、导入Image包,打开图片:

    from PIL import Image
    im = Image.open('7039.jpg')

        2、把彩色图像转化为灰度图像。RBG转化到HSI彩色空间,采用I分量:

    imgry = im.convert('L')
    imgry.show()

        灰度看起来是这样的:

        3、二值化处理

        二值化是图像分割的一种常用方法。在二值化图象的时候把大于某个临界灰度值的像素灰度设为灰度极大值,把小于这个值的像素灰度设为灰度极小值,从而实现二值化(一般设置为0-1)。根据阈值选取的不同,二值化的算法分为固定阈值和自适应阈值,这里选用比较简单的固定阈值。

    把像素点大于阈值的设置,1,小于阈值的设置为0。生成一张查找表,再调用point()进行映射。

    threshold = 140
    table = []
    for i in range(256):
        if i < threshold:
            table.append(0)
        else:
            table.append(1)
    out = imgry.point(table, '1')
    out.show()

        处理结果看起来是这样的:

    3.2 图片切割

        识别验证码的重点和难点就在于能否成功分割字符,对于颜色相同又完全粘连的字符,比如google的验证码,目前是没法做到5%以上的识别率的。不过google的验证码基本上人类也只有30%的识别率。本文使用的验证码例子比较容易识别。可以不用切割,有关图片切割的方法参见这篇博客:http://www.cnblogs.com/apexchu/p/4231041.html

     

    四、利用pytesser模块实现识别

     

      pytesser是谷歌OCR开源项目的一个模块,在python中导入这个模块即可将图片中的文字转换成文本。

    链接:https://code.google.com/p/pytesser/ 

    pytesser 调用了 tesseract。在python中调用pytesser模块,pytesser又用tesseract识别图片中的文字。

     

    4.1 pytesser安装

        1、如果没有安装PIL,请到这里下载安装:http://www.pythonware.com/products/pil/ 

        2、安装pytesser,下载地址:http://code.google.com/p/pytesser/ ,下载后直接将其解压到项目代码下,或者解压到python安装目录的Lib\site-packages\下,并将其添加到path环境变量中,不然在导入模块时会出错。

        3、下载Tesseract OCR engine:http://code.google.com/p/tesseract-ocr/  ,下载后解压,找到tessdata文件夹,用其替换掉pytesser解压后的tessdata文件夹即可。

        4、另外如果现在都是从PIL库中运入Image,没有使用Image模块,所以需要把pytesser.py中的import Image改为from PIL import Image, 其次还需要在pytesser文件夹中新建一个__init__.py的空文件。

        ps:如果觉得后面两步比较麻烦,可以直接到云盘中下载    http://yun.baidu.com/s/1jHJvNiI ,操作如步骤2。

     

    4.2 调用pytesser识别

        pytesser提供了两种识别图片方法,通过image对象和图片地址,代码判断如下:

    from PIL import Image
    from pytesser import pytesser
    image = Image.open('7039.jpg')
    print pytesser.image_file_to_string('7039.jpg')
    print pytesser.image_to_string(image)

    同时pytesser还支持其他语言的识别,比如中文。具体参见:http://www.tuicool.com/articles/amQJR3 

    展开全文
  • 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域…… 简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算...

    image

    一、探讨

    识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域……

    简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。计算机涉及到的几何图形处理一般有 2维到n维图形处理,边界区分,面积计算,体积计算,扭曲变形校正。对于颜色则有色彩空间的计算与转换,图形上色,阴影,色差处理等等。

    在破解验证码中需要用到的知识一般是 像素,线,面等基本2维图形元素的处理和色差分析。常见工具为:

    支持向量机(SVM)

    OpenCV

    图像处理软件(Photoshop,Gimp…)

    Python Image Library

    推荐下我自己创建的**Python学习交流群1055012877 **,这是Python学习交流的地方,不管你是小白还是大牛,小编都欢迎,不定期分享干货,包括我整理的一份适合零基础学习Python的资料和入门教程。

    二、PIL安装

    PIL: Python Imaging Library, 是Python平台的图像处理标准库,功能非常强大。

    在Debian/Ubantu Linux下直接通过apt安装:

    $sudo apt-get install python-imaging

    Max和其他版本的Linux可以直接使用easy_install或pip安装,安装前需要把编译环境装好:

    $ sudo easy_install PIL

    Windos平台可以直接去PIL官网下载exe安装包。http://pythonware.com/products/pil/

    注:官网提供的安装包是32位的,63位系统请前往这里http://www.lfd.uci.edu/~gohlke/pythonlibs/#pillow下载替代包pillow。

    三、一般思路

    验证码识别的一般思路为:

    1、图片降噪

    2、图片切割

    3、图像文本输出

    3.1 图片降噪

    所谓降噪就是把不需要的信息通通去除,比如背景,干扰线,干扰像素等等,只剩下需要识别的文字,让图片变成2进制点阵最好。

    对于彩色背景的验证码:每个像素都可以放在一个5维的空间里,这5个维度分别是,X,Y,R,G,B,也就是像素的坐标和颜色,在计算机图形学中,有很多种色彩空间,最常用的比如RGB,印刷用的CYMK,还有比较少见的HSL或者HSV,每种色彩空间的维度都不一样,但是可以通过公式互相转换。在RGB空间中不好区分颜色,可以把色彩空间转换为HSV或HSL。

    验证码图片7039.jpg:

    1、导入Image包,打开图片:

    fromPIL importImage

    im =Image.open(‘7039.jpg’)

    2、把彩色图像转化为灰度图像。RBG转化到HSI彩色空间,采用I分量:

    imgry =im.convert(‘L’)

    imgry.show()

    灰度看起来是这样的:

    3、二值化处理

    二值化是图像分割的一种常用方法。在二值化图象的时候把大于某个临界灰度值的像素灰度设为灰度极大值,把小于这个值的像素灰度设为灰度极小值,从而实现二值化(一般设置为0-1)。根据阈值选取的不同,二值化的算法分为固定阈值和自适应阈值,这里选用比较简单的固定阈值。

    把像素点大于阈值的设置,1,小于阈值的设置为0。生成一张查找表,再调用point()进行映射。

    image

    处理结果看起来是这样的:

    3.2 图片切割

    识别验证码的重点和难点就在于能否成功分割字符,对于颜色相同又完全粘连的字符,比如google的验证码,目前是没法做到5%以上的识别率的。不过google的验证码基本上人类也只有30%的识别率。本文使用的验证码例子比较容易识别。

    四、利用pytesser模块实现识别

    pytesser是谷歌OCR开源项目的一个模块,在python中导入这个模块即可将图片中的文字转换成文本。

    pytesser 调用了 tesseract。在python中调用pytesser模块,pytesser又用tesseract识别图片中的文字。

    4.1 pytesser安装

    如果没有安装PIL,请到这里下载安装:http://www.pythonware.com/products/pil/

    安装pytesser,下载地址:http://code.google.com/p/pytesser/ ,下载后直接将其解压到项目代码下,或者解压到python安装目录的Libsite-packages下,并将其添加到path环境变量中,不然在导入模块时会出错。

    下载Tesseract OCR engine:http://code.google.com/p/tesseract-ocr/ ,下载后解压,找到tessdata文件夹,用其替换掉pytesser解压后的tessdata文件夹即可。

    另外如果现在都是从PIL库中运入Image,没有使用Image模块,所以需要把pytesser.py中的import Image改为from PIL import Image, 其次还需要在pytesser文件夹中新建一个__init__.py的空文件。

    ps:如果觉得后面两步比较麻烦,可以直接到云盘中下载 http://yun.baidu.com/s/1jHJvNiI ,操作如步骤2。

    4.2 调用pytesser识别

    pytesser提供了两种识别图片方法,通过image对象和图片地址,代码判断如下:

    image

    如果真的遇到好的同事,那算你走运,加油,抓紧学到手。
    python资源分享企鹅圈:1055012877
    包含python,爬虫等人工智能软件,以及网络安全、数据挖掘、python web等python技巧的制作方法。
    打造从零基础到项目开发上手实战全方位解析!

    点击加入

    展开全文
  • 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域…… 简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的...

    一、探讨

     

    识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域……

     

    简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。计算机涉及到的几何图形处理一般有 2维到n维图形处理,边界区分,面积计算,体积计算,扭曲变形校正。对于颜色则有色彩空间的计算与转换,图形上色,阴影,色差处理等等。

     

    在破解验证码中需要用到的知识一般是 像素,线,面等基本2维图形元素的处理和色差分析。常见工具为:

    • 支持向量机(SVM)

    • OpenCV

    • 图像处理软件(Photoshop,Gimp…)

    • Python Image Library

     

    二、PIL安装

     

    PIL: Python Imaging Library, 是Python平台的图像处理标准库,功能非常强大。

     

    在Debian/Ubantu Linux下直接通过apt安装:

     

    $sudo apt-get install python-imaging

     

    Max和其他版本的Linux可以直接使用easy_install或pip安装,安装前需要把编译环境装好:

     

    $ sudo easy_install PIL

     

    Windos平台可以直接去PIL官网下载exe安装包。http://pythonware.com/products/pil/

     

    注:官网提供的安装包是32位的,63位系统请前往这里 http://www.lfd.uci.edu/~gohlke/pythonlibs/#pillow 下载替代包pillow。

     

    三、一般思路

     

    验证码识别的一般思路为:

     

    1、图片降噪

    2、图片切割

    3、图像文本输出

     

    3.1 图片降噪

     

    所谓降噪就是把不需要的信息通通去除,比如背景,干扰线,干扰像素等等,只剩下需要识别的文字,让图片变成2进制点阵最好。

     

    对于彩色背景的验证码:每个像素都可以放在一个5维的空间里,这5个维度分别是,X,Y,R,G,B,也就是像素的坐标和颜色,在计算机图形学中,有很多种色彩空间,最常用的比如RGB,印刷用的CYMK,还有比较少见的HSL或者HSV,每种色彩空间的维度都不一样,但是可以通过公式互相转换。在RGB空间中不好区分颜色,可以把色彩空间转换为HSV或HSL。色彩空间参见 http://baike.baidu.com/view/3427413.htm 

     

     验证码图片7039.jpg:

     

     

    1、导入Image包,打开图片:

     

    from PIL import Image

    im = Image.open('7039.jpg')

     

    2、把彩色图像转化为灰度图像。RBG转化到HSI彩色空间,采用I分量:

     

    imgry = im.convert('L')

    imgry.show()

     

    灰度看起来是这样的:

     

    3、二值化处理

     

    二值化是图像分割的一种常用方法。在二值化图象的时候把大于某个临界灰度值的像素灰度设为灰度极大值,把小于这个值的像素灰度设为灰度极小值,从而实现二值化(一般设置为0-1)。根据阈值选取的不同,二值化的算法分为固定阈值和自适应阈值,这里选用比较简单的固定阈值。

     

    把像素点大于阈值的设置,1,小于阈值的设置为0。生成一张查找表,再调用point()进行映射。

     

    threshold = 140

    table = []

    for i in range(256):

        if i < threshold:

            table.append(0)

        else:

            table.append(1)

    out = imgry.point(table, '1')

    out.show()

     

    处理结果看起来是这样的:

     

    3.2 图片切割

     

    识别验证码的重点和难点就在于能否成功分割字符,对于颜色相同又完全粘连的字符,比如google的验证码,目前是没法做到5%以上的识别率的。不过google的验证码基本上人类也只有30%的识别率。本文使用的验证码例子比较容易识别。可以不用切割,有关图片切割的方法参见这篇博客:http://www.cnblogs.com/apexchu/p/4231041.html

     

    四、利用pytesser模块实现识别

     

    pytesser是谷歌OCR开源项目的一个模块,在python中导入这个模块即可将图片中的文字转换成文本。

    链接:https://code.google.com/p/pytesser/

    pytesser 调用了 tesseract。在python中调用pytesser模块,pytesser又用tesseract识别图片中的文字。

     

    4.1 pytesser安装

     

    1、如果没有安装PIL,请到这里下载安装:http://www.pythonware.com/products/pil/

    2、安装pytesser,下载地址:http://code.google.com/p/pytesser/ ,下载后直接将其解压到项目代码下,或者解压到python安装目录的Libsite-packages下,并将其添加到path环境变量中,不然在导入模块时会出错。

    3、下载Tesseract OCR engine:http://code.google.com/p/tesseract-ocr/  ,下载后解压,找到tessdata文件夹,用其替换掉pytesser解压后的tessdata文件夹即可。

    4、另外如果现在都是从PIL库中运入Image,没有使用Image模块,所以需要把pytesser.py中的import Image改为from PIL import Image, 其次还需要在pytesser文件夹中新建一个__init__.py的空文件。

     

    ps:如果觉得后面两步比较麻烦,可以直接到云盘中下载    http://yun.baidu.com/s/1jHJvNiI ,操作如步骤2。

     

    4.2 调用pytesser识别

     

    pytesser提供了两种识别图片方法,通过image对象和图片地址,代码判断如下:

     

    from PIL import Image

    from pytesser import pytesser

    image = Image.open('7039.jpg')

    print pytesser.image_file_to_string('7039.jpg')

    print pytesser.image_to_string(image)

     

    转载于:https://www.cnblogs.com/wolaiye320/p/5649462.html

    展开全文
  • Python网站验证码识别

    2021-01-20 04:38:27
    验证码识别涉及很多方面的内容。入手难度大,但是入手后,可拓展性又非常广泛,可玩性极强,成就感也很足。 验证码图像处理 验证码图像识别技术主要是操作图片内的像素点,通过对图片的像素点进行一系列的操作,最后输出...
  • 用程序识别极验滑动验证码的验证,包括分析识别思路、识别缺口位置、生成滑块拖动路径、模拟实现滑块拼合通过验证等步骤。 准备工作 使用Python库是Selenium,浏览器为Chrome。请确保已安装Selenium库和...

    概述

    用程序识别极验滑动验证码的验证,包括分析识别思路、识别缺口位置、生成滑块拖动路径、模拟实现滑块拼合通过验证等步骤。

    准备工作

    • 使用Python库是Selenium,浏览器为Chrome。请确保已安装Selenium库和ChromeDriver浏览器驱动。
    • 关于极验滑动验证码:
      • 极验滑动验证码官网为:http://www.geetest.com/
      • 验证方式为拖动滑块拼合图像,若图像完全拼合,则验证成功,否则需要重新验证。
    • 链接地址:https://account.geetest.com/login,打开极验的管理后台登录页面,完成自动化登录操作

    实现步骤

    1 ) 初始化

    • 初始化链接地址、创建模拟浏览器对象、设置登录账户和密码等信息。

      EMAIL = '登录账户'
      PASSWORD = '登录密码'
      
      class CrackGeetest():
          def __init__(self):
              self.url = 'https://account.geetest.com/login'
              self.browser = webdriver.Chrome()
              #设置显示等待时间
              self.wait = WebDriverWait(self.browser, 20)
              self.email = EMAIL
              self.password = PASSWORD
      
          def crack():
              pass
      
      # 程序主入口
      if __name__ == '__main__':
          crack = CrackGeetest()
          crack.crack()
      

    2 ) 模拟登录填写,点开滑块验证

    • 在实例化CrackGeetest对象后调用crack()方法开始模拟登录验证…

    • 调用open()方法,打开登录界面,获取账户和密码输入框节点,完成账户和密码的输入。

    • 调用get_geetest_button()方法获取滑动验证按钮,并点击。

      class CrackGeetest():
      #...
      
      def get_geetest_button(self):
          ''' 获取初始验证按钮,return:按钮对象 '''
          button = self.wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'geetest_radar_tip')))
          return button
      
      def open(self):
          ''' 打开网页输入用户名密码, return: None '''
          self.browser.get(self.url)
          email = self.wait.until(EC.presence_of_element_located((By.ID, 'email')))
          password = self.wait.until(EC.presence_of_element_located((By.ID, 'password')))
          email.send_keys(self.email)
          password.send_keys(self.password)
      
      def crack(self):
          # 输入用户名密码
          self.open()
          # 点击验证按钮
          button = self.get_geetest_button()
          button.click()
          #...
      #...
      

    3 ) 获取并储存有无缺口的两张图片

    • 首先获取无缺口的验证图片,并保存到本地
    • 获取滑块对象,并执行点击,让浏览器中显示有缺口图片
    • 获取有缺口的验证图片,并保存到本地
      def get_position(self):
          ''' 获取验证码位置, return: 验证码位置(元组) '''
          img = self.wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'geetest_canvas_img')))
          time.sleep(2)
          location = img.location
          size = img.size
          top,bottom,left,right = location['y'],location['y']+size['height'],location['x'],location['x']+size['width']
          return (top, bottom, left, right)
      
      def get_screenshot(self):
          ''' 获取网页截图, return: 截图对象 '''
          #浏览器截屏
          screenshot = self.browser.get_screenshot_as_png()
          screenshot = Image.open(BytesIO(screenshot))
          return screenshot
      
      def get_geetest_image(self, name='captcha.png'):
          ''' 获取验证码图片, return: 图片对象 '''
          top, bottom, left, right = self.get_position()
          print('验证码位置', top, bottom, left, right)
          screenshot = self.get_screenshot()
          #从网页截屏图片中裁剪处理验证图片
          captcha = screenshot.crop((left, top, right, bottom))
          captcha.save(name)
          return captcha
      
      def get_slider(self):
          ''' 获取滑块, return: 滑块对象 '''
          slider = self.wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'geetest_slider_button')))
          return slider
      
      def crack(self):
          #...
      
          # 获取验证码图片
          image1 = self.get_geetest_image('captcha1.png')
          # 点按呼出缺口
          slider = self.get_slider()
          slider.click()
          # 获取带缺口的验证码图片
          image2 = self.get_geetest_image('captcha2.png')
      
          #...
      

    4 ) 获取缺口位置

    • 对比两张图片的所有RBG像素点,得到不一样像素点的x值,即要移动的距离

      BORDER = 6
      INIT_LEFT = 60
      
      class CrackGeetest():  
          def get_gap(self, image1, image2):
              ''' 获取缺口偏移量, 参数:image1不带缺口图片、image2带缺口图片。返回偏移量 '''
              left = 65
              for i in range(left, image1.size[0]):
                  for j in range(image1.size[1]):
                      if not self.is_pixel_equal(image1, image2, i, j):
                          left = i
                          return left
              return left
      
          def is_pixel_equal(self, image1, image2, x, y):
              '''
              判断两个像素是否相同
              :param image1: 图片1
              :param image2: 图片2
              :param x: 位置x
              :param y: 位置y
              :return: 像素是否相同
              '''
              # 取两个图片的像素点(R、G、B)
              pixel1 = image1.load()[x, y]
              pixel2 = image2.load()[x, y]
              threshold = 60
              if abs(pixel1[0]-pixel2[0])<threshold and abs(pixel1[1]-pixel2[1])<threshold and abs(pixel1[2]-pixel2[2])<threshold:
                  return True
              else:
                  return False
      
          def crack(self):
              #...
      
              # 获取缺口位置
              gap = self.get_gap(image1, image2)
              print('缺口位置', gap)
              # 减去缺口位移
              gap -= BORDER
      

    5 ) 获取移动轨迹

    • 模拟人的行为习惯(先匀加速拖动后匀减速拖动),把需要拖动的总距离分成一段一段小的轨迹
      def get_track(self, distance):
        '''
        根据偏移量获取移动轨迹
        :param distance: 偏移量
        :return: 移动轨迹
        '''
        # 移动轨迹
        track = []
        # 当前位移
        current = 0
        # 减速阈值
        mid = distance * 4 / 5
        # 计算间隔
        t = 0.2
        # 初速度
        v = 0
      
        while current < distance:
            if current < mid:
                # 加速度为正2
                a = 2
            else:
                # 加速度为负3
                a = -3
            # 初速度v0
            v0 = v
            # 当前速度v = v0 + at
            v = v0 + a * t
            # 移动距离x = v0t + 1/2 * a * t^2
            move = v0 * t + 1 / 2 * a * t * t
            # 当前位移
            current += move
            # 加入轨迹
            track.append(round(move))
        return track
      
      def crack(self):
        #...
      
        # 获取移动轨迹
        track = self.get_track(gap)
        print('滑动轨迹', track)
      

    6 ) 按照轨迹拖动,完全验证

    def move_to_gap(self, slider, track):
        '''
        拖动滑块到缺口处
        :param slider: 滑块
        :param track: 轨迹
        :return: 
        '''
        ActionChains(self.browser).click_and_hold(slider).perform()
        for x in track:
            ActionChains(self.browser).move_by_offset(xoffset=x, yoffset=0).perform()
        time.sleep(0.5)
        ActionChains(self.browser).release().perform()
    
    def crack(self):
        #...
    
        # 拖动滑块
        self.move_to_gap(slider, track)
    
        success = self.wait.until(
            EC.text_to_be_present_in_element((By.CLASS_NAME, 'geetest_success_radar_tip_content'), '验证成功'))
        print(success)
    

    7 ) 完成登录

    def login(self):
        ''' 执行登录 return: None '''
        submit = self.wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'login-btn')))
        submit.click()
        time.sleep(10)
        print('登录成功')
    
    def crack(self):
        #...
    
        # 失败后重试
        if not success:
            self.crack()
        else:
            self.login()
    

    完整代码

    展开全文
  • python识别网站验证码 SVM支持向量机 图像分割 图像处理
  • knn算法——批量识别验证码.rar
  • python加“验证码”为关键词在baidu里搜一下,可以找到很多关于验证码识别的文章。我大体看了一下,主要方法有几类:一类是通过对图片进行处理,然后利用字库特征匹配的方法,一类是图片处理后建立字符对应字典,...
  • python滑块验证码识别

    千次阅读 2019-10-18 10:54:52
    前言 一年之前写的代码,今天用了一下居然还能用,提供一下思路 ...这样获取原图就非常繁琐了,需要去破解算法。 思路 我们可以依照之前的思路,看到缺口处的周边都是黑色的阴影,手动获取缺口周边阴影的rgb值 ...
  • 一个简单的文件传输验证码识别c/s实现大体思路client通过tcp向server传输一个待识别的验证图片,server端识别后通过tcp回传给client。server端识别验证码采用pytesseract。环境:server/python3.5/ubuntu1604,...
  • 处理器图像: 处理后图像: 代码: from PIL import Image image = Image.open('4.jpg') image = image.convert('L') image.show() import numpy as np image = np.asarray(image) ......
  • Python破解BiliBili滑块验证码,完美避开人机识别,可以有 准备工作 B站登录页 https://passport.bilibili.com/login python3 pip install selenium (webdriver框架) pip install PIL (图片处理) chrome ...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 134
精华内容 53
关键字:

python验证码识别算法

python 订阅