halemorning 发表于 2023-5-11 20:57:35

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

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

isdkz 发表于 2023-5-11 20:58:18

验证码自动识别和点击的实现一般需要使用图像处理和模拟鼠标点击的技术。具体步骤如下:

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

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

以下是Python代码示例:

import cv2
import numpy as np
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

# 图像处理部分
img = cv2.imread('captcha.png', 0)
_, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
    = cv2.boundingRect(contour)
    # 对每个数字或字母进行识别和处理

# 模拟鼠标点击部分
driver = webdriver.Chrome()
driver.get('http://example.com')
captcha_element = driver.find_element_by_xpath('//img[@class="captcha"]')
actions = ActionChains(driver)
actions.move_to_element(captcha_element).click().perform()


需要注意的是,验证码自动识别和点击可能会受到网站的反爬虫机制的限制,需要具体情况具体分析。

sfqxx 发表于 2023-5-11 21:04:50

验证码识别与点击是一个常见的自动化任务,下面简单介绍一下如何用Python实现该过程。

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

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

pip install Pillow pytesseract

2. 导入库


from PIL import Image
import requests
import io
import pytesseract
import time
from selenium import webdriver
3. 下载验证码图片并保存到本地

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


response = requests.get('https://example.com/captcha.png')
img = Image.open(io.BytesIO(response.content))
4. 图片预处理

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


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

# 二值化处理
threshold = 127
table = []
for i in range(256):
    if i < threshold:
      table.append(0)
    else:
      table.append(1)
img = img.point(table, '1')

5. 使用 Tesseract 进行文字识别

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

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


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

# 去掉空格和换行符```python
code = code.replace(' ', '').replace('\n', '')

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

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


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

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

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

# 提交表单
driver.find_element_by_css_selector('button').click()

time.sleep(5)
# 关闭浏览器
driver.quit()

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

话说是哪个网站啊?还禁止挂机?

halemorning 发表于 2023-5-11 21:04:58

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

1. 使用图像处理 ...

这个方法对 生僻汉字的验证码 可以用吗

isdkz 发表于 2023-5-11 21:06:48

halemorning 发表于 2023-5-11 21:04
这个方法对 生僻汉字的验证码 可以用吗

效果可能不是很好,如果想要效果好的还是得自己训练OCR模型,或者购买api接口,比如百度智能云的OCR接口

halemorning 发表于 2023-5-11 21:06:53

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

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

一个十多年前的网页游戏 ,现在名字叫光之翼,哈哈哈

sfqxx 发表于 2023-5-11 21:07:19

halemorning 发表于 2023-5-11 21:06
一个十多年前的网页游戏 ,现在名字叫光之翼,哈哈哈

网页游戏防挂机{:10_277:}

isdkz 发表于 2023-5-11 21:09:03

halemorning 发表于 2023-5-11 21:04
这个方法对 生僻汉字的验证码 可以用吗

或者更直截了当的购买别人的验证码识别服务,比如超级鹰

halemorning 发表于 2023-5-11 21:12:12

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

自己训练OCR模型的话 应该怎么学

isdkz 发表于 2023-5-11 21:15:13

halemorning 发表于 2023-5-11 21:12
自己训练OCR模型的话 应该怎么学

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

看着这个项目的 readme 来搞

兢兢 发表于 2023-5-12 00:55:53

应该到按键精灵论坛这种发帖
人工答题平台,调用平台接口就可以

Axiujiu 发表于 2023-5-22 09:40:23

收到,这就先conda install ~~一波
页: [1]
查看完整版本: 验证码自动识别和点击怎么实现