本文仅供学习交流使用,如侵立删!

记一次 网易易盾滑块验证分析并通过

操作环境

  • win10 、 mac
  • Python3.9
  • selenium、PIL、numpy、scipy、matplotlib

分析

网易易盾滑块验证,就长下面这个样子



具体验证原理有兴趣的可自行查询官方文档:网易易盾开发文档

话不多少,借助之前写阿里云盾滑块和极验滑块的经验,直接上代码,详细可参考:[阿里云盾滑块验证]极验滑块验证(https://cenjy.blog.csdn.net/article/details/124357598)

解决方案

使用selenium请求url,并触发滑块验证

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)

效果


资源下载

https://download.csdn.net/download/qq_38154948/85343666


本文仅供学习交流使用,如侵立删!

【原创】Python 网易易盾滑块验证的更多相关文章

  1. Python 阿里云盾滑块验证

    本文仅供学习交流使用,如侵立删! 记一次阿里云盾滑块验证分析并通过 操作环境 win10 . mac Python3.9 selenium.pyautogui 分析 最近在做中国庭审公开网数据分析的时 ...

  2. 网易易盾最新一代Java2c加固究竟有什么厉害之处?

    导语:几个月前,网易易盾正式推出Java2c加固.它以独有的"静态保护"技术,使得应用程序中的代码出现"下沉",达到不可逆的效果,兼顾"冷热启动时间& ...

  3. 解读网易易盾新一代IoT安全编译器Maze

    一.网易易盾为什么会推出安全编译器Maze? 随着5G时代的到来,会有越来越多的物联网设备走进我们的生活,然而物联网的终端本身普遍处于白盒环境中,***者很容易获取相关的信息进行***,这个时候如果不 ...

  4. C# 调用网易“易盾” Web API

    易盾是网易推出的反垃圾云服务,最近准备试用一下,但发现api文档中只提供了Java, Python, PHP的示例代码,却没有C#的示例代码,于是参照Java示例代码用C#实现了一下. Java中用H ...

  5. selenium自动爬取网易易盾的验证码

    我们在爬虫过程中难免会遇到一些拦路虎,比如各种各样的验证码,时不时蹦出来,这时候我们需要去识别它来继续我们的工作,接下来我将爬取网一些滑动验证码,然后通过百度的EasyDL平台进行数据标注,创建模型, ...

  6. 【原创】Python 极验滑块验证

    本文仅供学习交流使用,如侵立删! 记一次 极验滑块验证分析并通过 操作环境 win10 . mac Python3.9 selenium.seleniumwire 分析 最近在做的一个项目登录时会触发 ...

  7. 网易云易盾CTO朱浩齐:我们是如何用AI赋能内容安全?

    本文由  网易云发布. 5月19日,LiveVideoStack携手网易云易盾,共同打造了“娱乐多媒体开发应用实践”专题,帮助开发者和泛娱乐平台运营人员,提升技术能力,突破难点,拓展思路与视野. 在专 ...

  8. python3+django2 开发易语言网络验证(上)

    创作背景: 在某论坛中下载到一套php开发易语言网络验证的教程,照着看下来,花了两天的时间,结果发现教程里开发的网络验证,以及随着教程一起给学员的源码,都存在着根本用不了的bug!我想要看看能不能在原 ...

  9. python3+django2 开发易语言网络验证(中)

    第四步:网络验证的逻辑开发 1.将model注册到adminx.py中 1.在apps/yanzheng目录下新建admin.py 文件,添加代码: import xadmin from xadmin ...

随机推荐

  1. 【多线程】线程强制执行 join()

    线程强制执行 join() Join合并线程,待此线程执行完成后,再执行其他线程,其他线程阻塞 : 可以想象成插队. 代码示例: /** * @Description 测试join方法 * @Auth ...

  2. 12┃音视频直播系统之 WebRTC 实现1对1直播系统实战

    一.搭建 Web 服务器 前面我们已经实现过,但是没有详细说HTTPS服务 首先需要引入了 express 库,它的功能非常强大,用它来实现 Web 服务器非常方便 同时还需要引入 HTTPS 服务, ...

  3. k8s client-go源码分析 informer源码分析(4)-DeltaFIFO源码分析

    client-go之DeltaFIFO源码分析 1.DeltaFIFO概述 先从名字上来看,DeltaFIFO,首先它是一个FIFO,也就是一个先进先出的队列,而Delta代表变化的资源对象,其包含资 ...

  4. Beyond Compare文件对比神器,快来给文件找茬!

    在工作中很多场景下都需要比对两个文件之间的差异,你是否还傻傻的同时打开两个文件,用眼睛一行一行的核对? 赶紧来试试这个神器Beyond Compare!!它可以快速的帮你找出两个文件的差异,而且还有其 ...

  5. C++primer第二章

    第二章 :变量和基本类型 2.1 基本内置类型 C++定义了一套包含算术类型(arithmetic type)和空类型(void)在内的基本数据类型 2.1.1 算术类型 算术类型的分类: 整型(in ...

  6. TL,你是如何管理项目风险的?

    沙包和打伞的故事 美国在1961年到1972年组织实施的一系列载人登月飞行任务.目的是实现载人登月飞行和人对月球的实地考察,为载人行星飞行和探测进行技术准备,它是世界航天史上具有划时代意义的一项成就. ...

  7. Canal-监听数据库表的变化

    1. 简介 Canal是阿里巴巴旗下的一款开源项目,纯Java开发.基于数据库增量日志解析,提供增量数据订阅&消费功能. 工作原理 Mysql主备复制原理 MySQL master 将数据变更 ...

  8. ExtJS配置TabPanel可以拖拽Tab标签页

    1.环境说明 ExtJS版本:7.4.0.42 Sencha Cmd: v7.5.1.20 开发工具:WebStorm 2022.1.1 PS:如果是老版本的ExtJS,引入Ext.ux.TabReo ...

  9. SAP 文本框多行输入

    REPORT zjw_test01. CONSTANTS: gc_text_line_length TYPE i VALUE 72. TYPES: text_table_type(gc_text_li ...

  10. MYSQL中IF IN语句

    以下代码摘自后台管理系统中的一部分SQL语句: 当取数状态为1或2时,才展示取数时间,否则,取数时间展示为空 当申报状态为2.3.4或5时,才展示申报时间,否则,申报时间展示为空 select A.Q ...