前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

Python简单的验证码识别: 图片验证, 滑动验证, 点选验证...-LMLPHP

环境使用:

  • Python 3.8 解释器

  • Pycharm 编辑器

模块使用:

  • selenium --> pip install selenium==3.141.0

  • ddddocr --> pip install ddddocr

代码展示

导入模块

# from selenium import webdriver
# from selenium.webdriver import ActionChains
# from password import account_train, password_train
# # 导入时间模块
# import time
  1. 打开浏览器
# driver = webdriver.Chrome()
# # 绕过检测
# driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",
#                        {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})
  1. 访问网站
# driver.get('https://kyfw.12306.cn/otn/resources/login.html')
  1. 登陆账号密码, 点击登陆

    • 先定位输入框<元素定位>, 然后再输入内容

      I. css选择器

      II. xpath节点提取

网站检测到了, 你在使用selenium --> 绕过检测

# # 通过 CSS 选择器查找元素
# driver.find_element_by_css_selector('#J-userName').send_keys('账号')
# driver.find_element_by_css_selector('#J-password').send_keys('密码')
# driver.find_element_by_css_selector('#J-login').click()
  1. <出现验证码> --> 滑动操作就可以了

    I. 按住滑块 --> 鼠标动作链

    II. 滑动滑块 --> 滑到哪里呢?

网页元素还没加载出来, 你就去定位元素, 找不到…

延时

# time.sleep(1)

定位滑块元素

# h = driver.find_element_by_css_selector('#nc_1_n1z')
# action = ActionChains(driver)
# # perform() 执行操作
# action.click_and_hold(h).perform()
# action.move_by_offset(85, 0)
# action.move_by_offset(85, 0)
# action.move_by_offset(85, 0)
# action.move_by_offset(85, 0)
# # 释放
# action.release().perform()

图片验证码

  • img\img.png 相对路径

  • D:\自游\验证码识别\img\img.png 绝对路径

  • mode=‘rb’ 以二进制方法读取数据内容

ddddocr 缺点: 识别准确率不是很高

导入识别模块

import ddddocr

实例化对象

ocr = ddddocr.DdddOcr()

读取图片内容

f = open('img\\img_1.png', mode='rb')
img = f.read()
result = ocr.classification(img)
print(result)

滑动验证码:

12306网站滑动验证码

selenium 模块自动化测试模块

selenium --> 浏览器驱动 --> 浏览器 <模拟人的行为去操作流程>

selenium 默认安装是4.0版本 语法和3.0不同 pip install selenium==3.141.0

  1. 谷歌浏览器

  2. 谷歌驱动 --> 版本选择 和你浏览器版本最相近就可以了

    下载好了之后解压就可以了, 不需要双击安装

  3. 打开浏览器

    • 驱动路径:

      I. 驱动文件在python安装目录下 <不需要添加路径>

      II. 驱动文件和代码放在一起 <不需要添加路径>

      III. 写驱动路径 绝对路径

  4. 访问网站

  5. 登陆账号密码, 点击登陆

  6. <出现验证码> --> 滑动操作就可以了

点选验证:

模拟登陆

from selenium import webdriver
from selenium.webdriver import ActionChains
import time
from password import VideoAccount, VideoPassword, account, password
from chaojiying import Chaojiying_Client
driver = webdriver.Chrome()
driver.get('https://*****/')
driver.find_element_by_css_selector('.header-login-entry').click()
time.sleep(1)
driver.find_element_by_css_selector('.tab__form div:nth-child(1) input').send_keys(VideoAccount)
driver.find_element_by_css_selector('.tab__form div:nth-child(3) input').send_keys(VideoPassword)
driver.find_element_by_css_selector('div.btn_primary').click()
"""
对接打码平台 --> 超级鹰
"""
time.sleep(2)
img = driver.find_element_by_css_selector('.geetest_item.geetest_big_item')
img.screenshot('yzm.png')
im = open('yzm.png', 'rb').read()
chaojiying = Chaojiying_Client(account, password, '96001')
pic_str = chaojiying.PostPic(im, 9004)['pic_str']
for index in pic_str.split('|'):
    x = index.split(',')[0]
    y = index.split(',')[1]
    action = ActionChains(driver)
    action.move_to_element_with_offset(img, int(x), int(y)).click().perform()

driver.find_element_by_css_selector('.geetest_commit_tip').click()

尾语 💝

要成功,先发疯,下定决心往前冲!

学习是需要长期坚持的,一步一个脚印地走向未来!

未来的你一定会感谢今天学习的你。

—— 心灵鸡汤

本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

Python简单的验证码识别: 图片验证, 滑动验证, 点选验证...-LMLPHP

05-24 12:46