图鉴实际应用_requests+图鉴_session_同时拿验证码和登录_验证码图片为4个纯数字

# 图鉴网址:图片识别 - 广告识别 - 目标检测 - 图鉴网络科技有限公司(ttshitu.com)
import base64
import json
import requests
import time


# 一、图片文字类型(默认 3 数英混合):
# 1 : 纯数字
# 1001:纯数字2
# 2 : 纯英文
# 1002:纯英文2
# 3 : 数英混合
# 1003:数英混合2
# 4 : 闪动GIF
# 7 : 无感学习(独家)
# 11 : 计算题
# 1005: 快速计算题
# 16 : 汉字
# 32 : 通用文字识别(证件、单据)
# 66: 问答题
# 49 :recaptcha图片识别
# 二、图片旋转角度类型:
# 29 : 旋转类型
#
# 三、图片坐标点选类型:
# 19 : 1个坐标
# 20 : 3个坐标
# 21 : 3 ~ 5个坐标
# 22 : 5 ~ 8个坐标
# 27 : 1 ~ 4个坐标
# 48 : 轨迹类型
#
# 四、缺口识别
# 18 : 缺口识别(需要2张图 一张目标图一张缺口图)
# 33 : 单缺口识别(返回X轴坐标 只需要1张图)
# 五、拼图识别
# 53:拼图识别
def base64_api(uname, pwd, img, typeid): # 用户名,密码,图片,类型
# with open(img, 'rb') as f: # 图片路劲,地址
# base64_data = base64.b64encode(f.read()) # f.read() 是字节 ==> b64字符串
# b64 = base64_data.decode() # b64是字符串(图片变来的),把b64图片,作为字典v,变成json,直接传
data = {"username": uname, "password": pwd, "typeid": typeid, "image": img}
result = json.loads(requests.post("http://api.ttshitu.com/predict", json=data).text)
if result['success']:
return result["data"]["result"]
else:
# !!!!!!!注意:返回 人工不足等 错误情况 请加逻辑处理防止脚本卡死 继续重新 识别
return result["message"]
# return ""


# requests + 图鉴
def login():
headers = {
'authority': 'admin.ttshitu.com',
'accept': 'application/json, text/javascript, */*; q=0.01',
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
'baidu': 'null',
'deviceid': '168d132ca4d12b0fdbabd478f1f80981',
'origin': 'http://www.ttshitu.com',
'referer': 'http://www.ttshitu.com/',
'sec-ch-ua': '"Not/A)Brand";v="99", "Microsoft Edge";v="115", "Chromium";v="115"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'cross-site',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188',
'x-auth-token': '4c350236-31d5-4f91-9621-b4ca78508a02',
}
params = {
'_': str(int(time.time()*1000)), # 13位的时间戳
}
# 请求到图片地址,提取到图片的b64以及图片的imgId
verify_url = "https://admin.ttshitu.com/captcha_v2" # ?及后面的参数全部不要
session = requests.session() # 必须用 session ,验证码和登录才配套
resp = session.get(verify_url, params=params, headers=headers)
# print(resp.text)
img = resp.json() # 这里拿到的 img['imgId'] ,直接堆到下面data里面,不加引号

# 开始识别
result = base64_api("q6035945", "q6035945", img['img'], 3)
print(result) # 这里打印的是验证码识别后返回的值 这里拿到的 result ,直接堆到下面data里面,不加引号

login_url = "https://admin.ttshitu.com/common/api/login/user" # POST
headers = {
'authority': 'admin.ttshitu.com',
'accept': 'application/json, text/javascript, */*; q=0.01',
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
'baidu': 'null',
'content-type': 'application/json; charset=UTF-8',
'deviceid': '168d132ca4d12b0fdbabd478f1f80981',
'origin': 'http://www.ttshitu.com',
'referer': 'http://www.ttshitu.com/',
'sec-ch-ua': '"Not/A)Brand";v="99", "Microsoft Edge";v="115", "Chromium";v="115"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'cross-site',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188',
'x-auth-token': '4c350236-31d5-4f91-9621-b4ca78508a02',
}
# imgId 不知道的参数,直接复制,在页面源代码和F12里的Elements control+f 查找
data = {
"captcha": result, # 验证码 要识别, 这里不加引号
"imgId": img['imgId'], # 拿到的 img['imgId'] ,这里不要加引号
"developerFlag": False,
"needCheck": True,
"password": "q6035945", # 密码
"userName": "q6035945" # 用户名
}
resp = session.post(login_url, json=data, headers=headers)
print(resp.text)


if __name__ == "__main__":
login()

posted @ 2023-08-05 19:45  严永富  阅读(167)  评论(0)    收藏  举报