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

简介: 抖音web端 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
  • 识别滑块
  • 生成验证参数并验证
  • 验证通过后就可正常使用了

通过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()

效果

识别率成功率还是可以的


本文仅供学习交流使用,如侵立删!
相关文章
|
2月前
|
安全 应用服务中间件 开发工具
Web安全-SVN信息泄露漏洞分析
Web安全-SVN信息泄露漏洞分析
187 2
|
1月前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
134 0
|
6月前
|
XML 存储 Java
11:Servlet中初始化参数的获取与应用-Java Web
11:Servlet中初始化参数的获取与应用-Java Web
106 3
|
3月前
|
人工智能 自然语言处理 搜索推荐
【人工智能】人工智能(AI)、Web 3.0和元宇宙三者联系、应用及未来发展趋势的详细分析
人工智能(AI)、Web 3.0和元宇宙作为当前科技领域的热门话题,它们之间存在着紧密的联系,并在各自领域内展现出广泛的应用和未来的发展趋势。以下是对这三者联系、应用及未来发展趋势的详细分析
69 2
【人工智能】人工智能(AI)、Web 3.0和元宇宙三者联系、应用及未来发展趋势的详细分析
|
3月前
|
安全 Java 云计算
JSF 应用究竟何去何从?云端部署能否成为其全新突破点?快来一探究竟!
【8月更文挑战第31天】本文介绍了将JavaServer Faces(JSF)应用部署到云平台的过程。首先,根据成本、功能、可靠性和安全性选择合适的云平台。接着,展示了构建简单JSF应用的示例代码。最后,以AWS Elastic Beanstalk为例,详细说明了部署流程。部署至云端可提升应用的可用性、扩展性和安全性。
48 0
|
3月前
|
开发者 缓存 数据库
【性能奇迹】Wicket应用的极速重生:揭秘那些让开发者心跳加速的调优秘技!
【8月更文挑战第31天】在软件开发中,性能优化是确保应用快速响应和高效运行的关键。本书《性能调优:Apache Wicket应用的速度提升秘籍》详细介绍了如何优化Apache Wicket应用,包括代码优化、资源管理、数据库查询优化、缓存策略及服务器配置等方面。通过减少不必要的组件渲染、优化SQL查询、使用缓存和调整服务器设置等方法,本书帮助开发者显著提升Wicket应用的性能,确保其在高并发和数据密集型场景下的稳定性和响应速度。
47 0
|
3月前
|
开发框架 前端开发 JavaScript
探索现代Web开发中的框架选择:Blazor、Angular和React的全面比较与分析
【8月更文挑战第31天】随着Web开发技术的发展,选择合适的框架对项目成功至关重要。本文对比了三大前端框架:Blazor、Angular和React。Blazor是微软推出的.NET Web客户端开发框架,支持C#编写前端代码;Angular由Google支持,基于TypeScript,适用于大型应用;React是由Facebook维护的高效JavaScript库。
85 0
|
3月前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
|
3月前
|
存储 数据可视化 前端开发
Web Audio API 第5章 音频的分析与可视化
Web Audio API 第5章 音频的分析与可视化
|
6月前
|
安全 网络安全 数据库
01-Web 网络安全纵观与前景分析
01-Web 网络安全纵观与前景分析

热门文章

最新文章

下一篇
无影云桌面