记录一下西瓜视频MP4地址的获取步骤

目标:

指定西瓜视频地址,如 https://www.ixigua.com/a6562763969642103303/#mid=6602323830,获取其视频MP4文件的下载地址

以下使用chrome浏览器

开始分析:

首先在浏览器中打开视频页面,打开审查元素(右键-> 审查元素  或 F12)并刷新页面,查看network选项中抓到的包

技巧1:

由于我们获取的是视频文件的下载地址,而视频文件一般比较大,所以可以在network的包列表中使用 Size 排序一下 查看最大的几个包

如图:

这里我们很容易就能确定视频文件的地址

http://v11-tt.ixigua.com/5cc4c0ae0f7d6f87014dc0f0058157e0/5bcc7300/video/m/220f87599d445a14a53803fd01d86816e971157c7a70000cab5121742cc/

(你得到的地址和我得到的可能不一样,不过url路径中的最后一串字符串应该是一样的)

下面我们就要寻找这个地址是从哪里获取的,一般做法就是截取url中比较有代表的部分(这个看经验,你应该懂的)来搜索,搜索可以使用chrome审查元素的Search功能

这个搜索会查找network栏中所有包的响应内容,如果搜到的话,我们就可以确定视频文件地址的来源。

为什么这么做呢?

按照正常的想法,首先这个视频文件的获取请求是浏览器发起的,那么浏览器肯定在发起前就得到了视频文件的地址,那么地址存在什么地方呢?一般来说,不外乎直接写

在网页源代码中或者使用一个ajax请求之类的获取一下视频地址,所以这个地址肯定存在于我们目前所能看到的network列表中的包之中。

BUT,在这个例子中,搜索结果为空。尝试各种截取方法  比如 220f87599d445a14a53803fd01d86816e971157c7a70000cab5121742cc、5cc4c0ae0f7d6f87014dc0f0058157e0、v11-tt.ixigua.com

都搜索不到。

好吧,既然搜不到,那我们就用暴力一点的办法,好在这个网页的network包列表并不多,我们就一个一个找就好了,找的过程一般可以忽略css、图片、多媒体等文件,

优先查看json格式的文件

下面人工查看中。。。

查看一遍之后呢,我发现了一个可疑的链接

https://ib.365yg.com/video/urls/v/1/toutiao/mp4/v02004bd0000bc9po7aj2boojm5cta5g?r=048136401358795045&s=3128215333&aid=1190&callback=axiosJsonpCallback1&_=1540123000124

首先,url就很可疑,里面包含各种敏感关键词,如 mp4、urls等

其次,内容可疑:

video_list都出来了,不是它还能是谁呢?但是,定睛一看,这个内容里面的url格式不大对,一看就像是加密过后的,怪不得搜不到呢

下面就是想办法找到解密方法,来验证一下,这里看到的是不是我们想要的视频地址了

先捋一下思路,我们找到的这些数据是浏览器请求回来的,既然请求这些数据,肯定会有用到的地方,下面我们就来找一下这些数据在哪里被使用了,怎么找呢,还是搜索,拿这些数据中的变量名来搜

这些数据中可疑变量有两个:backup_url_1、main_url,第一个一看就是备用的,所以我们拿第二个搜吧

搜索结果如图:

下面在这些包中定位main_url所在的代码,很幸运,第一个就是我们想要的(tt-video.js)

如图:

从代码中我们可以看到,main_url使用了base64decode来进行解密,下面使用代码验证(这个请自行验证)一下,果然得到了我们想要的视频地址

此时,我们已经有了从这个包中获取视频地址的方法了,那么下个问题是,这个包的地址是如何生成的?

首先分析一下这个包的url的组成:

https://ib.365yg.com/video/urls/v/1/toutiao/mp4/v02004bd0000bc9po7aj2boojm5cta5g?r=048136401358795045&s=3128215333&aid=1190&callback=axiosJsonpCallback1&_=1540123000124

首先去掉无关紧要的参数,方法很简单,直接在浏览器中打开这个url,然后尝试删减参数,不断测试就可以了,删减后的url如下

https://ib.365yg.com/video/urls/v/1/toutiao/mp4/&s=

然后发现,其中有三个东西不知道哪里来的,下面继续使用我们的搜索工具来寻找,一个一个来。

(注意:跟随文章一步一步走的时候可能看到的参数和我这里写的参数不一样,请按照实际的来搜索)

先是 v02004bd0000bc9po7aj2boojm5cta5g,搜索结果如下:

原来这个参数是视频的videoId,直接在网页源码中,好,第一个搞定

下面看第二个参数 048136401358795045  搜不到

下面看第三个参数 3128215333  搜不到

后面两个参数都搜不到,可能是实时生成的或者加密了,所以换个思路,用 url的前半部分的关键词去搜 https://ib.365yg.com/video/urls/v/1/toutiao/mp4, 看那里用到了这个

关于关键词 当然是越长越准确,所以我选取的搜索词是 video/urls/v/1/toutiao/mp4 搜索结果如下:

这里只能一个一个点开看源码了。。。

看源码的时候注意点有以下几个:

1、查看上下文,看所在函数作用 所在文件作用

2、思考我们搜索的东西是什么,比如本例中搜索的是一个视频资源的url,那么肯定要特别关注和视频相关的关键词,函数名之类的东西

哈哈,幸运的是,在第一个文件(tt-video.js)中我就找到了很可疑的代码

这里面全是video相关的,更可疑的是这个 getVideosJson函数名,然后我发现有个crc32函数用到了目标url,那下面就看一下crc32函数在哪里定义的

(PS:标准crc32是一个公开算法,用于生成一段数据的校验码,不过一般这些反爬虫的前端工程师们都会自己实现一下,所以还是以JS代码为准)

通过搜索crc32关键词,可以定位到如下代码:

重点看图中的标红区域,苦寻不见的 r 和 s 参数在这里出现了,这说明我们的思路应该是正确的,然后发现r的值是随机生成的,这个好办,我们待会也随机生成一个就行,最好完全按照JS代码来模拟。

但是 s 的值好像略微复杂一下,嗯,下面就是考验你脑力的时刻了。

s的值是由函数o生成的,但是o的代码很复杂,这个怎么办呢?

第一种办法:

硬上呗,把JS代码的算法完全模拟了,使用别的语言尝试计算,或者使用js引擎比如pyv8, nodejs等来执行都可以

第二种办法:

怎么说呢,换位思考一下,如果你是写这段代码的前端工程师,你会怎么做,难道你会去从零开始实现一个校验算法???(当然不可否认,确实有某些情况下,算法是自创的)既然这个函数是

crc32这样的公开算法,每种语言基本都有实现的标准库,所以直接调用标准库测试一下就可以了,如果加密结果一致,皆大欢喜,不一致,请参考第一种方法。

ok,到目前为止,分析已经完成了,下面就是写代码的时刻了。代码如下:

代码在哪里?

你难道还真想要代码?自己动手,丰衣足食!!

爬虫技巧-西瓜视频MP4地址获取的更多相关文章

  1. 动态获取爱奇艺上传视频mp4格式url地址

    有时候,在工作中有些客户需要用到视频,我们大家都知道视频是非常的耗费流量的,因此,如果因为项目要求客户单独买台视频服务器是非常划不来的.那么将视频上传到优酷,爱奇艺等视频网站来托管那是一件很好的解决方 ...

  2. java_爬虫_从腾讯视频播放界面爬取视频真实地址

    由于想在微信公众号里爬一点儿考研的视频 花了差不多一天的时间把这个爬虫做好(其实也不算爬虫吧,就算个能批量处理的地址解析器,半个爬虫) 不多说,进正题 (本文适合有java基础的同学,没基础的用客户端 ...

  3. 用php实现一个简单的爬虫,抓取电影网站的视频下载地址

    昨天没什么事,先看一下电影,就用php写了一个爬虫在视频网站上进行视频下载地址的抓取,这里总结一下抓取过程中遇到的问题 1:通过访问浏览器来执行php脚本这种访问方式其实并不适合用来爬网页,因为要受到 ...

  4. (Python基础教程之二十二)爬虫下载网页视频(video blob)

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

  5. php100视频原始地址列表整理:

    php100视频原始地址列表整理: 教程名称 . 1:环境配置与代码调试 2:PHP的数据类型与源码调试 3:常用PHP运算类型介绍与应用 4: PHP条件语句介绍与应用 5:PHP循环语句的介绍与应 ...

  6. 西瓜视频蓝光1080P下载方法

    西瓜视频的蓝光画质只能在APP上看,如何获取1080P画质的地址呢? 1.先安装 WinPcap 2.然后安装夜神安卓模拟器NOX 3.NOX模拟器里安装西瓜视频的最新APP,旧版本APP只提供超清模 ...

  7. 爬虫实现:根据IP地址反查域名

    域名解析与IP地址 域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务:IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址.域名解析 ...

  8. Python之爬虫-酷6视频

    Python之爬虫-酷6视频 #!/usr/bin/env python # -*- coding:utf-8 -*- import re import requests response = req ...

  9. 头条小视频和西瓜视频signature签名算法

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 "分析今日头条内小视频和西瓜视频分享后浏览器打开所用的signature签名算法." 上月写的一篇关于使用微信的wxid加好友的文章, ...

随机推荐

  1. Pycharm使⽤用秘笈v0.3PyCharm使⽤用秘籍

    Pycharm使⽤用秘笈v0.3PyCharm使⽤用秘籍 1. PyCharm的基本使⽤用 在PyCharm下为你的Python项⽬目配置Python解释器器 1. Project:当前项⽬目名> ...

  2. hdu 1558 (线段相交+并查集) Segment set

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1558 题意是在坐标系中,当输入P(注意是大写,我当开始就wa成了小写)的时候输入一条线段的起点坐标和终点坐 ...

  3. 如何让一个Java新手快速入门?

    问题中问到如何让java新生快速入门,既然想快速入门的话那最简单粗暴的方法就是多看视频,加上跟着视频敲代码,刚开始可能不知道是什么意思,敲得多了就慢慢知道是什么意思了. 刚开始建议在网上找那种结合自己 ...

  4. git clone时出现:"diffie-hellman-group1-sha1 "

    解决办法1:在用户配置目录下添加一个ssh配置文件 vim /root/.ssh/config  内容如下: Host * KexAlgorithms +diffie-hellman-group1-s ...

  5. HISAT,sTRINGTIE,ballgown三款RNA-seq信息分析软件

    HISAT,sTRINGTIE,ballgown三款RNA-seq信息分析软件 2015年04月02日 11:35:47 夜丘 阅读数:8940 标签: 生物 更多 个人分类: 论文笔记   Bowt ...

  6. Python中特殊函数和表达式lambda,filter,map,reduce

    1.lambda:使用lambda表达式可以定义一个匿名函数 lambda表达式是一种简洁格式的函数.该表达式不是正常的函数结构,而是属于表达式的类型 (1)基本格式: lambda 参数,参数... ...

  7. BZOJ2730 [HNOI2012]矿场搭建 - Tarjan割点

    Solution 输入中没有出现过的矿场点是不用考虑的, 所以不用考虑只有 一个点 的点双联通分量. 要使某个挖矿点倒塌, 相当于割去这个点, 所以我们求一遍割点和点双联通分量. 之后的点双联通分量构 ...

  8. MySQL学习笔记-数据库内存

    数据库内存 InnoDB存储引擎内存由以下几个部分组成:缓冲池(buffer pool).重做日志缓冲池(redo log buffer)以及额外的内存池(additional memory pool ...

  9. 看起来像是PS的照片,实际上却令人难以置信!

    图片来源:网络 在现实生活中 很多照片看起来不可思议 就像经过PS处理的一样. 今天就跟随米醋一起来感受一下 看这些超现实的真实照片. 一张感光过度的照片, 让狗的头看起来像是悬浮的. 一只被困在琥珀 ...

  10. 请简要介绍Sping MVC、IoC和AOP

    Sping MVC是在Spring框架上发展起来的框架,它提供了构建Web应用程序的全功能MVC模块,使用了Spring可插入的MVC架构,可以自由的选择各个模块所使用的架构,非常灵活.Spring ...