仅用在学习交流,如有侵权,联系删除。
仅用在学习交流,如有侵权,联系删除。
仅用在学习交流,如有侵权,联系删除。

当前douyin web端,请求cookie中有两个很重要的参数,一个就是s_v_web_id,他又被成为fp参数,今天简单的分析下。

1.滑动验证码

第一步,先找个页面触发出滑块

紧接着打开控制台,找到Application,就可会看到s_v_web_id 参数了。

这里的s_v_web_id 值等于verify_lfhkbdvj_hWnJhmth_cNhn_4AbE_AX8t_BQl75IINjLfr,再找到network窗口,可以看到有一个https://verify.snssdk.com/captcha/get 接口,该接口主要是获取验证码的。

在这个接口中有个fp参数,他们两个的值一模一样。

再打开网页源代码,也可以看到这个参数,说明这个参数在请求页面的时候就返回来了。

当然可以用js 生成出来

function get_fp() {var e = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""), t = e.length, n = (new Date).getTime().toString(36), r = [];r[8] = r[13] = r[18] = r[23] = "_",r[14] = "4";for (var o, 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("")
}

当然也可以用python 实现一下

def get_fp(self):e = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"t = len(e)milliseconds = int(round(time.time() * 1000))base36 = ''while milliseconds > 0:remainder = milliseconds % 36if remainder < 10:base36 = str(remainder) + base36else:base36 = chr(ord('a') + remainder - 10) + base36milliseconds = int(milliseconds / 36)r = base36o = [''] * 36o[8] = o[13] = o[18] = o[23] = '_'o[14] = '4'for i in range(36):if not o[i]:n = 0 or int(random.random() * t)if i == 19:n = 3 & n | 8o[i] = e[n]ret = "verify_" + r + "_" + ''.join(o)return ret

接下来就是处理图片,识别缺口位置获取距离。

第一步要做的是处理图片的空白区域,这里主要清除滑块的空白。

def clear_white(img):# 清除图片的空白区域,这里主要清除滑块的空白img = cv2.imread(img)rows, cols, channel = img.shapemin_x = 255min_y = 255max_x = 0max_y = 0for x in range(1, rows):for y in range(1, cols):t = set(img[x, y])if len(t) >= 2:if x <= min_x:min_x = xelif x >= max_x:max_x = xif y <= min_y:min_y = yelif y >= max_y:max_y = yimg1 = img[min_x:max_x, min_y:max_y]return img1

第二步是获取缺口距离。

def get_slider_point(slider_path, bg_path):"""获取滑块的缺口坐标slider_path: 缺口图片路径bg_path: 背景图片"""# 处理滑块图片img_fg = clear_white(slider_path)slice_edges_img = cv2.Canny(img_fg, 100, 200)slice_edges_color_img = cv2.cvtColor(slice_edges_img, cv2.COLOR_GRAY2RGB)cv2.imwrite(f"./img/slider_cv_.png", slice_edges_color_img)# 处理背景图片img_bg = cv2.imread(bg_path)temp_edges_img = cv2.Canny(img_bg, 100, 200)temp_edges_color_img = cv2.cvtColor(temp_edges_img, cv2.COLOR_GRAY2RGB)cv2.imwrite(f"./img/bg_cv_.png", temp_edges_color_img)# 获得距离tl = template_match(slice_edges_color_img,temp_edges_color_img, f"img/tl_.png")return tl

第三步 模拟滑块轨迹

  def get_reply(self, real_width, real_height):distance = 0ans = []move_arr = []cur = 0start_time = time.time()t_dis = random.randint(520, 1500)# t_dis = 603# print("行驶距离:", t_dis)while distance < real_width:cur += random.randint(10, 20)mod = self.sigmoidx = int(mod(real_width, cur, 3500))if x > real_width:x = real_widthdistance = xans.append({"x": x,"y": real_height,"relative_time": cur})move_arr.append({"x": x,"y": real_height,"time": cur + start_time})return ans, move_arr

第四步是根据加密生成captcha body 值,代码敏感就不贴了。

dGMFEAAAMlBkSjZCa09VdHhENm9uT2VyYW40Sk5pa1VTdkdncmF2AKDN408eKbacFiODqk9oqyqVE5Mt8Q3kHYJtQ27gd6KSwr5HNYiy2tTzZL0bix/cOP4IoHFklM3WydbOXjrBPceEuPnk3IrjlIu+c97gKgH33RUTydeWIsLkDSAGfjxZKIoFMuGJ8QiW8YaUzFEaO/X/mIlFIp42MT5XxU6KBDNGAi6MEGSqYyCJG9uXp4zRP1cOagcS3UklBYlH1Y1gxfLzXdI5S5T+NpMA4qeaHLMv6tzqKInAFjz+qLa4MvnjLbaNrSGrSZQ+BBpNsPoqQfAHQxl/SdwqxzKbMtY9V6HjGvc463rWz7Y16ETsOxJWsEiyCVo+ieQ9+q7dE0PKIznY6BGTxw+8Q9AY8O+K/YqPX/J50sXBKxwSGS5tIRxPw+wDnc2HJJoEugSncaEgH8CUggPa/CP6M83KzJeNhGbCxmu+xs2Yo9q1HGhM6EfTwhXyRtS2vGW5fznOWwW8SnGbE3z3afsx7Fl9l1ljry4SkuvpRVOz2hW/l64uqm0zOz5hy8TjSBprceTi8CoiG+cssnS74XDRpEdz94V8MDrrBFL+bFNPfusxvKYW0NzT8P1VL9R8Yaz22dykReAz3sBBP0jupIT0Z0w0bo4JE7Zh4k+gZji6wXJPISluVbZ6iBoAEyGw/n/32g8dmtwCpsNwSOlLLd8uBGGC+uKNxzrMeWLuQQ/XS/pgbY8LO/w9zCIFFHg/IvlAwTHI7kwUOR4naZv9xH/g657y/+DtXFyOOjvJAO+wkP7hClPyQlvlqS18JQwzjh6yMmKlZMkCMgba9EDIQEJXeMITHny7VKIghN4C2eJvDbhhJx1Vl6Zq46MZQVw7VVON4d/rHRCkbCzagnTF3ZUXPtFLgOT7zNZ3Vc3eBnfP4XZl7moj/nwpGamV7IsohD7OMuxq80JiQQvj8uuBJmNYrXpQ1feECbYeREnCvM4TPA7MrNPU4rahLUMA7PpeR7E7yIZD6IZdrfmC0x7Zx82L244pWssl+qM4JTZtYFHsxZlGnsB57Dik7woABXnf7E6gvJJyPAkihhlnxY1tW+GciLWTKrk8VkRkNmsriKnDozFr5VRWYmf4RNu8C6ekLBj7qugKXUoLRKiYb5W2ApO0spCiqrmLCGH168+DKMc5SJPInL6MhbVdT4qfKDGIBWFsMTpX/3IcbqpPHZhD+qzrepzfqWHbiHZ9e40ydh5qMcxmRQc1xV5lnJKL3Am53Es7X1qNZW9pOIXT8ZT66d0/WwXhcl4nizmpOuX8ShwIGU75Lu3E0+7lxqPTlMeRwAC/YQA7S5msWluMs7msG4IxDNQveGDANmPOry71L4FIK18bAAPmjF1wQEaXjwK1IFFZXZ12jpFT64o5vjFGZgaGFgENkk2s6FsFLnNAC+QHHLIarC4UwH8LilERIAjPysqKv8/T/5YCHB7jSXFgpqh6cDgJCidUGc60+uTSx+ZJD3izClmgJ2

最后一步就是向https://verify.zijieapi.com/captcha/verify 接口发送post请求就可以了。

最后看下效果,滑块就成功过掉了。

通过这种生成的 s_v_web_id 值可以用在用户,视频列表等很多接口。

2.点选验证码

当触动验证码弹出点选类型时,会遇到这种。

背景图:

待识别的文字:

可以使用ddddocr 模块,它使用的是开源训练数据集和模型,去识别文字的坐标。

识别具体坐标如图:

识别对应字:


然后就可以构造请求体了


接下来模拟行为轨迹,构造密文数据

并向接口 https://verify.zijieapi.com/captcha/verify 发起post请求就可以成功过掉滑块了。

最后结果如下:

仅用在学习交流,如有侵权,联系删除。

douyin web端滑动,点选验证码分析相关推荐

  1. 【验证码逆向专栏】某片滑块、点选验证码逆向分析

    声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容.敏感网址.数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许 ...

  2. web端实现rtsp实时推流视频播放可行性方案分析

    1.webrtc 1.1 什么是WebRTC 百度概念:WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下 ...

  3. 2019年末逆向复习系列之今日头条WEB端_signature、as、cp参数逆向分析

    郑重声明:本项目的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,因为滥用技术产生的风险与本人无关. 这篇文章是公众号<云爬虫技术研究笔记>的<2019 ...

  4. web端业务数据管理平台+Axure运营数据管理平台+月度数据统计分析+年度排行榜数据统计页面分析+运营大数据统计管理后台+用户信息管理+Axure通用web端高保真交互业务数据管理平台

    作品介绍:原型内容包含:web端业务数据管理平台+Axure运营数据管理平台+月度数据统计分析+年度排行榜数据统计页面分析+运营大数据统计管理后台+用户信息管理+Axure通用web端高保真交互业务数 ...

  5. 智慧电商erp通用版管理系统+采购管理+仓库管理+订单管理+财务管理+系统管理+Axure高保真交互ERP通用版电商web端管理系统+全局说明+竞品分析+协同办公

    作品介绍:智慧电商erp通用版管理系统+采购管理+仓库管理+订单管理+财务管理+系统管理+Axure高保真交互ERP通用版电商web端管理系统+全局说明+竞品分析+协同办公 原型交互及下载地址请点击: ...

  6. Axure经典案例高保真交互下载(数据统计图高保真原型+雷达图+条形图+折线图+web端通用后台管理原型+统计表、统计分析+用户画像分析)

    Axure原型作品内容包括:数据统计图高保真原型+雷达图+条形图+折线图+web端通用后台管理原型+统计表.统计分析+用户画像分析+认证监控预警 以下是Axure部分作品图片截图展示,想看交互效果的请 ...

  7. 【2021-11-16】小红书web端数美验证码

    声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 文章目录 前言 一.cookie算法 二.滑块验证码 三.流程实现 前言 小红书web端,请求时需携带cookie ...

  8. Web端CAD图形找不同?一键在Web端找出CAD图不同并对比分析

    引言 在实际中,当多专业设计协助时,遇到图纸更新后,要对比图纸找出图纸的不同处,一直是一个比较耗时费力的事情,也是业内的一大痛点.一般CAD新旧图纸的内容对比,包括增加新的图形元素.减少原有的图形元素 ...

  9. 分布式定时任务—xxl-job学习(四)——调度中心web页面端api调用源码分析

    分布式定时任务-xxl-job学习(四)--调度中心web页面端api调用源码分析 前言 一.controller目录下非controller类 1.1 PermissionLimit自定义注解 1. ...

最新文章

  1. 时序图、活动图、状态图、协作图的区别
  2. UITableViewCell高亮时其子视图的状态修改
  3. CDC之CreateCompatibleDC与BitBlt
  4. rabbitmq——镜像队列
  5. NX机制及绕过策略-ret2libc
  6. [vue] 移动端ui你用的是哪个ui库?有遇到过什么问题吗?
  7. 计算机ip地址配置参数,指定电脑的IP地址和DNS等参数配置方法
  8. HRESULT是什么,应该如何理解
  9. 交叉表组件(改造 适用多个子标题)
  10. jqueryvar语句_你真的掌握变量和类型了吗
  11. Linq to xml 示例分析
  12. 云时代数据容灾的正确姿势
  13. HTML颜色与RGB颜色的转换
  14. 最新win10安装版激活方法 一键激活win10
  15. 在odl中怎样实现rpc
  16. 推荐王森的关于j2me开发的2本书!
  17. 【2023计算机考研】双非院校录取分数线汇总
  18. ESP32-C3入门教程 WiFi篇②——WiFi Station 模式连接到 AP 热点接入点
  19. 内置模块:http模块
  20. 程序员笑话集:bug跟蚊子的相似之处

热门文章

  1. Redis搭建主从同步流程及原理
  2. c语言教程二维数组,C语言二维数组几种常用的表示方法
  3. C语言—atoi()、itoa()函数以及my_atoi()、my_itoa()函数详解
  4. 小娜:早上好!开启全新的一天!!
  5. watch与移动服务器的连接已中断,Apple Watch怎么解除与iPhone绑定配对?
  6. 第七篇:HTML文字与图片属性
  7. 知识变现海哥|知识付费 VS 知识免费
  8. 计算机设计大赛志愿服务活动,计算机设计大赛和青马工程招募志愿者啦
  9. 常用电子器件 —— 电阻
  10. 女生教你如何追女孩子