用Python代码怎样实现滑块安全验证的效果
Admin 2022-09-09 群英技术资讯 499 次浏览
网易易盾滑块验证,就长下面这个样子
具体验证原理有兴趣的可自行查询官方文档:网易易盾开发文档
话不多少,借助之前写阿里云盾滑块和极验滑块的经验,直接上代码,详细可参考:[python3 破解 geetest(极验)的滑块验证码功能]极验滑块验证
def open(self): # 初始化浏览器 wait = WebDriverWait(self.driver, 5) # 点击对应标签 self.driver.get(cfg.TEST_URL) button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, cfg.HD_SELECOTR))) button.click() self.tc_item = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, cfg.TC_SELECOTR))) self.tc_item.click() # 得到背景和滑块的item, 以及滑动按钮 time.sleep(2) self.background_item = wait.until( EC.presence_of_element_located((By.CSS_SELECTOR, cfg.BG_SELECOTR)) ) self.slider_item = wait.until( EC.presence_of_element_located((By.CSS_SELECTOR, cfg.HK_SELECOTR)) ) self.slider_btn = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, cfg.HD_BTN))) self.offset = cfg.offset self.background_path = cfg.background_path self.slider_path = cfg.slider_path
def get_images(self): """ 获取验证码图片 :return: 图片的location信息 """ url = selenium_item.get_attribute("src") if url is not None: response = requests.get(url) with open(path, "wb") as f: f.write(response.content) img = Image.open(path).resize(size) img.save(path) else: class_name = selenium_item.get_attribute("class") js_cmd = ( 'return document.getElementsByClassName("%s")[0].toDataURL("image/png");' % class_name ) im_info = self.driver.execute_script(js_cmd) im_base64 = im_info.split(",")[1] im_bytes = base64.b64decode(im_base64) with open(path, "wb") as f: f.write(im_bytes) img = Image.open(path).resize(size) img.save(path) def compute_gap(self, array): """ 计算缺口偏移 """ grad = np.array(array > 0) h, w = grad.shape # img_show(grad) rows_sum = np.sum(grad, axis=1) cols_sum = np.sum(grad, axis=0) left, top, bottom = 0, 0, h # get the top index p = np.max(rows_sum) * 0.5 for i in range(h): if rows_sum[i] > p: top = i break for i in range(h - 1, -1, -1): if rows_sum[i] > p: bottom = i break p = np.max(cols_sum) * 0.5 for i in range(w): if cols_sum[i] > p: left = i break return top, bottom + 1, left
def get_tracks(distance): v = random.randint(0, 2) t = 1 tracks = [] cur = 0 mid = distance * 0.8 while cur < distance: if cur < mid: a = random.randint(2, 4) else: a = -random.randint(3, 5) s = v * t + 0.5 * a * t ** 2 cur += s v = v + a * t tracks.append(round(s)) tracks.append(distance - sum(tracks)) return tracks
def move_to_gap(self, track): """滑动滑块""" print('第一步,点击滑动按钮') slider = self.wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'geetest_slider_button'))) ActionChains(self.driver).click_and_hold(slider).perform() time.sleep(1) print('第二步,拖动元素') for track in track: ActionChains(self.driver).move_by_offset(xoffset=track, yoffset=0).perform() # 鼠标移动到距离当前位置(x,y) time.sleep(0.0001)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了通过Python实现创建语音识别控制系统,能利用语音识别识别说出来的文字,根据文字的内容来控制图形移动,感兴趣的同学可以关注一下
这篇文章主要为大家介绍了python人工智能遗传算法示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
使用pyplot的errorbar()函数可以快速绘制误差棒图,errorbar()函数的语法格式如下所示:该函数常用参数的含义如下。x,y:表示数据点的位置。·xerr,yerr:表示数据的误差范围。
Tkinter实现上述功能并不复杂,只要使用Tkinter的相关组件和一些简单的逻辑处理即可,在编写这个案例的过程中大家要做到温故而知新。程序代码如下所示:fromtkinterimport
imutils是在OPenCV基础上的一个封装,达到更为简结的调用OPenCV接口的目的,它可以轻松的实现图像的平移,旋转,缩放,骨架化等一系列的操作。本文将用其实现图像的旋转操作,感兴趣的可以学习一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008