一、前言 今日头条有毒。 这句话不假。 在资讯类APP中,能够赢得用户青睐的只有大黄易和今日头条。 我所说的点赞并不是指精彩的内容,而是指评论。 玩过这个之后,使用这两个应用的人都知道,他们看的不是原创新闻内容,而是他的搞笑评论,不得不相信中国网友很有才华。
一、简介
今天的头条新闻有毒。 这句话不假。 资讯类APP中,能获得用户喜欢的只有大黄易和真日头条。 我说的点赞不是精彩的内容,而是评论。 玩过这两个app的人都知道,他们读到的不是新闻的原创内容,而是他搞笑的评论,不得不相信中国网友很有才华。 我从今日头条和黄易那里学到了很多笑话,成功地成为了一个有趣的人。
2. 手动下载视频
喜欢今日头条的同学都知道,今日头条的视频有毒,因为没有广告,内容就是你想要的。 网友这样说:我在头条看完了火影。 不仅如此,现在我还添加了更多的自媒体,才华比其他的都强,短视频你们看的开心。 有时候想把一些精彩的视频分享给朋友圈或者微信好友,但是如果单纯分享链接的话,感觉有点low了,所以这篇文章就来介绍一下如何将今日头条原生视频同步到微信上。
下面话不多说,直接进入主题。 我们随机打开今日头条的一个视频页面,发现没有下载按钮:
其实这个时候我们就可以手动完成。 在该页面直接按F12键即可查看该页面的元素信息:
当看到video标签是用来播放视频的时候,可以直接获取它的src属性值,即视频链接。 您可以在新窗口中打开它:
然后右键可以看到保存视频的菜单,把视频保存到本地就可以了。 那么如果你想把这个视频导入微信,那就更方便了。 PC端登录微信,有文件传输助手,拖进去就行,手机端微信就可以保存这个视频并分享给朋友,但是这个视频大小是有限的。 然后,如果你想把视频分享到朋友圈:微信在iOS中已经有分享本地视频的功能,但是如果你这里没有这个功能,可能需要使用插件。 这个插件功能我在之前的文章中已经提到过。 我不明白。 同学们可以点击这里查看:如何将本地视频分享到朋友圈。
3、分析视频链路构建流程
好了,到这里我们发现只需几步就可以把视频上传到微信了,但是看起来有点费力,而且需要手工,根本不符合程序员的工作作风,所以我们要写一个程序来实现自动化。 为了方便在PC上编写脚本来自动下载这个视频,原理也很简单。 使用脚本抓取网页并获取视频的原始链接。 关于爬虫的知识点并不多。 爬取非常方便,不到100行代码。 爬虫的原理很简单:使用api获取整个页面内容,然后使用正则表达式获取你想要的标签内容或纯文本内容。 我们看一下脚本中获取页面内容的代码:
你看,是不是很简单,只需三行代码就可以获取页面的内容了。 我们先把这段内容保存到本地,然后再分析:
执行这个脚本后,查看video.html的内容,直接找到div标签的内容:
可惜标签下没有video标签内容,所以这里我们猜测这个html内容是使用js动态生成的,于是我们继续查看这个页面请求的js文件内容,直接通过获取在浏览器中按 F12 键 Page 查看该页面的所有内容:
这里有几个js。 通过分析发现这个tt-video.js最为可疑。 我们将其内容复制到 ,然后按 Ctrl+Alt+L 对其进行格式化。 这是一个前端开发的软件,你可以自己安装一个就可以了:
看到这段代码,应该是创建video标签的内容的地方。 主要还是看部位。 这里可能需要一些js基础。 如果你不明白也没关系。 CRC32 函数:
这段代码的大致意思是:有一个+视频id字符串,然后使用crc32函数处理得到一个链接,然后使用jsonp访问这个链接得到一个json数据,然后解析json数据,以及data节点中的节点这个键值用来解码得到视频的原始链接。 所以上面已经是这样了:
下面可以输入crc32函数查看:
这里的代码格式不是很标准,但是如果你有js基础的话还是可以大致理解的。 逻辑大致如下:传入外部传入的字符串内容(+视频id),然后凭借A字段r获取该url的路径字符串内容,该字段的值为随机值,并且然后用crc32算法计算(看到n(o)函数调用得到的是i值,需要移位),然后将i值即crc32校验值与值拼接起来s 字段形成最终链接。 这里,为了更好的验证,我们先用它来抓包看看结果:
我看到了请求的链接,带有 r 和 s 参数值。 这里抓包主要看:,这个就是上面的值,在js里可以查到。 然后看返回值:
果然是json数据,和我们分析的差不多。 为了验证正确性,我们可以使用该值进行在线解码:
果然,解码后就是原来的视频链接了。
4.总结视频链接获取流程
至此我们就分析完了今日头条的视频链接构建逻辑。 我们总结一下如下:
1. 使用 crc32 加密 /video/urls/v/1//mp4/{}?r={Math.()}。
2、将上面得到的加密值拼接到上面的链接中即可。 最终的链接形式为:
{}?r={Math.()}&s={crc32 值}
3、访问这个链接得到一个json数据,需要解析数组中的值,然后使用解码得到最终的原始视频链接。
看到上面的步骤并不复杂今日头条apk,操作过程中还是有一些需要注意的地方,主要是上面的随机数和crc32加密逻辑。 为了掩饰简单性,这里依然选用脚本进行练习。 其实,无论用什么语言,任何关系,道理都是一样的。 从上面步骤的分析结果我们可以知道,如果我们想要获取最终的视频url,有一个信息是必须获取的,那就是视频的id值。 我们需要回头看一下一开始拿到的页面内容,那里应该有这个视频id。 价值:
检查文件后发现这个值确实存在,所以我们需要使用正则表达式将其取出来。
5. 脚本操作练习
下面我们就开始使用它:
第一步:获取整个页面的内容
只需使用 . 直接方法。
第二步:获取视频id
在第一步的基础上,解析页面内容,使用正则表达式获取视频id值:
第三步:拼接url并计算crc32值
这里注意.()方法用于获取随机值。 这样得到的是0-1之间的小数,所以需要转为字符串,然后去掉小数点,即从字符串的下标2处截取内容。 这就需要看一下之前分析过的js中的随机数获取逻辑:
这就是js代码实现的随机逻辑。 Math.()就是获取0-1之间的小数,然后转换成小数字符串内容,然后截取内容。 得到随机数后,开始拼接,同时拼接该值。 然后计算crc32值。 这里需要注意的是,使用内置的.crc32算法后,要进行移位。 这也是分析js代码的结果:
这就是js代码中的移位逻辑。 此处保持脚本一致即可。
第四步:解析json获取视频url
这里主要是简单解析json数据:
第5步:解码视频url
直接用它来解码就可以了
第六步:下载视频
下载文件比较简单:
保存到本地mp4文件,文件名是随机值。 这里不做详细处理。 您应该解析上面的json数据以获取视频的详细信息,例如类型,然后在此处指定保存文件的类型。
下面就不多解释了,运行脚本看看效果:
看到打印的值后,成功获取视频URL。 查看本地保存的视频文件:
这有效,不需要更多解释。 程序员就是这么任性,不做重复的工作。 以后有了这个脚本工具,我就不用再这么辛苦了。 并且以后有兴趣的同学可以修改这个脚本,抓取今日头条整个视频标签页上的所有视频。 这里不再大惊小怪今日头条apk,主要是获取视频URL值的重要过程。 其他的都不难!
注意:在操作过程中可能会遇到这样的错误:
这是因为没有找到对应的视频id值。 这时,你可以选择再次运行脚本,或者将需要爬取的链接放入浏览器中浏览并检查数据是否正确。
6.手机下载器
我介绍了如何使用脚本来爬取视频,但我们现在大多数人都使用手机应用程序来观看今日头条视频。 这个时候如果有一个辅助工具那就最好了,所以我做了一个版本的辅助下载工具,使用起来非常简单。 安装小工具后,打开今日头条视频页面,点击分享,选择转发链接,选择【今日头条下载器】:
你看,把今日头条视频保存到本地是非常容易的。
小工具下载地址1:(最新版本)
小工具下载地址2:(稳定版)
如果您在使用过程中遇到任何问题,请在微信或微信公众号留言咨询,我会及时解决! 如果您觉得该工具有用,请支持一下,非常感谢!
脚本下载地址:
七、总结
本文简单分析了今日头条视频链接的构建过程,主要知识点是一样的,然后简单的借助脚本实现了这个逻辑,将页面上的视频下载到本地,而不是像之前那样手动操作。 另外,有了辅助小工具的版本,你可以在手机上随心所欲地保存! 如果您觉得文章不错,记得转发分享。 如果有奖励就更好了!
暂无评论内容