Python验证码识别: 图片验证, 滑动验证, 点选验证...

目录

  • 前言
  • 环境使用:
  • 模块使用:
  • 代码展示
    • 图片验证码
    • 滑动验证码:
    • 点选验证:
    • 尾语

前言

嗨喽~大家好呀,这里是小曼呐 ❤ ~!

环境使用:

  • 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})"""})

2.访问网站

# driver.get('https://kyfw.12306.cn/otn/resources/login.html')

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

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

    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()

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

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验证码识别: 图片验证, 滑动验证, 点选验证..._第1张图片

你可能感兴趣的:(python,Python教程,python,开发语言,学习,pycharm)