⚙️ 验证码演示
🎯 请选择:请点击下方图片中符合提示的内容
🖼️ 验证码图片
选项1 选项2 选项3 选项4 选项5 选项6 选项7 选项8
已选择:
⚠️ 使用说明:
1. 这是12306验证码的演示版本
2. 实际识别需要运行本地Python脚本
3. 12306验证码通常需要识别多个图片
⚠️ 本工具仅供学习研究使用
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests

req = requests.session()
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
}

def login():
    # 获取验证码图片
    pic_response = req.get(
        'https://kyfw.12306.cn/passport/captcha/captcha-image'
        '?login_site=E&module=login&rand=sjrand'
    )
    
    # 保存验证码图片
    codeImage = pic_response.content
    fn = open('code.png', 'wb')
    fn.write(codeImage)
    fn.close()
    
    # 手动输入验证码坐标
    print("请查看 code.png 输入验证码坐标")
    codeStr = input('请输入验证码坐标:')
    
    # 提交验证码验证
    data = {
        'answer': codeStr,
        'rand': 'sjrand',
        'login_site': 'E'
    }
    
    response = req.post(
        'https://kyfw.12306.cn/passport/captcha/captcha-check',
        data=data, 
        headers=headers
    )
    
    print(response.text)

# 进阶版:使用OCR自动识别
def ocr_captcha():
    """
    使用百度OCR或腾讯OCR识别验证码
    需要安装: pip install aip
    """
    from aip import AipOcr
    
    # 配置百度OCR
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    
    # 获取图片
    image = get_captcha_image()
    
    # 识别图片中的文字
    result = client.basicGeneral(image)
    
    print("识别结果:", result)

if __name__ == '__main__':
    login()
本地运行方法:
  1. 安装依赖:pip install requests
  2. 保存代码为 captcha.py
  3. 运行:python captcha.py
  4. 查看生成的验证码图片
  5. 输入验证码坐标
进阶版(OCR自动识别):
  1. 注册百度AI账号
  2. 安装:pip install baidu-aip
  3. 配置API密钥
  4. 运行OCR识别版本
技术要点:
  • 12306验证码为点选式
  • 需要返回选中图片的坐标
  • 坐标格式:x,y(多个用逗号分隔)