我的网站开发技术经验总结 我的网站开发技术经验总结
首页

fangdown

我的网站开发技术经验总结
首页
  • 认识ESM
  • chrome-talend插件,类似postman
  • sequelize 使用及技巧
  • UML工具Power Designer建表
  • sequelize相关操作文档
  • 解决抖音获取签名及并发的问题
    • 概况
    • 分析
    • 解决
    • 总结
      • 核心点:
  • 记一次解决抖音分享页混淆字体,字体图标转UID解决方案
  • 获取抖音用户作品列表信息
  • 获取抖音用户作品列表信息-进阶
  • 获取抖音用户作品列表信息-进阶3
  • 如何根据抖音号获取用户信息
  • 获取用户最新视频
  • 模块化-import和require的区别
  • eslint规范
  • js容错处理
  • js-数组分组,执行promise
  • reduce使用遇到的问题
  • 正则匹配html的元素内容
  • taro 小程序 弹窗层禁止底部滚动
  • 公众号签名问题
  • CentOS7中MariaDB重置密码
  • nginx多域名配置
  • node访问接口,得到乱码的结果,原因-Accept-Encoding
  • node写文件到json中
  • node抓取html内容
  • Node.js使用ES6语法
  • express 使用cors中间件解决跨域
  • node + express + session + redis 进行持久化缓存
  • node中读取文件夹,获取文件名称
  • pm2常用命令
  • 使用pm2管理后台node服务
  • typescript puppeteer支持window及document属性
  • node读取json文件
  • node中使用redis缓存
  • node + github的webhook完成自动部署
  • vuepress-blog的性能优化-CDN
  • CENTOS7下安装REDIS
  • promise then和catch的学习和使用
  • promise在循环中的串行并行用法
  • puppeteer常用知识
  • centos部署安装puppeteer
  • python的学习和使用
  • Taro+TypeScript - Mobx实践
  • 爬虫系列 --- 反爬机制和破解方法汇总
  • 安全-html转码
  • taro中使用animation动画
  • charles 使用
  • Mac下VSCode设置iTerm2终端样式
  • centos一步步完成站点部署
  • 云闪付做地铁的思路
  • 准备技能
  • 备案pc项目介绍
  • 备案小程序项目介绍
  • 小程序二维码扫码功能
  • 小程序域名组件开发
  • 小程序添加水印
  • 规则引擎优化
  • 记一次hooks代替redux的经历
  • 通过nodejs+koa+stream进行服务端图片代理
  • nodeJs接入log4j日志
  • nodejs+typescript项目中添加全局global属性
  • create-react-app 安装 bizcharts 项目崩溃
  • 使用MutationObserver监控dom的变化
  • 服务器重启后启动相关服务
  • moment国际化的问题
  • 项目经验
fangdown
2019-12-31
目录

解决抖音获取签名及并发的问题

# 概况

有一批uid,需要每隔5分钟,查看一次他们的基本信息,如点赞、评论等

# 分析

  1. 按照之前的思路,先通过puppeteer获取签名,然后拿到签名之后再去循环视频列表,拿到最近7天的数据,存储起来
  2. 跑起来之后,因为是串行,一个个执行,花费的时间较长,超过5分钟了, 还有很多没执行,没有达到目标效果,需解决
  3. 解决的思路:把串行改成并行,加快执行速度
    • 并行20, 前面没问题,执行100+数据后,拿不到签名数据了
    • 并行50,前面没问题,下一次执行一个签名都拿不到
    • 并行100,拿不到签名
    • 本地打开用户主页, 空白
    • 各种尝试~奔溃~烧脑
  4. 经过并行的改造,发现在100+数据还算是比较正常的,在一定时间内超过这个数量,基本上就拿不到签名了, 什么原因也不是很清楚, 猜测是访问拦截了,都到不了服务器
  5. 怎么样在并行和有效结果上做更好的处理呢?

# 解决

  1. 解决第一个问题, 请求频繁的问题
  • 不能贪心,一下子请求很多,会造成并发很大,容易被拒绝,还是每次访问5个为佳,依次访问
  • 从总体上分段执行,将目标uid分组,每100个为一组, 每组间隔1分钟执行
  1. 解决有效结果
  • 经过摸索,发现签名是存在有效期的, 大概在10-20分钟左右
  • 把获取签名和获取视频分开,获取的签名存入数据库中,在获取签名的时候从数据库直接取出签名,每隔20分钟执行一次签名更新
  • 获取签名和获取视频最好分ip执行,这样会避免某ip 请求过多
  1. 即使在这样的情况下依然会存在失败, 增加失败容错机制,重复3次获取, 3次后则丢弃

# 总结

经过以上两步,有效的提高了执行速度和成本,既能获取有效数据,又能缩短时间

# 核心点:

  1. 签名分离和存储
  2. 分组执行,间隔停顿
#抖音
上次更新: 2021/12/19, 18:05:42
sequelize相关操作文档
记一次解决抖音分享页混淆字体,字体图标转UID解决方案

← sequelize相关操作文档 记一次解决抖音分享页混淆字体,字体图标转UID解决方案→

最近更新
01
多分支修复撞车的问题
05-01
02
如何成为架构师
01-23
03
服务器部署全过程
11-23
更多文章>
Theme by Vdoing | Copyright © 2019-2026 fangdown | 粤ICP备19079809号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式