腾讯视频去广告实践

闲话不表,去除腾讯视频广告步骤:

  1. 通过请求某个视频在浏览器中的地址,分析页面返回,获取视频的vid
  2. 拼接接口地址,请求tx的某接口,获取视频的真实地址
  3. 通过selinum的webdriver,向chrome 传入真实的视频地址

下面分别通过python实现这三个步骤的

首先,定义一个qq视频处理对象,此文件命名为 txvideo.py,导入相关包

import time  
import re  
import json  
from urllib import request  
from selenium import webdriver  
  
class TxVideo:  
    def __init__(self, burl):  
        self.qqurl = burl  
        #保存可能的异常信息
        self.error = []

step1:

获取视频的vid,就是通过正则找到一个href 链接,得到链接尾部的一个值,即 vid, 实际上就是获取html 页面的这一行:
<link rel="canonical" href="https://v.qq.com/x/cover/mzc00200v8raugd/u00339s31q1.html" /> 中的 u00339s31q1

def _get_vid2(self):  
    '''通过urllib分析vids,可免于上一方法中打开页面还是播放广告'''  
  headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}  
    req = request.Request(self.qqurl, headers\=headers)  
    html = request.urlopen(req).read().decode('utf-8')  
    #with open("video.html", 'w', encoding='utf-8') as f:  
 #    f.write(html)  match = re.search(r'canonical.\*?(\w+)\.html', html)  
    return match.group(1)

注意需要设置 http header 的user-agent, 可以替换为你自身浏览器的头。

step2

def _get_keys(self, vid):  
  jurl = 'http://vv.video.qq.com/getinfo?vids={0}&platform=101001&charge=0&otype=json'.format(vid)  
  
 # 返回的内容并不是json,而是 QZOutputJson={xxx} # 去掉头部的xx= 和尾巴上的 ; 
  jdata = json.loads(content[13:len(content)-1])  
    #这个json的层次很深,还不如直接用正则匹配  
  p = jdata['vl']['vi'][0]  
  urls = p['ul']['ui']  
    #找到其中链接为 vlive.qqvideo  qqvideo = None  
  for item in urls:  
        if item["url"].find('vlive.qqvideo')>0 or item["url"].find('video.dispatch')>0:  
            qqvideo = item["url"]  
            break  
  
 if qqvideo is None:  
        self.error.append('未找到qqvideo相关链接,可尝试其它链接')  
        return None  
  return qqvideo, p["fn"], p["fvkey"]

step3

视频类的主入口,如果传入了的bopen 参数为 True 则打开chrome,直接播放

def getTrueMedia(self, bopen):  
    vid = self._get_vid2()  
    print("vid:", vid)  
    if vid is None:  
        return  
  keys = self._get_keys(vid)  
  #print("keys:", keys)  
  if len(keys) != 3:  
        self.error.append('分析JSON数据失败')  
        return  
  turl = '{0}{1}?vkey={2}'.format(keys[0], keys[1], keys[2])  
  
  if bopen:  
        self.driver = webdriver.Chrome('./lib/chromedriver.exe')  
        self.driver.get(turl)  
  
   return turl

使用方法:

通过在控制台传入视频地址,如下所示:
python view.py https://v.qq.com/x/cover/mzc0...

view.py 入口文件,接受控制台参数,简单如下

import sys  
from txvideo import TxVideo  
  
def main():  
    if len(sys.argv) == 1:  
        print("请输入tx视频网页地址")  
        return  
  
  txv = TxVideo(sys.argv[1])  
    #分析真实的url,并打开页面播放  
  txv.getTrueMedia(True)  
    errors = txv.geterror()  
    if errors is not None:  
        print(errors)  
  
  
if __name__ == '__main__':  
    main()

后记:

以上代码逻辑比较简单的,核心在于分析真实地址的流程,比较费劲,这里参考的是网上分析结果,如果tx的开发人员稍作改动,以上代码就会失效,截至到 2020.1.4 还可以。
另外在将代码从 pycharm 复制到此编辑器时,总是会增加 如还有多余的 请自行清除

参考:https://mp.weixin.qq.com/s/ea...

Image placeholder
Jim007
未设置
  78人点赞

没有讨论,发表一下自己的看法吧

推荐文章
微博广告策略工程架构体系演进

概述 1.广告样式与场景 上图是微博广告目前商业场景流,“一屏四大流”。“一屏”指打开微博的Fashion,“四大流”指占据微博商业化的主体,包括关系信息流、热门流、评论流和热搜流。右图为广告投放的

微软张若非:搜索引擎和广告系统,那些你所不知的AI落地技术

这两年,被誉为“ 皇冠上的明珠”的自然语言处理领域发展愈发火热,成为了业内新宠,而 搜索和广告这两大老牌技术领域似乎已被大家遗忘。其实,这两大接地气的工程领域仍是各企业竞相抢夺的市场之一。近日,AI科

【读书笔记】计算广告(第2部分)

作者:LogM本文原载于https://segmentfault.com/u/logm/articles,不允许转载~本文是计算广告(第二版)的读书笔记。该部分介绍在线广告产品的逻辑,面向产品、运营、

腾讯优图 OCR Composer 包

支持身份证识别 行驶证/驾驶证识别 通用识别 营业执照识别 银行卡识别 手写体识别 车牌识别 名片识别 环境需求PHP>7.1 composer 安装composerrequiredoododo/oc

对话蒋杰、丁奇,腾讯云数据库之路

此前,笔者曾经就腾讯云数据库战略升级一事写过一篇文章,对腾讯云数据库聚焦“云原生”“自治”“超融合”三大方向背后原因,以及怎样理解腾讯云数据库战略升级与五大新品、三大方向的关系进行了分析。近日,在腾讯

腾讯基于全时态数据库技术的数据闪回

作者简介:李海翔,网名“那海蓝蓝”,腾讯金融云数据库技术专家。中国人民大学信息学院工程硕士企业导师。著有《数据库事务处理的艺术:事务管理和并发访问控制》、《数据库查询优化器的艺术:原理解析与SQL性能

腾讯财报背后的小秘密:转型路上的未知

8月14日,腾讯发布第二季度财报,不凑巧的是,当日欧市盘中,美国2年期与10年期国债利率发生2007年来首次倒挂,引起市场对经济衰退的恐慌,美股三大指数均暴跌3%。8月15日,中国香港恒生指数低开1.

腾讯汤道生:产业互联网时代,安全成为CEO的一把手工程

产业互联网日益成为众多行业实现转型,获得发展新动能的趋势性选择,政务、金融、医疗、出行、教育、零售、工业等垂直领域,正在全面拥抱产业互联网。网络安全作为互联网的基础保障,在产业互联网发展和企业数字化升

写速度提升20%,Elasticsearch 创始人给腾讯云发感谢信

近日,Elasticsearch的创始人兼首席执行官ShayBanon向腾讯云发出了一封感谢信,专程对腾讯团队为Elasticsearch开源社区做出的贡献表示了感谢。据了解,腾讯工程师通过提交代码,

从关系型数据库到分布式机器学习,揭秘腾讯大数据十年发展历程

大数据技术在过去10多年中极大改变了企业对数据的存储、处理和分析方式。如今,大数据技术逐渐成熟,涵盖了计算、存储、数仓、数据集成、可视化、NOSQL、OLAP分析、机器学习等丰富领域。在未来,大数据技

DTCC 干货 | 腾讯营销数据平台

摘要:广告平台是一个数据驱动的平台,数据在系统中高效流动,形成闭环,产生价值。腾讯广告系统每天有上百亿次请求量,以及上百T的数据,保证数据流的稳定可靠和高性能是数据系统的核心问题。对于数据分析场景,腾

如何理解腾讯云数据库战略升级?

近日,腾讯云数据库在京正式启动战略升级,宣布未来将聚焦云原生、自治、超融合三大战略方向,以用户为中心,联接未来。并在现场面向全球用户同步发布五大战略级新品,包括数据库智能管家DBbrain、云数据库T

打通“边-云”连接 英特尔携手腾讯加速5G&MEC落地

随着5G的到来,边缘计算在5G的应用场景中起到了很好的连接作用。首先实现了移动网络和应用的连接,可以使得业务在5G网络上得到更高质量的交互;其次,5G的边缘计算可以实现2B和2C业务的连接,2B业务能

走出腾讯和阿里,大厂员工转型记

脉脉研究院的《人力迁徙:2019》显示,过去的一年里,互联网公司出来的人,大部分又被互联网公司消化了。人才的来源和去向依然指向各大互联网公司。主流互联网从业者“出圈”并不多见。相对于大环境对所有行业的

腾讯数据库专家雷海林分享智能运维架构

2019年5月8日-10日的DTCC2019年中国数据库大会上,腾讯云数据库专家工程师雷海林首受邀做了主题为《TDSQL智能运维平台-扁鹊架构与实践》的技术分享,以下为大会现场演讲实录。雷海林在大会现

专访腾讯云数据库负责人丁奇:打造超越用户想象的产品

“就市场份额来说,腾讯云在国内还不是第一名,但从国内上云企业比例看,剩余的还有很多,因此,大家都还有机会,就看谁能真正解决用户的痛点。”                                

腾讯林晓斌:数据库的高易用性如何实现?

腾讯云基于QQ、微信、腾讯游戏等海量业务的技术锤炼,从基础架构到精细化运营,从平台实力到生态能力建设,腾讯云将之整合并面向市场,使之能够为企业和创业者提供集云计算、云数据、云运营于一体的云端服务体验。

腾讯万亿级 Elasticsearch 技术解密

作者: johngqjiang,腾讯TEG云架构平台部研发工程师Elasticsearch(ES)作为开源首选的分布式搜索分析引擎,通过一套系统轻松满足用户的日志实时分析、全文检索、结构化数据分析等多

腾讯云游戏行业整体解决方案

点击观看大咖分享随着游戏行业的迅猛发展,游戏行业竞争日益加剧,好的用户体验度和快速反应能力成为游戏网站发展的关键。游戏行业整体解决方案将能够为游戏厂商提供优质全面便捷的服务。腾讯云结合自身在云计算业务

校准产品质量,把控出海航向,腾讯WeTest《2019中国移动游戏质量白皮书》正式开放预约

每当步入一个新的年份,温故知新是我们常常做的事。对于不少游戏人来说,刚过去的2019年是一个新起点,也是一个修养生息、应对挑战的年份。这一年,国产网络游戏版号新政的落实,使得国内市场产品门槛更加抬高,

腾讯7年老员工遭暴力裁员,官方回应:该员工工作成果不匹配岗位要求

01腾讯回应暴力裁员近日,有自称腾讯7年老员工的网友发文称,人到中年,被腾讯暴力裁员。文中提到,2019年3月某天下午,腾讯HR派出大批保安单方面暴力裁员,让很多保安逼迫其收拾东西离开,当场封掉工卡等

阿里云视频点播转码

阿里云点播SDK下载安装地址:https://helpcdn.aliyun.com/document_detail... 阿里云点播上传SDK下载地址:https://helpcdn.aliyun.c

天翼云视频云储存解决方案,高效解决云储存难题

随着科技发展,视频监控迈向深度智能时代,前端摄像机开始内置深度学习算法,可以对人脸、车辆等关键信息进行快速定位抓拍,有效解决漏抓误报问题,解决了传统智能视频分析技术人工选择特征准确率低、浅层学习模型无

YouTube 的视频推荐是如何实现的?

最近,谷歌研究人员发表了一篇论文,并在RecSys2019(丹麦哥本哈根)的论坛上公布,论文中对他们的视频平台Youtube用户视频推荐方式进行了阐述。在这篇文章中,笔者将试着总结我阅读这篇论文后的发

如何选择视频会议设备?

视频会议是企业的必备品。它可以降低差旅成本、鼓励协作、让员工移动办公,并使企业更容易被客户和合作伙伴认可。企业的产品和服务可以通过网络访问;通过视频会议为您的团队提供支持,使他们能够与企业品牌一起航行