声明(lianxi a15018601872)
本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
前言(lianxi a15018601872)
试了一天的百度验证码训练,下载ps一个个图来转。一直在找怎么训练才可以正确。太累了把图形弄正。弄了几个小时弄了300多张,还有300-400张吸取上次教训标注完一半直接开始训练看看效果这个我个人经验。之前极验点选标注过程出出问题导致后续一直在错误中摸索。训练了5-6回。重16,32,64。最后手动调整参数修改一下陈不不大佬开源的旋转验证码训练代码。有点不懂感觉陈不不大佬的训练项目虽然不是同类型中最好的。但决定是最容易让人看懂的了诠释了然后让一个小白快速人们。虽然我没报他的课,但是还是可以从代码逻辑中看出是一个很好的it培训导师。训练过程中顺便把深圳航空的顶象给弄了。接下来说一下这两部分怎么处理尽量快点写完看 德国打西班牙。
顶象处理思路
这部分代码是以前写的,我debug看了一下canvas构造过程一点没变直接拿代码来用。
def reduction_image(_seq, _img):
"""
用于将图片还原
@param _seq: 图片的序列号,也就是 Sequence方法生成的结果 还原数组
@param _img: 背景图片
@return new img
"""
a = 200 # 假设图片高度为200px
np_image = np.array(_img) # 将背景图片转换为NumPy数组
new_np_img = np.zeros((200, 400, 3), dtype=np.uint8) # 创建一个新的空白图片数组,这里假设宽度为400px
for u in range(0, 32):
c = _seq[u] % 32 * 12 # 计算原图片中切片的x位置
xpos = u * 12 # 计算新图片中切片应该放置的x位置
slice_img = np_image[0:a, c:(c + 12)] # 从原图片中切出一块
n = len(slice_img[0]) # 切片的宽度
new_np_img[0:a, xpos:(xpos + n)] = slice_img # 将切片放置到新图片的对应位置上
return new_np_img # 返回新的图片数组
第一次请求
params = {
"w": "330",
"h": "165",
"s": "50",
"ak": ak,
"c": c,
"jsv": "5.1.49",
"aid": f"dx-{int(time.time()*1000)}-32232197-1",
"wp": "1",
"de": "0",
"uid": "undefined",
"lf": "0",
"tpc": "",
"t": "CC999B881AF4A3DA358978FDEB4D109479F4270417255497323BF8D9CFB9BFE4CC3B1235E6B4D3AF34E0EA0AA80AC16134C88846E2A05ACE5C9D3A317FE86B6B0F36CB078A978905578DC10B63601053",
"cid": "97991961",
"_r": random.random()
}
第二次请求
data = {
"ac": ac,
"ak": ak,
"c": c,
"uid": "undefined",
"jsv": "5.1.49",
"sid": sid,
"aid": f"dx-{int(time.time()*1000)}-73294134-1",
"x": x,
"y": y,
"w": "330",
"h": "165"
}
主要说一下ac处理。分别三步。init,recordSA , an.sendTemp({ "xpath": "/html/body/div[1]", "x": x, "y": y })处理这三个就可以了。
补环境检测了什么
自动化getAttribute return null就行了。document.body.length和document.documentElement.length,其他都是很常见的问题。
遗留问题
我记得顶象每天会动态更换文件,所以文件一换请求的false。目前有一个思路。但是没时间搞,明天把图标完再说吧。
百度验证码怎么训练
下载不不大佬的项目到本地,把训练次数弄大一点,我测了64次才可以正常开始识别。32,16识别的很乱。同时对图片自己进行处理。就可以。
顶象运行结果
百度验证码测试结果
训练次数不是很多,测试了一下至少整体是的。增加图片和训练次数应该可以解决。