打码兔的HTTP接口封装


封装打码兔的Python接口

打码兔是一个人工识别验证码的平台,识别率和速度都还不错,有各种语言的支持,也有HTTP接口。
基于Python的HTTP接口是Python3的,如果需要部署到Python2的环境中,可能需要更改代码。
为了省事,可以做成一个HTTP服务,同时,不用每台爬虫机器都部署一遍。

其HTTP接口再 这里

修改代码damatuWeb.py,去掉一些无用函数,填好账号密码。

使用Flask进行封装如下,配置文件settings.py如下:

1
2
3
4
5
6
7
8
#coding=utf-8
UPLOAD_FOLDER = '你的服务目录'
ALLOWED_EXTENSIONS = set(['png','jpg','jpeg'])
USER = '你的账号'
PASSWD = '你的密码'

服务端代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#coding=utf-8
# 服务部署在 本机 上 端口为12345
# 需要Python3环境
import os
from flask import Flask, request, redirect, url_for
from werkzeug import secure_filename
from damatuWeb import DamatuApi
from settings import UPLOAD_FOLDER, ALLOWED_EXTENSIONS, USER, PASSWD
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
def allowed_file(filename):
"""
根据文件名判断是否允许的文件
"""
return '.' in filename and \
filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
@app.route("/", methods=['GET', 'POST'])
def index():
"""
上传图片,交给打码兔打码,返回验证码
上传的图片以内网ip+png命名
"""
try:
# post方法
if request.method == 'POST':
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file_l = os.path.join(app.config['UPLOAD_FOLDER'], filename)
res = file.save(file_l)
dmt = DamatuApi(USER, PASSWD)
try:
code = dmt.decode(file_l, 200)
return code
except Exception as error:
return error
else:
# 用于检测服务是否可用
return "Server OK!"
except Exception as error:
return error
if __name__ == "__main__":
app.run(host='0.0.0.0', port=12345, debug=True, threaded=True)

使用时,需要安装下Python3,然后运行服务,调用接口,就能识别验证码了。