当前位置: 首页 > news >正文

Python 爬虫:使用打码平台来识别各种验证码:

本课程使用的是 超级鹰 打码平台, 没有账户的请自行注册!

超级鹰验证码识别-专业的验证码云端识别服务,让验证码识别更快速、更准确、更强大

使用打码平台来攻破验证码难题, 是很简单容易的, 但是要钱!

案例代码及测试资源:

git clone https://github.com/Python3WebSpider/CaptchaPlatform.git

 使用git 将资源拽取下来, 然后你会发现多了一个文件夹, 文件夹中有一个chaojiying.py 文件, 这里面就是基于官方 SDK 改写的代码:

username: 用户名 , 你注册的超级鹰用户。

password:密码

soft_id:  软件ID。

import requests
from hashlib import md5class Chaojiying(object):def __init__(self, username, password, soft_id):self.username = usernameself.password = md5(password.encode('utf-8')).hexdigest()self.soft_id = soft_idself.base_params = {'user': self.username,'pass2': self.password,'softid': self.soft_id,}self.headers = {'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',}def post_pic(self, im, codetype):"""im: 图片字节codetype: 题目类型 参考 http://www.chaojiying.com/price.html"""params = {'codetype': codetype,}params.update(self.base_params)files = {'userfile': ('ccc.jpg', im)}r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files,headers=self.headers)return r.json()def report_error(self, im_id):"""im_id:报错题目的图片ID"""params = {'id': im_id,}params.update(self.base_params)r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)return r.json()

图片验证码:

CAPTCHA_KIND 则为图片的类型, 可以在 验证码类型与价格表-超级鹰验证码识别 看到。

from chaojiying import ChaojiyingUSERNAME = '136xxxx108'
PASSWORD = 'xxxxxx'
SOFT_ID = 'xxxxxxxx'
CAPTCHA_KIND = '1006'
FILE_NAME = 'captcha1.png'
client = Chaojiying(USERNAME, PASSWORD, SOFT_ID)
result = client.post_pic(open(FILE_NAME, 'rb').read(), CAPTCHA_KIND)
print(result)

 点选验证码:

from chaojiying import ChaojiyingUSERNAME = 'xxx'
PASSWORD = ''
SOFT_ID = 'xxxxxx'
CAPTCHA_KIND = '9004'
FILE_NAME = 'captcha2.png'
client = Chaojiying(USERNAME, PASSWORD, SOFT_ID)
result = client.post_pic(open(FILE_NAME, 'rb').read(), CAPTCHA_KIND)
print(result)

 得到的响应结果为:

{'err_no': 0, 'err_str': 'OK', 'pic_id': '2256514491185230017', 'pic_str': '118,177|249,173', 'md5': 'e89f632e91cc6b8a85dad2fbbc13c803'}

 可以看到图片的坐标信息为: '118,177|249,173'  使用opencv 技术来标记这个点测试一下:

import cv2image = cv2.imread('captcha2.png')
image = cv2.circle(image, (108, 133), radius=10, color=(0, 0, 255), thickness=-1)
image = cv2.circle(image, (227, 143), radius=10, color=(0, 0, 255), thickness=-1)
cv2.imwrite('captcha2_label.png', image)

 滑块验证码:

from chaojiying import ChaojiyingUSERNAME = '136xxxx08'
PASSWORD = 'hxxxxx.'
SOFT_ID = '9xxxx'
CAPTCHA_KIND = '9101'
FILE_NAME = 'captcha5.png'
client = Chaojiying(USERNAME, PASSWORD, SOFT_ID)
result = client.post_pic(open(FILE_NAME, 'rb').read(), CAPTCHA_KIND)
print(result)

 

{'err_no': 0, 'err_str': 'OK', 'pic_id': '1256519431185230022', 'pic_str': '218,96', 'md5': '627d620bccd9a6dd1366329b951f1511'}

使用OpenCV测试验证一下:

import cv2image = cv2.imread('captcha2.png')
image = cv2.circle(image, (231, 85), radius=10, color=(0, 0, 255), thickness=-1)
cv2.imwrite('captcha3_label.png', image)

可以看到, 不是很准确,  我们可以向打码平台的工作人员传递一些信息, 尽可能的标记的准确一些:

from chaojiying import Chaojiyingimport cv2
from PIL import ImageFont, ImageDraw, Image
import numpy as np
import iodef cv2_add_text(image, text, left, top, textColor=(255, 0, 0), text_size=20):image = Image.fromarray(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))draw = ImageDraw.Draw(image)font = ImageFont.truetype('simsun.ttc', text_size, encoding="utf-8")draw.text((left, top), text, textColor, font=font)return cv2.cvtColor(np.asarray(image), cv2.COLOR_RGB2BGR)USERNAME = '136XXXX08'
PASSWORD = 'hXXXXXXXXXXX..'
SOFT_ID = '9XXXXXXX2'
CAPTCHA_KIND = '9101'
FILE_NAME = 'captcha3.png'
image = cv2.imread(FILE_NAME)
image = cv2_add_text(image, '请点击目标滑块左上角', int(image.shape[1] / 10), int(image.shape[0] / 2), (255, 0, 0), 40)
client = Chaojiying(USERNAME, PASSWORD, SOFT_ID)
result = client.post_pic(io.BytesIO(cv2.imencode('.png', image)[1]).getvalue(), CAPTCHA_KIND)
print(result)

问答验证码:

相关文章:

Python 爬虫:使用打码平台来识别各种验证码:

本课程使用的是 超级鹰 打码平台, 没有账户的请自行注册! 超级鹰验证码识别-专业的验证码云端识别服务,让验证码识别更快速、更准确、更强大 使用打码平台来攻破验证码难题, 是很简单容易的, 但是要钱! 案例代码及测…...

理解算法复杂度:空间复杂度详解

引言 在计算机科学中,算法复杂度是衡量算法效率的重要指标。时间复杂度和空间复杂度是算法复杂度的两个主要方面。在这篇博客中,我们将深入探讨空间复杂度,了解其定义、常见类型以及如何进行分析。空间复杂度是衡量算法在执行过程中所需内存…...

浅析Kafka Streams消息流式处理流程及原理

以下结合案例&#xff1a;统计消息中单词出现次数&#xff0c;来测试并说明kafka消息流式处理的执行流程 Maven依赖 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusio…...

QGroundControl的总体架构,模块化设计和主要组件的功能。

QGroundControl 总体架构详细描述 QGroundControl (QGC) 作为一个开源地面控制站软件&#xff0c;其设计原则是模块化、高扩展性和高可维护性。 总体架构 QGroundControl 由多个层次构成&#xff0c;每个层次负责不同的功能。这种分层结构确保了系统的高内聚性和低耦合性。 …...

oracle 表空间文件迁移

表空间文件迁移 背景 由于各种原因&#xff0c;在实际工作中可能会出现oracle服务器数据盘空间被占满的情况&#xff0c;这个时候单纯的添加新磁盘&#xff0c;后续表空间文件放新盘的方案已经不适用了&#xff0c;因为源盘已经占用满了&#xff0c;数据库服务会异常&#xf…...

JVM学习(day1)

JVM 运行时数据区 线程共享&#xff1a;方法区、堆 线程独享&#xff08;与个体“同生共死”&#xff09;&#xff1a;虚拟机栈、本地方法栈、程序计数器 程序计数器 作用&#xff1a;记录下次要执行的代码行的行号 特点&#xff1a;为一个没有OOM&#xff08;内存溢出&a…...

js项目生产环境中移除 console

1、terser-webpack-plugin webpack 构建的项目中安装使用 安装&#xff1a; npm install terser-webpack-plugin --save-dev 配置 在webpack.config.js文件中 new TerserPlugin({terserOptions: {output: {comments: false, // 去除注释},warnings: false, // 去除黄色警告,co…...

ROS2 + 科大讯飞 初步实现机器人语音控制

环境配置&#xff1a; 电脑端&#xff1a; ubuntu22.04实体机作为上位机 ROS版本&#xff1a;ros2-humble 实体机器人&#xff1a; STM32 思岚A1激光雷达 科大讯飞语音SDK 讯飞开放平台-以语音交互为核心的人工智能开放平台 实现步骤&#xff1a; 1. 下载和处理科大讯飞语音模…...

HTML5新增的input元素属性:placeholder、required、autofocus、min、max等

HTML5 大幅度地增加与改良了 input 元素的属性&#xff0c;可以简单地使用这些属性来实现 HTML5 之前需要使用 JavaScript 才能实现的许多功能。 下面将详细介绍这些新增的 input 元素的属性。 属性说明属性说明placeholder在输入框显示描述性或提示性文本autocomplete是否保…...

Cornerstone3D导致浏览器崩溃的踩坑记录

WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost ⛳️ 问题描述 在使用vue3vite重构Cornerstone相关项目后&#xff0c;在Mac本地运行良好&#xff0c;但是部署测试环境后&#xff0c;在window系统的Chrome浏览器中切换页面会导致页面崩溃。查看Chrome的任务管理器&am…...

【鸿蒙学习笔记】Stage模型

官方文档&#xff1a;Stage模型开发概述 目录标题 Stage模型好处Stage模型概念图ContextAbilityStageUIAbility组件和ExtensionAbility组件WindowStage Stage模型-组件模型Stage模型-进程模型Stage模型-ArkTS线程模型和任务模型关于任务模型&#xff0c;我们先来了解一下什么是…...

Docker进入MongoDB

先是命令行开启docker镜像&#xff0c;然后进入docker镜像&#xff0c;这是两步 进入之后&#xff0c;开头会变成root&#xff0c;我的理解是进入了另一个linux系统了&#xff0c;直接执行相应的软件 这里直接use databse就是进入了&#xff0c;据说MongoDB是慢启动&#xff0c…...

APP与API:魔法世界的咒语与念咒者

1. 什么是API&#xff1f; API&#xff0c;即应用程序编程接口&#xff08;Application Programming Interface&#xff09;&#xff0c;就像是魔法世界中的咒语。API是两个独立软件系统之间进行通信和数据交换的桥梁。通过API&#xff0c;一个软件系统可以调用另一个软件系统中…...

云计算安全需求分析与安全保护工程

云计算基本概念 云计算&#xff08;Cloud Computing&#xff09;是一种通过互联网提供计算资源和服务的技术。它允许用户按需访问和使用计算资源&#xff0c;如服务器、存储、数据库、网络、安全、分析和软件应用等&#xff0c;而无需管理底层基础设施。以下是云计算的基本概念…...

七天.NET 8操作SQLite入门到实战 - 第二天 在 Windows 上配置 SQLite环境

前言 SQLite的一个重要的特性是零配置的、无需服务器&#xff0c;这意味着不需要复杂的安装或管理。它跟微软的Access差不多&#xff0c;只是一个.db格式的文件。但是与Access不同的是&#xff0c;它不需要安装任何软件&#xff0c;非常轻巧。 七天.NET 8操作SQLite入门到实战…...

操作系统——进程的状态与转换

...

80. UE5 RPG 实现UI显示技能冷却进度功能

在上一篇文章里&#xff0c;我们实现了通过GE给技能增加资源消耗和技能冷却功能。UI也能够显示角色能够使用的技能的UI&#xff0c;现在还有一个问题&#xff0c;我们希望在技能释放进去冷却时&#xff0c;技能变成灰色&#xff0c;并在技能冷却完成&#xff0c;技能可以再次使…...

Vue2-集成路由Vue Router介绍与使用

文章目录 路由&#xff08;Vue2&#xff09;1. SPA 与前端路由2. vue-router基本使用创建路由组件声明路由链接和占位标签创建路由模块挂载路由模块 3. vue-router进阶路由重定向嵌套路由动态路由编程式导航导航守卫 本篇小结 更多相关内容可查看 路由&#xff08;Vue2&#xf…...

TemuAPI接口:获取商品详情功能

temu作为拼多多海外的跨境电商平台&#xff0c;已经在海外电商领域崭露头角&#xff0c;越来越多的外贸人选择temu作为发展平台。今天的接口可以用于获取temu平台的商品详情&#xff0c;包括价格、商品图片、规格、评论等内容&#xff0c;如有需要&#xff0c;请点击文末链接或…...

deepstream读取mp4文件及不同类型视频输入bug解决

在deepstream中使用mp4文件&#xff0c;与rtsp类似&#xff0c;使用uridecodebin即可&#xff0c;&#xff08;可见官方test.py文件&#xff09; def create_source_bin(index, uri):print("Creating source bin")# Create a source GstBin to abstract this bins c…...

如何告别模组管理噩梦:XXMI启动器的3个革命性解决方案

如何告别模组管理噩梦&#xff1a;XXMI启动器的3个革命性解决方案 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 你是否曾经为管理多个游戏的模组而感到头疼&#xff1f;每个游…...

利用Taotoken模型广场为不同AI应用场景挑选最合适的模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用Taotoken模型广场为不同AI应用场景挑选最合适的模型 在构建AI驱动的应用时&#xff0c;一个常见的挑战是如何为不同的功能模块…...

Claude Code 架构深度解析:一文搞懂 Sub-Agent、Skill 与底层模型之间的协同机制

Claude Code 架构深度解析&#xff1a;一文搞懂 Sub-Agent、Skill 与底层模型之间的协同机制 Claude Code 凭什么成为 AI 编程工具市场占有率第一&#xff1f;本文深入拆解其内部四层架构——Skill 拦截层、Claude Code 编排器、Sub-Agent 执行层、底层大模型推理层——带你彻底…...

苹果手机快速开启开发者模式教程(iOS 16+)

在Mac Xcode 给 iPhone 安装自签 IPA、做苹果 App 打包测试时,iOS 16 及以上的系统第一次启动这类"非 App Store 来源"的 App,都会弹一个 “需要启用开发者模式” 的提示,点"好"就退出了,App 根本进不去。 这是苹果从 iOS 16 开始加的安全限制:任何用开发…...

AMD Ryzen终极调试工具:硬件级性能调优完全指南

AMD Ryzen终极调试工具&#xff1a;硬件级性能调优完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitcode.…...

如何快速掌握uesave:Unreal引擎存档编辑的完整指南

如何快速掌握uesave&#xff1a;Unreal引擎存档编辑的完整指南 【免费下载链接】uesave Rust library and CLI to read and write Unreal Engine save files 项目地址: https://gitcode.com/gh_mirrors/ue/uesave uesave是一款专门用于处理Unreal引擎游戏存档文件的开源…...

YOLO26 ONNX Runtime 部署实战:告别NMS后处理,边缘推理新标杆

🚀 YOLO26 ONNX Runtime 部署实战:告别NMS后处理,边缘推理新标杆 摘要: Ultralytics 重磅推出的 YOLO26 不仅在精度上实现了代际飞跃,更在架构层面进行了颠覆性革新——彻底移除了传统的 NMS(非极大值抑制)后处理环节。本文将带你深入了解 YOLO26 的核心优势,并基于 …...

手把手教你给老旧JLink V8“续命”:AT91-ISP搭配SAM-PROG刷机全记录

手把手教你给老旧JLink V8“续命”&#xff1a;AT91-ISP搭配SAM-PROG刷机全记录 当你的JLink V8突然罢工&#xff0c;电脑反复提示"无法识别的USB设备"&#xff0c;先别急着给它判死刑。这款经典调试工具采用的AT91SAM7S64主控芯片&#xff0c;其实有着惊人的"复…...

DiffSinger歌声合成:3大技术革新与完整部署指南

DiffSinger歌声合成&#xff1a;3大技术革新与完整部署指南 【免费下载链接】DiffSinger An advanced singing voice synthesis system with high fidelity, expressiveness, controllability and flexibility based on DiffSinger: Singing Voice Synthesis via Shallow Diffu…...

5分钟上手:用VMagicMirror打造你的虚拟形象分身

5分钟上手&#xff1a;用VMagicMirror打造你的虚拟形象分身 【免费下载链接】VMagicMirror VRM Software for Windows to move avatar with minimal devices. 项目地址: https://gitcode.com/gh_mirrors/vm/VMagicMirror VMagicMirror是一款专为Windows设计的开源虚拟角…...