验证码识别实战|百度营销模拟登陆

简介: 验证码识别实战|百度营销模拟登陆

今天用ddddocr这个库来实现“百度营销”模拟注册操作。

验证码识别在实际应用中有哪些场景呢?

比如:做测试、爬虫……等场景都需要使用验证码识别计数

本文案例仅供学习参看使用!

先对今天要使用的库做个介绍吧~

 

ddddocr


 

ddddocr是由sml2h3开发的专为验证码厂商进行对自家新版本验证码难易强度进行验证的一个python库,其由作者与kerlomz共同合作完成,通过大批量生成随机数据后进行深度网络训练,本身并非针对任何一家验证码厂商而制作,本库使用效果完全靠玄学,可能可以识别,可能不能识别。ddddocr奉行着开箱即用、最简依赖的理念,尽量减少用户的配置和使用成本,希望给每一位测试者带来舒适的体验。


 

selinum


 

Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。支持多种操作系统,如:Linux、Windows 、iOS、Android

它提供了8种定位方式:


 

pillow


Python图像库PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。其官方主页为:PIL。PIL历史悠久,原来是只支持python2.x的版本的,后来出现了移植到python3的库pillow,pillow号称是friendly fork for PIL,其功能和PIL差不多,但是支持python3。

PIL可以做很多和图像处理相关的事情:

  • 图像归档(Image Archives)。PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等。
  • 图像展示(Image Display)。PIL较新的版本支持包括Tk PhotoImage,BitmapImage还有Windows DIB等接口。PIL支持众多的GUI框架接口,可以用于图像展示。
  • 图像处理(Image Processing)。PIL包括了基础的图像处理函数,包括对点的处理,使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换。PIL还有一些直方图的方法,允许你展
  • 示图像的一些统计特性。这个可以用来实现图像的自动对比度增强,还有全局的统计分析等。

 

环境准备

 

安装ddddocr


pip install ddddocr

安装selinum


pip install selenium

安装pillow


pip install pillow

ps:安装selinum需要先下载浏览器对应的驱动,我使用的Chrome浏览器,这里就以Chrome浏览器为例。


驱动安装步骤:

  1. 查看自己Chrome浏览器的版本:


   2.我这里的Chrome浏览器的版本如下所示,所以我需要下载如下版本的驱动。:


下载完驱动后,将驱动拷贝至Python解释器安装目录(懒得另外配置环境变量)

Chrome驱动下载地址:

http://chromedriver.storage.googleapis.com/index.html


环境准备工作完成后,我们就可以开始编写代码啦~

 

模拟“百度营销”注册

 


导入:

from ddddocr import DdddOcr
from selenium.webdriver import Chrome
import time
from PIL import Image
user = 'admin0283' # 用户名
pwd = 'Admin1024' # 密码
phone = '要注册的手机号'

验证码识别函数:

# 验证码识别函数
def Verification():
    ocr = DdddOcr()
    file = open('code.png', 'rb')
    img = file.read()
    result = ocr.classification(img)
    print(result)
    return result

验证图片截取函数:

# 图片处理函数
def save_code(element):
    fileName = 'code.png'
    right = 542 + element.size['width']
    bottom = 507 + element.size['height']
    im = Image.open('screen.png')
    im = im.crop((542, 507, right, bottom))
    im.save(fileName)
    return fileName

ps:这里验证码坐标的确定,我使用的是一个在线图片坐标获取网站,只需要移动鼠标即可查看坐标,非常的方便!

https://uutool.cn/img-coord/


百度营销模拟自动注册函数:

# 模拟注册
def register():
    url = 'https://u.baidu.com/ucweb/?module=Reguser&controller=reg&action=index&appid=12&nexturl=https%3A%2F%2Ftongji.baidu.com%2Fweb%2Fwelcome%2Flogin%3FloginDialog%3D1#/base'
    chrome = Chrome()
    chrome.get(url)
    # 输入用户名
    chrome.find_element_by_xpath('//input[@placeholder="用户名"]').send_keys(user)
    # 输入两次密码
    chrome.find_element_by_xpath('//input[@placeholder="密码"]').send_keys(pwd)
    chrome.find_element_by_xpath('//input[@placeholder="再次输入密码"]').send_keys(pwd)
    # 输入手机号
    chrome.find_element_by_xpath('//input[@placeholder="手机号码"]').send_keys(phone)
    # 验证码识别
    chrome.save_screenshot('screen.png')
    img = chrome.find_element_by_xpath('//img')
    code = save_code(img)
    result = Verification()
    # 输入验证码
    chrome.find_element_by_xpath('//input[@placeholder="验证码"]').send_keys(result)
    # 点击获取验证码
    chrome.find_element_by_xpath('//span[text()="获取验证码"]/..').click()
    # 等待10秒
    # 点击注册
    chrome.find_element_by_xpath('//span[text()="注 册"]/..').click()

全部代码:

from ddddocr import DdddOcr
from selenium.webdriver import Chrome
import time
from PIL import Image
user = 'admin0283' # 用户名
pwd = 'Admin1024' # 密码
phone = '注册的手机号'
def Verification():
    ocr = DdddOcr()
    file = open('code.png', 'rb')
    img = file.read()
    result = ocr.classification(img)
    print(result)
    return result
def save_code(element):
    fileName = 'code.png'
    right = 542 + element.size['width']
    bottom = 507 + element.size['height']
    im = Image.open('screen.png')
    im = im.crop((542, 507, right, bottom))
    im.save(fileName)
    return fileName
# 模拟注册
def register():
    url = 'https://u.baidu.com/ucweb/?module=Reguser&controller=reg&action=index&appid=12&nexturl=https%3A%2F%2Ftongji.baidu.com%2Fweb%2Fwelcome%2Flogin%3FloginDialog%3D1#/base'
    chrome = Chrome()
    chrome.get(url)
    # 输入用户名
    chrome.find_element_by_xpath('//input[@placeholder="用户名"]').send_keys(user)
    # 输入两次密码
    chrome.find_element_by_xpath('//input[@placeholder="密码"]').send_keys(pwd)
    chrome.find_element_by_xpath('//input[@placeholder="再次输入密码"]').send_keys(pwd)
    # 输入手机号
    chrome.find_element_by_xpath('//input[@placeholder="手机号码"]').send_keys(phone)
    # time.sleep(3)
    chrome.save_screenshot('screen.png')
    img = chrome.find_element_by_xpath('//img')
    code = save_code(img)
    result = Verification()
    print(img, result)
    # 输入验证码
    chrome.find_element_by_xpath('//input[@placeholder="验证码"]').send_keys(result)
    # 点击获取验证码
    chrome.find_element_by_xpath('//span[text()="获取验证码"]/..').click()
    # 等待10秒
    time.sleep(10)
    # 点击注册
    chrome.find_element_by_xpath('//span[text()="注 册"]/..').click()
    time.sleep(10)
if __name__ == '__main__':
    register()

来看下效果吧~


可以看到验证码识别的还是非常的精准的哈~

相关文章
|
2月前
|
数据采集 Python
爬虫实战-Python爬取百度当天热搜内容
爬虫实战-Python爬取百度当天热搜内容
72 0
|
4月前
AutoJS4.1.0实战教程 ---百度极速版
AutoJS4.1.0实战教程 ---百度极速版
64 0
|
6月前
|
搜索推荐 中间件
系统入门到实战学习某项技术、有问题找"百度"、学习大佬的技术博客、找开源代码等资料
系统入门到实战学习某项技术、有问题找"百度"、学习大佬的技术博客、找开源代码等资料
56 0
|
3月前
|
Web App开发 IDE 测试技术
实战练习:用airtest-selenium脚本爬取百度热搜标题
实战练习:用airtest-selenium脚本爬取百度热搜标题
|
4月前
|
Linux
百度搜索:蓝易云【linux基本功系列之mv命令实战】
以上是mv命令的一些实战用法。在实际使用中,请根据具体需求和情况合理使用mv命令,并注意确保操作的正确性和文件的安全性。
29 0
|
5月前
|
应用服务中间件 nginx
百度搜索:蓝易云【Nginx【Nginx核心指令(rewrite指令、实战rewrite 、if指令、set和break指令】】
这些核心指令在Nginx的配置文件中发挥重要作用。使用rewrite指令可以实现URL的重写和重定向,if指令可以根据条件执行不同的操作,set指令可以创建自定义变量并设置其值,而break指令可以中断请求处理流程。理解和灵活运用这些指令,可以帮助我们更好地配置和管理Nginx服务器。
67 1
|
5月前
|
Linux
百度搜索:蓝易云【Linux route命令实战:route 命令实战教程,配置静态路由,删除路由表项】
通过按照上述步骤配置静态路由和删除路由表项,您可以有效地管理Linux系统的网络路由。请根据实际需求和网络配置进行操作,并确保在执行任何更改之前仔细验证和确认。
46 0
|
10月前
|
移动开发 定位技术 API
手机端H5地图调起开发实战案例解析(百度高德腾讯地图调起、底部弹出层、提示安装地图导航APP)
手机端H5地图调起开发实战案例解析(百度高德腾讯地图调起、底部弹出层、提示安装地图导航APP)
274 0
|
搜索推荐 大数据 数据库
精准大数据获客——移动 联通 电信运营商大数据分析_营销
目前,移动、联通、电信三大运营商都在加速进行大数据能力建设、完善和丰富大数据的应用模式和基础架构。在大数据时代,企业的销售和营销渠道已由传统模式转为向大数据营销模式,大数据营销模式更顺应时代的变化和发展趋势。三大运营商,移动,联通,电信拥有全互联网规模最大的数据库,简称“运营商大数据”运营商大数据拥有海量的用户数据,其中包括众多领域,不同行业,和不同的消费群体,运营商大数据对不同行业,企业,公司的发展和营销获客起着非常重要的作用。
精准大数据获客——移动 联通 电信运营商大数据分析_营销
|
12月前
|
新零售 存储 供应链
案例酷 | 九阳股份:小家电,大数据,精准营销圈粉新生代
编者按: 在数字经济蓬勃发展的当下,千行百业都在紧抓时代机遇转型升级。在小家电领域,数智化转型成为家电行业的热词,家电业的头部企业也纷纷走上数智化“花路”。其中,作为小家电领导品牌之一,九阳从单品类起家,通过一路披荆斩棘,不断超越自己走到小家电领先地位,秉承健康和创新的核心DNA,九阳积极引领厨房小家电升级换代,创新营销玩法,推动数智化转型,品牌转型取得明显成效。 全文约4812字,建议阅读时间14分钟。
211 0