Python爬虫中,有哪些免费好用的验证码识别方法或平台推荐?

如题,遇到有验证码的网站,就完全爬不起来了,请大家指点一下,谢谢了。


Python爬虫中,有哪些免费好用的验证码识别方法或平台推荐?
16 回复

接入打码平台


对于Python爬虫中的免费验证码识别,我有几个实战方案:

  1. 简单验证码自己处理:用Pillow+Tesseract搞定基础数字字母验证码
from PIL import Image
import pytesseract
import requests
from io import BytesIO

# 下载验证码图片
response = requests.get('验证码URL')
img = Image.open(BytesIO(response.content))

# 预处理增强识别率
img = img.convert('L')  # 转灰度
img = img.point(lambda x: 0 if x < 128 else 255)  # 二值化

# OCR识别
code = pytesseract.image_to_string(img, config='--psm 8 --oem 3')
print(f"识别结果: {code}")
  1. 复杂验证码用第三方API

    • 2Captcha:有免费额度,支持多种验证码类型
    • DeathByCaptcha:价格便宜,API简单
    • Capsolver:新平台,免费试用不错
  2. 深度学习方案:用CNN训练自己的识别模型(适合固定样式)

# 简化的CNN模型示例
import tensorflow as tf
model = tf.keras.Sequential([
    tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(50, 150, 1)),
    tf.keras.layers.MaxPooling2D(2,2),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(36, activation='softmax')  # 26字母+10数字
])
  1. 打码平台集成示例
import requests

def solve_captcha_2captcha(image_base64, api_key):
    url = "http://2captcha.com/in.php"
    data = {
        'key': api_key,
        'method': 'base64',
        'body': image_base64,
        'json': 1
    }
    response = requests.post(url, data=data).json()
    if response['status'] == 1:
        captcha_id = response['request']
        # 轮询获取结果
        for _ in range(10):
            result = requests.get(
                f"http://2captcha.com/res.php?key={api_key}&action=get&id={captcha_id}"
            ).text
            if 'OK' in result:
                return result.split('|')[1]
    return None

建议:先试Tesseract,不行再考虑API方案。

打码兔~~

如果自己玩的话 ,那就把图片下载下来,手动输入,
大规模的话,可以机器学习识别 或者 接入第三方打码平台。

除了手动, 其他都是付费的

安装 tesseract,然后 Python 调用。

觉得不准确的话,自己写配置去训练。

机器学习?自己训练?

什么样子的验证码,发来瞧瞧

只是登录的话,保存 cookie 定时刷新。

我最近正好做相关的东西,识别验证码真复杂。

目前在用阿里云的英数

把验证码发出来看看,不一定要用打码平台



就微博这种怎么处理?

谢谢各位的回应,暂时用了 tesseract,但是识别度有点低,验证码只要稍微一变点花样,就不能正确识别了

#13 明明可以花几元钱就可以打一两千次的码,偏偏选择成本更高的机器识别

英数是啥,没搜到

回到顶部