极验验证码的图片还原
极验验证码的图片还原思路
1.获取图片地址
由上方的图片获取到图片的地址,完整链接需要地址前方+"https://static.geetest.com/"
请求图片之后得到混淆的图片
上方乱序的图片需要进行重组才会得到正常的图片,直接上代码: 下面展示一些 内联代码片。
// A code block var foo = bar;
def get_merge_image(imurl): # 传入带缺口信息的图片的地址 location_list = [{ "x": -157, "y": -58}, { "x": -145, "y": -58}, { "x": -265, "y": -58}, { "x": -277, "y": -58}, { "x": -181, "y": -58}, { "x": -169, "y": -58}, { "x": -241, "y": -58}, { "x": -253, "y": -58}, { "x": -109, "y": -58}, { "x": -97, "y": -58}, { "x": -289, "y": -58}, { "x": -301, "y": -58}, { "x": -85, "y": -58}, { "x": -73, "y": -58}, { "x": -25, "y": -58}, { "x": -37, "y": -58}, { "x": -13, "y": -58}, { "x": -1, "y": -58}, { "x": -121, "y": -58}, { "x": -133, "y": -58}, { "x": -61, "y": -58}, { "x": -49, "y": -58}, { "x": -217, "y": -58}, { "x": -229, "y": -58}, { "x": -205, "y": -58}, { "x": -193, "y": -58}, { "x": -145, "y": 0}, { "x": -157, "y": 0}, { "x": -277, "y": 0}, { "x": -265, "y": 0}, { "x": -169, "y": 0}, { "x": -181, "y": 0}, { "x": -253, "y": 0}, { "x": -241, "y": 0}, { "x": -97, "y": 0}, { "x": -109, "y": 0}, { "x": -301, "y": 0}, { "x": -289, "y": 0}, { "x": -73, "y": 0}, { "x": -85, "y": 0}, { "x": -37, "y": 0}, { "x": -25, "y": 0}, { "x": -1, "y": 0}, { "x": -13, "y": 0}, { "x": -133, "y": 0}, { "x": -121, "y": 0}, { "x": -49, "y": 0}, { "x": -61, "y": 0}, { "x": -229, "y": 0}, { "x": -217, "y": 0}, { "x": -193, "y": 0}, { "x": -205, "y": 0}] bg_img = self.sess.get(imurl, verify=False, timeout=3).content bg_img = io.BytesIO(bg_img) im = Image.open(bg_img) im_list_upper = [] im_list_down = [] for location in location_list: if location[y] == -58: im_list_upper.append(im.crop((abs(location[x]), 58, abs(location[x]) + 10, 116))) # 有关参数的介绍请看下方的crop方法的介绍, 可自行调整 if location[y] == 0: im_list_down.append(im.crop((abs(location[x]), 0, abs(location[x]) + 10, 0 + 58))) new_im = Image.new(RGB, (260, 116)) # 生成的图片的大小, 可调整 x_offset = 0 for im in im_list_upper: new_im.paste(im, (x_offset, 0)) x_offset += im.size[0] x_offset = 0 for im in im_list_down: new_im.paste(im, (x_offset, 58)) x_offset += im.size[0] return new_im # 将重组之后的图片进行返回 也可直接使用 new_im.save("./captcha.png") 保存