鱼C论坛

 找回密码
 立即注册
查看: 3313|回复: 11

验证码自动识别和点击怎么实现

[复制链接]
发表于 2023-5-11 20:57:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
以下图的验证码如何自动识别 然后点击
shoot.bmp

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-5-11 20:58:18 | 显示全部楼层
验证码自动识别和点击的实现一般需要使用图像处理和模拟鼠标点击的技术。具体步骤如下:

1. 使用图像处理技术对验证码进行识别,可以使用Python的OpenCV库来实现。首先需要将验证码图片进行二值化处理,然后使用模板匹配或者轮廓检测等算法找出验证码中的数字或字母。

2. 使用Python的自动化测试工具selenium模拟鼠标点击验证码。首先需要安装selenium库,然后启动浏览器,进入需要输入验证码的网页,使用selenium库中的find_element_by_xpath()方法找到验证码的位置,然后使用鼠标点击该位置即可。

以下是Python代码示例:
  1. import cv2
  2. import numpy as np
  3. from selenium import webdriver
  4. from selenium.webdriver.common.action_chains import ActionChains
  5. # 图像处理部分
  6. img = cv2.imread('captcha.png', 0)
  7. _, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
  8. contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
  9. for contour in contours:
  10.     [x, y, w, h] = cv2.boundingRect(contour)
  11.     # 对每个数字或字母进行识别和处理
  12. # 模拟鼠标点击部分
  13. driver = webdriver.Chrome()
  14. driver.get('http://example.com')
  15. captcha_element = driver.find_element_by_xpath('//img[@class="captcha"]')
  16. actions = ActionChains(driver)
  17. actions.move_to_element(captcha_element).click().perform()
复制代码

需要注意的是,验证码自动识别和点击可能会受到网站的反爬虫机制的限制,需要具体情况具体分析。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-11 21:04:50 | 显示全部楼层
验证码识别与点击是一个常见的自动化任务,下面简单介绍一下如何用Python实现该过程。

1. 安装依赖——Pillow 和 pytesseract:

在开始之前需要在终端输入以下命令行,安装两个必需的 Python 库

  1. pip install Pillow pytesseract
复制代码


2. 导入库


  1. from PIL import Image
  2. import requests
  3. import io
  4. import pytesseract
  5. import time
  6. from selenium import webdriver
复制代码

3. 下载验证码图片并保存到本地

我们首先需要获取验证码的图片,可以使用 Python 的 requests 库从网页上下载图片,然后使用 Pillow 库打开图片并且再进行其他处理。具体的方法为:


  1. response = requests.get('https://example.com/captcha.png')
  2. img = Image.open(io.BytesIO(response.content))
复制代码

4. 图片预处理

为提高验证码的识别率,我们通常会对验证码图片进行一定的处理,例如降噪、灰度化、二值化等操作,这里以灰度化和二值化为例:


  1. # 转换为灰度图像
  2. img = img.convert('L')

  3. # 二值化处理
  4. threshold = 127
  5. table = []
  6. for i in range(256):
  7.     if i < threshold:
  8.         table.append(0)
  9.     else:
  10.         table.append(1)
  11. img = img.point(table, '1')
复制代码


5. 使用 Tesseract 进行文字识别

Tesseract 是一个开源OCR(Optical Character Recognition)引擎,可以帮助我们实现文字识别。在这之前,我们需要先安装 Tesseract(下载地址:https://github.com/tesseract-ocr/tesseract),安装完成后,还需要将其添加到系统环境变量中。

接下来,就可以使用 pytesseract库 调用 Tesseract API 对验证码进行识别。代码如下:


  1. # 识别图片中的文字
  2. code = pytesseract.image_to_string(img)

  3. # 去掉空格和换行符```python
  4. code = code.replace(' ', '').replace('\n', '')
复制代码


6. 在网页上输入验证码并提交

最后一步就是将识别到的验证码输入到网页上,并且提交表单或者登录即可。这里以使用 Selenium 控制浏览器自动登录为例:


  1. driver = webdriver.Chrome()
  2. driver.get('https://example.com/login')

  3. # 输入账号密码
  4. driver.find_element_by_name('username').send_keys('your_username')
  5. driver.find_element_by_name('password').send_keys('your_password')

  6. # 输入验证码
  7. driver.find_element_by_name('captcha').send_keys(code)

  8. # 提交表单
  9. driver.find_element_by_css_selector('button[type="submit"]').click()

  10. time.sleep(5)
  11. # 关闭浏览器
  12. driver.quit()
复制代码


以上就是用 Python 实现验证码识别与点击的简单介绍。

话说是哪个网站啊?还禁止挂机?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-11 21:04:58 | 显示全部楼层
isdkz 发表于 2023-5-11 20:58
验证码自动识别和点击的实现一般需要使用图像处理和模拟鼠标点击的技术。具体步骤如下:

1. 使用图像处理 ...

这个方法对 生僻汉字的验证码 可以用吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-11 21:06:48 | 显示全部楼层
halemorning 发表于 2023-5-11 21:04
这个方法对 生僻汉字的验证码 可以用吗


效果可能不是很好,如果想要效果好的还是得自己训练OCR模型,或者购买api接口,比如百度智能云的OCR接口
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-11 21:06:53 | 显示全部楼层
sfqxx 发表于 2023-5-11 21:04
验证码识别与点击是一个常见的自动化任务,下面简单介绍一下如何用Python实现该过程。

1. 安装依赖——P ...

一个十多年前的网页游戏 ,现在名字叫光之翼,哈哈哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-11 21:07:19 | 显示全部楼层
halemorning 发表于 2023-5-11 21:06
一个十多年前的网页游戏 ,现在名字叫光之翼,哈哈哈

网页游戏防挂机
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-11 21:09:03 | 显示全部楼层
halemorning 发表于 2023-5-11 21:04
这个方法对 生僻汉字的验证码 可以用吗

或者更直截了当的购买别人的验证码识别服务,比如超级鹰
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-11 21:12:12 | 显示全部楼层
isdkz 发表于 2023-5-11 21:06
效果可能不是很好,如果想要效果好的还是得自己训练OCR模型,或者购买api接口,比如百度智能云的OCR接 ...

自己训练OCR模型的话 应该怎么学
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-11 21:15:13 | 显示全部楼层
halemorning 发表于 2023-5-11 21:12
自己训练OCR模型的话 应该怎么学

你可以看一下这个百度开源的OCR:https://gitee.com/paddlepaddle/PaddleOCR

看着这个项目的 readme 来搞
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-12 00:55:53 From FishC Mobile | 显示全部楼层
应该到按键精灵论坛这种发帖
人工答题平台,调用平台接口就可以
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-22 09:40:23 | 显示全部楼层
收到,这就先conda install ~~一波
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-26 12:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表