kill captcha
Project description
Kcaptcha API文档
Latest Version: 1.0.3
pip install kcaptcha==1.0.3
更新
2022-04-18:
- 修复打包时未能正确包含数据文件的问题。
2022-04-17:
-
已通过pypi发布。可通过
pip install kcaptcha安装。(但是不想写文档!先忍一下[doge])from kcaptcha.core import SlideKiller slide_killer = SlideKiller() # test slide match mode with open('imgs/slide_match_target_1.jpg', 'rb') as f: test_match_target = f.read() with open('imgs/slide_match_bg_1.jpg', 'rb') as f: test_match_background = f.read() match_result = slide_killer.match(test_match_target, test_match_background, simple_target=True, target_threshold=(200, 300), method=4, background_threshold=(100, 200), debug=True, border=True)
-
增加了debug参数,用来显示识别过程中各阶段的图片,方便调整阈值参数。
一、概述
通过 API 提供字符型验证码识别、滑块验证码的滑动距离识别、点选验证码的点击位置识别服务。
HOST: 192.168.0.155:9898
| 功能 | URI | 备注 |
|---|---|---|
| 通用字符型验证码识别 | /common/ocr/file | 通过开源的onnx格式ai模型实现 |
| 通用点选验证码识别 | /common/det/file | 通过开源的onnx格式ai模型实现 |
| 通用滑块验证码识别-匹配模式 | /common/slide-match/file | 通过cv库实现 |
| 通用滑块验证码识别-对比模式 | /common/slide-match/file | 通过cv库实现 |
| 极验文字点选验证码识别 | /geetest/order-click/file | 通过cv库及ai模型实现 |
可以处理的验证码示例如下:
-
通用字符型验证
-
通用点选(不带语序,仅目标识别)
-
通用滑块-匹配模式
适用于能获取滑块图片(target_img)及带缺口背景图(bg_img)的滑块验证码,返回滑块的位置
-
通用滑块-比较模式
适用于能获取完整背景图及带缺口背景图的滑块验证码,返回滑动距离
-
极验文字点选验证码识别
按顺序点选文字验证码,图标形式暂未实现。
二、通用字符型验证码
1. 请求参数(POST)
| 名称 | 类型 | 必填 | 示例 | 描述 |
|---|---|---|---|---|
| img | String | 是 | 图片二进制文件 | 图片的二进制文件,调用时把图片二进制文件放入到HTTP body 中上传即可。 |
2. 返回数据
| 名称 | 类型 | 示例 | 描述 |
|---|---|---|---|
| code | Integer | 200 | 状态码 |
| msg | String | "" | 状态描述 |
| results | String | "jepv" | 识别结果 |
3. 请求示例
import requests
url = HOST + '/common/ocr/file'
img_file_path = {Your Img Filepath}
files = {
'img': ('img', open(img_file_path, 'rb'))
}
response = requests.post(url, files=files)
4. 响应示例
{"code": 200, "results": "jepv", "msg": ""}
三、通用点选型验证码
1. 请求参数(POST)
| 名称 | 类型 | 必填 | 示例 | 描述 |
|---|---|---|---|---|
| img | String | 是 | 图片二进制文件 | 图片的二进制文件,调用时把图片二进制文件放入到HTTP body 中上传即可。 |
2. 返回数据
| 名称 | 类型 | 示例 | 描述 |
|---|---|---|---|
| code | Integer | 200 | 状态码 |
| msg | String | "" | 状态描述 |
| results | Array | [[131, 53, 182, 103], [214, 52, 258, 96]] | 识别结果:列表每项为一个四元组,该四元组表示一个区域,分别为左上x坐标、左上y坐标、右下x坐标、右下y坐标。 |
3. 请求示例
import requests
url = HOST + '/common/det/file'
img_file_path = {Your Img Filepath}
files = {
'img': ('img', open(img_file_path, 'rb'))
}
response = requests.post(url, files=files)
4. 响应示例
{"code": 200, "results": [[131, 53, 182, 103], [214, 52, 258, 96], [299, 105, 350, 154], [292, 17, 341, 65]], "msg": ""}
四、通用滑块验证码识别-匹配模式
1. 请求参数(POST)
| 名称 | 类型 | 必填 | 示例 | 描述 |
|---|---|---|---|---|
| target_img | String | 是 | 图片二进制文件 | 滑块图片的二进制文件,调用时把图片二进制文件放入到HTTP body 中上传即可 |
| bg_img | String | 是 | 图片二进制文件 | 带缺口背景图片的二进制文件,调用时把图片二进制文件放入到HTTP body 中上传即可 |
| method | Integer | 否 | 4 | 进行滑块匹配的算法模式,可选值为0~4,具体算法含义可参考cv2的文档 |
| target_threshold_min | Integer | 否 | 100 | 滑块图二值化处理的最小阈值 |
| target_threshold_max | Integer | 否 | 300 | 滑块图二值化处理的最大阈值 |
| background_threshold_min | Integer | 否 | 100 | 背景图二值化处理的最小阈值 |
| background_threshold_max | Integer | 否 | 130 | 背景图二值化处理的最大阈值 |
| border | Bool | 否 | True | 对滑块图片处理时是否添加边框 |
注:因各类滑块验证码存在差异,当发现识别准确率不高时,可尝试调整 method、target_threshold_min、target_threshold_max、background_threshold_min、background_threshold_max、border 参数
2. 返回数据
| 名称 | 类型 | 示例 | 描述 |
|---|---|---|---|
| code | Integer | 200 | 状态码 |
| msg | String | "" | 状态描述 |
| results | Object | {"target_y": 0, "target": [191, 116, 259, 184]} | 识别结果:target_y 为Y轴方向上移动的距离;target 为缺口位置,以四元组表示,分别为左上x坐标、左上y坐标、右下x坐标、右下y坐标。 |
3. 请求示例
import requests
url = HOST + '/common/slide-match/file'
target_img_file_path = {Your Img Filepath}
bg_img_file_path = {Your Img Filepath}
data = {
'method': 4,
'target_threshold_min': 100,
'target_threshold_max': 300,
'background_threshold_min': 100,
'background_threshold_max': 130,
'border': True
}
files = {
'target_img': ('img', open(target_img_file_path, 'rb')),
'bg_img': ('img', open(bg_img_file_path, 'rb')),
}
response = requests.post(url, files=files, data=data)
4. 响应示例
{"code": 200, "results": {"target_y": 0, "target": [191, 116, 259, 184]}, "msg": ""}
五、通用滑块验证码识别-对比模式
1. 请求参数(POST)
| 名称 | 类型 | 必填 | 示例 | 描述 |
|---|---|---|---|---|
| full_bg_img | String | 是 | 图片二进制文件 | 完整背景图片的二进制文件,调用时把图片二进制文件放入到HTTP body 中上传即可 |
| bg_img | String | 是 | 图片二进制文件 | 带缺口背景图片的二进制文件,调用时把图片二进制文件放入到HTTP body 中上传即可 |
2. 返回数据
| 名称 | 类型 | 示例 | 描述 |
|---|---|---|---|
| code | Integer | 200 | 状态码 |
| msg | String | "" | 状态描述 |
| results | Object | {'target': [124, 79]} | 识别结果:target 为缺口位置,以二元组表示,分别为缺口左侧距做边框的距离、纵坐标。 |
3. 请求示例
import requests
url = HOST + '/common/slide-compare/file'
full_bg_img_path = {Your Img Filepath}
bg_img_path = {Your Img Filepath}
files = {
'full_bg_img': ('img', open(full_bg_img, 'rb')),
'bg_img': ('img', open(bg_img_path, 'rb')),
}
response = requests.post(url, files=files)
4. 响应示例
{"code": 200, "results": {'target': [124, 79]}, "msg": ""}
六、极验文字点选验证码识别
1. 请求参数(POST)
| 名称 | 类型 | 必填 | 示例 | 描述 |
|---|---|---|---|---|
| img | String | 是 | 图片二进制文件 | 图片的二进制文件,调用时把图片二进制文件放入到HTTP body 中上传即可。 |
2. 返回数据
| 名称 | 类型 | 示例 | 描述 |
|---|---|---|---|
| code | Integer | 200 | 状态码 |
| msg | String | "" | 状态描述 |
| results | Array | [{"char": "松", "target": [149, 125, 207, 182]}, {"char": "油", "target": [9, 242, 67, 300]}, {"char": "醇", "target": [94, 25, 156, 87]}] | 识别结果:按顺序返回识别结果,每项中char为识别的字,target为一个四元组,分别为左上x坐标、左上y坐标、右下x坐标、右下y坐标。 |
3. 请求示例
import requests
url = HOST + '/geetest/order-click/file'
img_file_path = {Your Img Filepath}
files = {
'img': ('img', open(img_file_path, 'rb'))
}
response = requests.post(url, files=files)
4. 响应示例
{"code": 200, "results": [{"char": "松", "target": [149, 125, 207, 182]}, {"char": "油", "target": [9, 242, 67, 300]}, {"char": "醇", "target": [94, 25, 156, 87]}], "msg": ""}
Todo:
-
通过pypi发布,以提供更便捷的使用方式
-
增加可选的debug功能:调用时可返回中间的过程图,方便调整阈值等参数提高准确率
-
极验图标点选验证
-
极验语序点选验证码
-
计算式验证码处理
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kcaptcha-1.0.3.tar.gz.
File metadata
- Download URL: kcaptcha-1.0.3.tar.gz
- Upload date:
- Size: 15.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
597f1d2b15c5db1ea8f41253dd35212745f1c6b80461e64725095ec7fd39bcd8
|
|
| MD5 |
a0f54722a3a5475ccc296fca8aadd937
|
|
| BLAKE2b-256 |
6f7b191f5c7e51cfaebbff2cd12920a880b92e54c51d97e5ad1fb087399d395d
|
File details
Details for the file kcaptcha-1.0.3-py3-none-any.whl.
File metadata
- Download URL: kcaptcha-1.0.3-py3-none-any.whl
- Upload date:
- Size: 75.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4021ed48a6be6870e3e66903a069c4bcb35cd9b69fc27965643c2ec3eb18339e
|
|
| MD5 |
d0a5417738594ff9fe2ce21b6fd9d30f
|
|
| BLAKE2b-256 |
13ac8e97a15bddf7930511ec203b10288eb4f96be17b7b47102cda2229b77c14
|