def getCode(imgByte, codeType): chaojiying = Chaojiying_Client('zx454049162', '454049162', '909168') # 用户中心>>软件ID 生成一个替换 96001 print(chaojiying.PostPic( imgByte, codeType)) # 1902 验证码类型 官方网站>>价格体系 3.4+版 print 后要加() json = chaojiying.PostPic(imgByte, codeType) result = json['pic_str'] print('result:%s' % result) return result
r'input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="(.*?)" />', page_text, re.I)[0] print(VIEWSTATE, __VIEWSTATEGENERATOR) #解析验证码图片img中的src属性 tree = etree.HTML(page_text) code_img_url = 'https://so.gushiwen.cn/' + tree.xpath( '//*[@id="imgCode"]/@src')[0] img_data = session.get(url=code_img_url, headers=headers).content #验证码保存到本地 with open('./code.jpg', 'wb') as fp: fp.write(img_data) #调用打码平台的示例程序进行验证码图片数据识别 #输入超级鹰账号密码 chaojiying = Chaojiying_Client('xxx', 'xxx', '96001') # 用户中心>>软件ID 生成一个替换 96001 im = open('code.jpg', 'rb').read() # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要// code_info = chaojiying.PostPic(im, 1902) print(code_info) #小写改成大写 code = code_info['pic_str'].upper() print(code) #实际登录操作 login_url = 'https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx' data = { '__VIEWSTATE': VIEWSTATE, '__VIEWSTATEGENERATOR': __VIEWSTATEGENERATOR, 'from': 'http://so.gushiwen.cn/user/collect.aspx', 'email': 'xxx.com', #使用自己账号 'pwd': 'xxxx', #使用自己密码
int(location['x']), int(location['y']), int(location['x'] + size['width']), int(location['y'] + size['height']), ) print(rangle) i = Image.open('./aa.png') code_img_name = './code.png' #crop 根据指定区域进行图片裁剪 frame = i.crop(rangle) frame.save(code_img_name) #将验证码图片提交给超级鹰进行识别 #替换自己账号密码 chaojiying = Chaojiying_Client('xxx', 'xxx', '96001') # 用户中心>>软件ID 生成一个替换 96001 im = open('code.png', 'rb').read() # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要// result = chaojiying.PostPic(im, 9004) #['pic_str'] #9004 验证码格式 print(result) result = result['pic_str'] pos_list = [] if '|' in result: list_1 = result.split('|') count_1 = len(list_1) for i in range(count_1): xy_list = [] x = int(list_1[i].split(',')[0]) y = int(list_1[i].split(',')[1]) xy_list.append(x) xy_list.append(y) pos_list.append(xy_list)
def getCodeText(filename, codeType): chaojiying = Chaojiying_Client('Echoyay', '0822CNTTge', '914431') # 用户中心>>软件ID 生成一个替换 96001 im = open(filename, 'rb').read() # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要// return chaojiying.PostPic(im, codeType)
print(rangle) '''至此验证码图片区域确定''' #裁剪验证码区域 #实例化Image对象 i = Image.open('./a.png') code_img_name = './code.png' #crop根据指定区域进行图片裁剪 frame = i.crop(rangle) frame.save(code_img_name) #因为显示偏移导致截图时调整了页面,在截图操作之后还需要将页面调回,否则定位不到原位置 bro.execute_script('document.body.style.zoom="1"') #识别图片 chaojiying = Chaojiying_Client('Echoyay', '0822CNTTge', '914431') # 用户中心>>软件ID 生成一个替换 96001 im = open('code.png', 'rb').read() # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要// result = chaojiying.PostPic(im, 9004)['pic_str'] print('result:', result) all_list = [] #要存储即将被点击的点的坐标,存储形式 [[x1,y1],[x2,y2]] if '|' in result: list_1 = result.split('|') count_1 = len(list_1) for i in range(count_1): xy_list = [] x = int(list_1[i].split(',')[0]) y = int(list_1[i].split(',')[1]) xy_list.append(x) xy_list.append(y) all_list.append(xy_list) else: