用Python代码怎样实现滑块安全验证的效果
Admin 2022-09-09 群英技术资讯 1053 次浏览
这篇文章主要讲解了“用Python代码怎样实现滑块安全验证的效果”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。网易易盾滑块验证,就长下面这个样子
具体验证原理有兴趣的可自行查询官方文档:网易易盾开发文档

话不多少,借助之前写阿里云盾滑块和极验滑块的经验,直接上代码,详细可参考:[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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
1、捕获摄像头和实时显示importcv2importnumpyasnpimportpickleimportmatplotlib.pyplotaspltcap=cv2.VideoCapture(0)whileTrue:ret,frame=cap.read()#Ouroperationsontheframecomehere
这篇文章主要为大家介绍了python人工智能tensorflow函数tf.get_collection使用方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
在图像的处理过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来。本文就介绍了使用分水岭算法实现图像的分割与提取,感兴趣的可以了解一下
我们知道OpenCV是一个用于图像处理、分析、机器视觉方面的开源函数库,这篇文章就主要给大家分享的是有关OpenCv库怎样实现绘制简单的图,小编觉得挺实用的,对新手认识OpenCv库有一定的帮助,因此分享给大家做个参考,接下来一起跟随小编看看吧。
这篇文章主要介绍了Python自然语言处理之切分算法详解,文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008