https://github.com/ForgQi/bilibiliupload

 在chrome的headless环境下,FFmpeg处理视频流,模拟B站登录,验证登陆成功率还可以,视频分割,线程池控制并发,下载和上传独立,扩展性很强,扩展网站只用写plugin代码继承下载基类即可。

 原项目由星际圈子里的ForgQi大佬开发,我现在在二次开发。ForgQi的服务器过期后,由我接手,部署在vultr上(超级费流量)。

 斗鱼的流包已失效,现在主要想办法解决这个问题。

部署流程:

  1. 必须要为64位的linux,32位的chrome和driver很难下载了,官网停止更新

  2. VPS:Ubuntu 18.04.2 LTS,16的也可。

  3. 安装chrome

#下载
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
#安装
sudo dpkg -i google-chrome-stable_current_amd64.deb

这样下载chrome是最新的,我的版本是V73.0.XXX版本,google-chrome --version,dpkg的过程中可能会出现一些错误,参考:

最后再重新dpkg就行了。

  1. 安装chromedriver,chromedriver版本必须和chrome版本对应,网上有很多博客给出了对应关系表,但是对我chrome都是老版本了,没有找到对应,最后还好在官网找到了我的版本对应的:

    可能是后来官网发现对应chrome的版本确实容易出问题,后面的dirver版本直接用chrome的版本为名建文件夹。

地址:http://chromedriver.storage.googleapis.com/index.html

安装后解压,放在/usr/bin 中,记得给这个执行权限,否则程序最后会出错,(我直接给了777。chmod 755 ./chromedriver)

  1. 安装pyhon3-dev的版本,只安装python3没用,后面跑起来巨多错误(比如“No Module named Setuptools”),缺少很多module,

python是应用app,包含了基础的python库和python运行环境。
python-dev是基于python的一个扩展开发包,包含了更高级的库。在开发一些高级功能的项目时有可能需要用到。

我们的程序同样需要dev版本的环境。

在遇到’ error: command ‘x86_64-linux-gnu-gcc’ failed with exit status 1 '的错误后,google了下,在一个issue的帮助下,试了如下
sudo apt-get install python3 python-dev python3-dev build-essential libssl-dev libffi-dev libxml2-dev libxslt1-dev zlib1g-dev python-pip python-pip3,然后在文件目录里执行pip3 install -r requirements.txt,我当时中间有build失败的信息,但是最后输出的那几个模块安装都成功了,最开始没装dev版本的py,报了很多错。

  1. 安装FFmpeg

sudo add-apt-repository ppa:djcj/hybrid
sudo apt-get update
sudo apt-get install ffmpeg

  1. 测试上传功能的时候,因为classic在播,需要修改config的那个房间号链接,上面的信息不能变,下面的链接换一个没在播的选手链接,因为“会根据配置文件里的名字,找文件上传的,可以把连接改成没开播的,但是名字要在”。

最后先用python3 运行Bilibili.py ,会打印出中间一些东西,因为一开始上传那里还是失败,log里没有什么信息,通过直接用py3执行后打印出了计算B站滑动登录模块的像素值,但是还是不断打印出更新cookie失败,登录这块是通过

模拟人操作滑动验证码,先二值化、灰度处理找到缺口处,得知要移动多少像素,但是会发现拖到位置还是不能通过验证,它会提示拼图被怪物吃了。因为滑动验证码还会分析你拖动的行为,所以我们不能直接拖动到正确位置,要像真的人一样,有加速度,先快后慢,上下抖动,有时候还会拖过再拖回来,这样通过验证的成功率就很高了。

不断打印出更新更新cookie失败感觉b站是不是更新滑动验证的模块,最后准备问下b站的前端朋友,最后控制台突然成功了,原来登录这个是有几率的,,,程序是不断会去尝试直到成功,上传成功后就会删除视频。

  1. 另外一些其他记录

程序不下载,会检测文件,有文件就上传了
或者这个选手下播了就会上传

在event.py中可以控制进程数,主进程一共5个线程,一个主线程,一个reload线程,一个线程池,线程池控制并发量,如果有下载,线程池里其中一个线程会开一个进程处理下载,线程池大小决定能有几个下载,我开了5个。每个进程要么上传要么下载,主进程有三个线程,子线程负责IO操作,主线程下发任务更改变量,每一个周期都会检测开播和文件情况,还会检测代码是否更新,更新的话空闲会重启,选手下载完会直接调用上传,或者等它每一个周期的检测来上传,一般情况是先上传再下载,但是首次登陆cookie或者别的地方可能会出问题,所以它上传失败,如果在播就又去下载了。

一些参考链接:

https://www.jianshu.com/p/366a5da9ed10
https://www.cnblogs.com/EasonJim/p/7113367.html
https://blog.csdn.net/lwgkzl/article/details/77836207
https://github.com/scrapy/scrapy/issues/2115
https://blog.csdn.net/u011748542/article/details/88083358


作者:Lawliet_ZMZ
来源:CSDN
原文:https://blog.csdn.net/major_zhang/article/details/88945455
版权声明:本文为博主原创文章,转载请附上博文链接!

b站搬运直播,监测,下载,上传皆由程序完成,Python大法好相关推荐

  1. 黑马物联PLC远程下载神器 彻底解决您外地PLC下载 上传 监控 修改程序**

    **黑马物联PLC远程下载神器 彻底解决您外地PLC下载 上传 监控 修改程序** 设备发往外地后,客户需要修改程序,怎么样才能快速的解决,这一直是设备人设备公司最纠结最心烦的问题. 派一个技术工程师 ...

  2. 网易自媒体视频,批量修改md5采集下载上传,批量自动去水印加水印软件 今日头条自媒体视频,youtubu...

    网易自媒体视频,批量修改md5采集下载上传,批量自动去水印加水印软件 今日头条自媒体视频,youtubu 视频去重,批量自动去水印加水印软件 快视频,视频消重技术去水印去logo字幕工具 搜狐自媒体视 ...

  3. ubuntu 搭建一个没有上传限制,支持多用户访问,管理用户下载上传,界面优雅,文件互通的网盘(支持nas)

    一个没有上传限制,支持多用户访问,管理用户下载上传,界面优雅,文件互通的网盘! (Alist + Samba) 运行环境 ubuntu 20.04 Alist `Alist` 官网  https:// ...

  4. java下载上传远程文件

    利用的是SMB协议从远程服务器下载上传文件 可以在本地做一个共享文件夹放点东西来测试下 这是用到的jar包[jcifs-1.2.3.jar],不能设置0积分有点可惜.(https://download ...

  5. 腾讯云服务器带宽Mbps下载上传速度表(附计算公式)

    腾讯云服务器1M公网带宽下载速度是128KB/秒,5M带宽下载速度是512KB/s,腾讯云10M带宽下载速度是1.25M/秒,腾讯云百科来详细说下腾讯云服务器不同公网带宽实际下载速度及上传速度对照表: ...

  6. WP8.1 Study17:网络之后台下载/上传及HttpClient

    一.后台下载/上传 1.简介 使用BackgroundTransferGroup可以十分方便操作上传及下载文件,BackgroundDownloader和BackgroundUploader类中的方法 ...

  7. linux登录百度网盘下载上传文件

    这里写自定义目录标题 linux登录百度网盘下载上传文件 linux登录百度网盘下载上传文件 参考一下的三个地址: 1.https://blog.csdn.net/huojiahui22/articl ...

  8. 文件上传与下载----上传

    实现web开发中的文件上传功能,需完成如下二步操作:     1.在web页面中添加上传输入项.    2.在servlet中读取上传文件的数据,并保存到本地硬盘中.       在web页面中添加上 ...

  9. appStore上传苹果应用程序软件发布流程

    首先确定帐号是否能发布, https://developer.apple.com/account,如果你打开Provisioning Portal,然后点击DisTribution看到的是下图中那样, ...

最新文章

  1. python2x NameError: name ‘abc‘ is not defined
  2. 从京东裸辞 2 年后,我的一些改变
  3. 对tmemorystream的一些改进_delphi教程
  4. 通俗易懂地解释遗传算法?有什么例子?
  5. 用python画奥迪标志_不知道不 OK!53 个 Python 经典面试题详解
  6. SharePoint 2010 同步用户Services 一直Starting 终极解决方案
  7. ABAP runtime error CALL_FUNCTION_ILL_DECFLOAT_LEN
  8. jQuery是什么,jQuery入门简介
  9. python文件读写方法手机_python读取文件—txt文件常用读写操作
  10. Python内置函数int()高级用法
  11. Windows 8 Directx 开发学习笔记(五)山峰河谷模型的简单实现
  12. paip.提升效率---源码生成流程图工具
  13. JSP内置对象实例实训报告
  14. 互联网日报 | 5月17日 星期一 | 高德地图月平均日活超1亿;阿里影业新设“锦鲤拿趣”潮玩品牌;爱奇艺会员开放平台正式启动...
  15. MATLAB模糊控制器
  16. 微信支付商户平台扫码登录说明
  17. html图片与文字的排版6,前端开发学习笔记(六)- Css 文字排版
  18. matlab 生成伽罗华域中元素代码
  19. python读取sheet_python读取excel文件中所有sheet表格
  20. Neo4j REST API使用实例---ttlsa教程系列之neo4j(二)

热门文章

  1. 不写代码、年薪百万,带你玩赚ChatGPT提示工程-高级提示
  2. 为了能入职互联网大厂,我有多拼命
  3. 四川大学计算机应用基础考试试题,几个有关计算机基础的题目!!!~~
  4. 有望成为“美容院第一股”美丽田园通过港交所上市ipo聆讯
  5. Android IBinder 通信详解
  6. Java实现画图面板
  7. 面向对象程序设计 - 农夫过河 - Java
  8. [转载]汇总各浏览器核心(js引擎及排版引擎)深究
  9. jakarta.servlet.Filter is in unnamed module of loader java.net.URLClassLoader去除
  10. SQL Server研习录(24)——Windows Server 2012 R2安装数据库时提示KB2919355安装问题解决