抖音 滑块验证方案 s_v_web_id 参数分析

简介: 抖音 滑块验证方案 s_v_web_id 参数分析



本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!

抖音web端 s_v_web_id 参数生成分析与实现

操作环境

  • win10
  • Python3.9

分析

s_v_web_id 作用:web端使用滑块后的s_v_web_id 参数可以实现免signature验证s_v_web_id 生成:在验证码中间页的html中的fp参数就是s_v_web_id详细介绍这边就不在赘述,可以参考下玺佬的文章:s_v_web_id介绍生成方案:

  • Python + selenium 自动化过滑块
  • RPC远程调用自动,验证滑块

这两种方案有个前提是页面必须出现滑块才可以(之前搜素视频会强制滑块效验),具体过滑块的方法玺佬都已经分享过。现在应该是web端有更新,现在搜索页面只有综合会出点选验证,视频和用户页面都没有强制滑块验证了,清cookie和开无痕都没办法触发滑块,经过几天的分析研究出以下方案最新解决方案:

  • 通过js生成滑块s_v_web_id
  • 识别滑块
  • 生成验证参数并验证
  • 验证通过后就可正常使用了

2022-8-6 更新:报错当前网络不稳定,请稍后再试

问题:下载验证码图片报错:当前网络不稳定,请稍后再试解决:在请求参数中增加参数 "app_name": ""  


通过js生成滑块s_v_web_id

functioncreate_s_v_web_id() {

   vare="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split("")

     , t=e.length

     , n= (newDate).getTime().toString(36)

     , r= [];

   r[8] =r[13] =r[18] =r[23] ="_",

   r[14] ="4";

   for (varo, i=0; i<36; i++)

       r[i] || (o=0|Math.random() *t,

       r[i] =e[19==i?3&o|8 : o]);

   return"verify_"+n+"_"+r.join("")

}

此方法生成的s_v_web_id是不可以用来采集评论的,评论验证使用的s_v_web_id需要从页面取下来,然后在拿着过滑块,此处再次感谢玺佬@李玺


识别滑块

defcalculate_distance(self, pic1_path, pic2_path):

   """

   计算滑块到缺口的距离

   """

   img1 = self.clear_white(pic1_path)

   img1 = cv2.cvtColor(img1, cv2.COLOR_RGB2GRAY)

   slide = cv2.Canny(img1, 100, 200)

   img2 = cv2.imread(pic2_path, 0)

   back = cv2.Canny(img2, 100, 200)

   slide_pic = cv2.cvtColor(slide, cv2.COLOR_GRAY2RGB)

   back_pic = cv2.cvtColor(back, cv2.COLOR_GRAY2RGB)

   x, y = self.template_match(slide_pic, back_pic)

   dis_x = int((x+5) * (340/552))

   dis_y = int(y* (340/552))

   returndis_x, dis_y

defget_tracks(self, distance, _y):

   """

   获取轨迹参数

   """

   tracks = list()

   y, v, t, current = 0, 0, 1, 0

   mid = distance*3/4

   exceed = random.randint(40, 90)

   z = random.randint(30, 150)

   whilecurrent< (distance+exceed):

       ifcurrent<mid/2:

           a = 2

       elifcurrent<mid:

           a = 3

       else:

           a = -3

       a /= 2

       v0 = v

       s = v0*t+0.5*a* (t*t)

       current += int(s)

       v = v0+a*t

       y += random.randint(-3, 3)

       z = z+random.randint(5, 10)

       tracks.append([min(current, (distance+exceed)), y, z])

   whileexceed>0:

       exceed -= random.randint(0, 5)

       y += random.randint(-3, 3)

       z = z+random.randint(5, 9)

       tracks.append([min(current, (distance+exceed)), y, z])

   tr = []

   fori, xinenumerate(tracks):

       tr.append({

           'x': x[0],

           'y': _y,

           'relative_time': x[2]

       })

   returntr


生成验证参数并验证

captchaBody需要js生成

defcaptcha_verify(self, s_v_web_id, captchaBody):

   url = "aHR0cHM6Ly92ZXJpZnkuc25zc2RrLmNvbS9jYXB0Y2hhL3ZlcmlmeQ=="

   params = {

       "os_type": "2",

       "fp": s_v_web_id,

       "subtype": "slide",

   }

   data = {

       'captchaBody': captchaBody

   }

   r = self._parse_url(url=url, params=params, data=json.dumps(data))

   returnr.json()

效果

识别率成功率还是可以的


本文仅供学习交流使用,如侵立删!
相关文章
|
13天前
|
弹性计算 负载均衡 安全
云端问道-Web应用上云经典架构方案教学
本文介绍了企业业务上云的经典架构设计,涵盖用户业务现状及挑战、阿里云业务托管架构设计、方案选型配置及业务初期低门槛使用等内容。通过详细分析现有架构的问题,提出了高可用、安全、可扩展的解决方案,并提供了按量付费的低成本选项,帮助企业在业务初期顺利上云。
|
2月前
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
110 1
|
4月前
|
安全 应用服务中间件 开发工具
Web安全-SVN信息泄露漏洞分析
Web安全-SVN信息泄露漏洞分析
232 2
|
3月前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
167 0
|
4月前
|
Web App开发 前端开发 JavaScript
Web前端项目的跨平台桌面客户端打包方案之——CEF框架
Chromium Embedded Framework (CEF) 是一个基于 Google Chromium 项目的开源 Web 浏览器控件,旨在为第三方应用提供嵌入式浏览器支持。CEF 隔离了底层 Chromium 和 Blink 的复杂性,提供了稳定的产品级 API。它支持 Windows、Linux 和 Mac 平台,不仅限于 C/C++ 接口,还支持多种语言。CEF 功能强大,性能优异,广泛应用于桌面端开发,如 QQ、微信、网易云音乐等。CEF 开源且采用 BSD 授权,商业友好,装机量已超 1 亿。此外,GitHub 项目 CefDetector 可帮助检测电脑中使用 CEF
525 3
|
5月前
|
安全 前端开发 PHP
构建与验证表单:传统PHP与Laravel框架的比较分析——探索Web开发中表单处理的优化策略和最佳实践
【8月更文挑战第31天】在 Web 开发中,表单构建与数据验证至关重要。传统 PHP 方法需手动处理 HTML 表单和数据验证,而 Laravel 框架则提供了一种更现代、高效的解决方案。本文通过对比传统 PHP 和 Laravel 的方法,探讨表单构建与验证的最佳实践。Laravel 通过简洁的语法糖、内置的数据过滤和验证机制,显著提升了代码的安全性和可维护性,适用于大型项目或需要快速开发的场景。然而,在追求灵活性的小型项目中,直接使用 PHP 仍是不错的选择。了解两者的优劣,有助于开发者根据项目需求做出最佳决策。
44 0
|
5月前
|
开发者 Java 前端开发
Struts 2验证框架:如何让数据校验成为Web开发的隐形守护者?揭秘前后端一致性的秘诀
【8月更文挑战第31天】在现代Web开发中,数据验证对确保应用健壮性和良好用户体验至关重要。随着前后端分离架构的普及,保证数据校验一致性尤为关键。Struts 2 验证框架基于 JavaBean 验证 API(JSR 303/JSR 380),允许开发者通过注解或 XML 配置轻松定义验证规则,确保输入数据在执行业务逻辑前已通过验证。此外,Struts 2 支持与前端 JavaScript 验证相结合,确保前后端数据校验一致,提升用户体验。通过注解、XML 配置和资源文件,开发者可以轻松定义和调整验证规则,实现前后端一致的数据校验,提高应用健壮性。
59 0
|
5月前
|
安全 Java 云计算
JSF 应用究竟何去何从?云端部署能否成为其全新突破点?快来一探究竟!
【8月更文挑战第31天】本文介绍了将JavaServer Faces(JSF)应用部署到云平台的过程。首先,根据成本、功能、可靠性和安全性选择合适的云平台。接着,展示了构建简单JSF应用的示例代码。最后,以AWS Elastic Beanstalk为例,详细说明了部署流程。部署至云端可提升应用的可用性、扩展性和安全性。
55 0
|
5月前
|
开发者 缓存 数据库
【性能奇迹】Wicket应用的极速重生:揭秘那些让开发者心跳加速的调优秘技!
【8月更文挑战第31天】在软件开发中,性能优化是确保应用快速响应和高效运行的关键。本书《性能调优:Apache Wicket应用的速度提升秘籍》详细介绍了如何优化Apache Wicket应用,包括代码优化、资源管理、数据库查询优化、缓存策略及服务器配置等方面。通过减少不必要的组件渲染、优化SQL查询、使用缓存和调整服务器设置等方法,本书帮助开发者显著提升Wicket应用的性能,确保其在高并发和数据密集型场景下的稳定性和响应速度。
50 0
|
5月前
|
开发框架 前端开发 JavaScript
探索现代Web开发中的框架选择:Blazor、Angular和React的全面比较与分析
【8月更文挑战第31天】随着Web开发技术的发展,选择合适的框架对项目成功至关重要。本文对比了三大前端框架:Blazor、Angular和React。Blazor是微软推出的.NET Web客户端开发框架,支持C#编写前端代码;Angular由Google支持,基于TypeScript,适用于大型应用;React是由Facebook维护的高效JavaScript库。
124 0