先说一下问题描述:

想做个视频网站里边的视频下载功能,不登录,直接可以下载,优酷下已经验证了可以找到当前网页下的视频(参考http://blog.csdn.net/duhaomin/article/details/17556235),而在土豆上测试的时候,明明视频已经能够播放了,可是就是死活找不到播放的视频,现在终于找到了,记录一下寻找的过程,为也遇到这个问题的朋友留下一点帮助信息。

接下来详细说一下我的寻找过程吧:

在土豆上:这个链接http://www.tudou.com/listplay/xVetkPqJijQ/UQwNsJPm9gU.html

使用Adkill,结果为:

可以看到,仅仅找到了播放视频使用的flash播放器portalplayer_72.swf,但是却找不到这个真正的视频,为什么呢?

使用三个请求和响应前的监听:

chrome.webRequest.onBeforeRequest.addListener

chrome.webRequest.onResponseStarted.addListener

chrome.webRequest.onBeforeSendHeaders.addListener

进行监听,将传入的数据的url打印(打印方法是调用js的日志函数console.log()):

通过Ctrl+F寻找视频:"flv","hlv","f4v","mp4","mp3","wma","swf",可是都没有找到想要的内容,这是为什么呢?之后使用wireshark进行抓包:

由于一个视频最终是使用TCP经过三次握手后,才能将视频流时刻的获取,所以我先在优酷里边找规律:

每经过三次握手后,确定可以连同了,发送一个http的get视频请求后就可以开始实时获取视频数据包了,那么土豆肯定也是这样,毕竟这是网络基本的内容,但是为什么跟优酷不一样呢?接下来:

准备好一个新打开的wireshark,打开浏览器,将刚才那个视频地址输入(为了控制变量,必须将多数设定为相同参数),先不要回车,此时开始wireshark并使用HTTP进行过滤,将刚才视频开始播放,待真正的视频开始播放了,停止wireshark(防止太多的信息不容易操作,也可以不停止),之后肉眼寻找一下可能的视频(我们找的数量越少越好,所以刚才把wireshark停止了,因为这个视频的HTTP请求必然在播放前发送的),果然找到了:

明明能够找到,为什么同样的原理Adkill就不能找到了呢?同样我使用js的日志函数,跟之前一样,打印一下url,之后Ctrl+F,居然没有找到!!!

肉眼都找到了,可是自动寻找为什么找不到?很不解,难道是chrome提供的事件函数不准确或者还有其他可能的函数?之后做了猜想:

如果发送请求视频HTTP,必然会用到它的IP地址:119.167.142.135,Ctrl+F呗,没有找到那个视频,是不是打印函数输出的内容被转码了所以查不到呢?之后查了一下ASIIC码表:http://baike.baidu.com/view/15482.htm

视频格式f4v = f%34v,继续Ctrl+F,还是没有!

那么我就继续找这个视频HTTP里边的183772970试试呗,找到了,但是变成了183772970.h264就又没有了,这是为什么?此时多数都会很着急,明明存在啊!!!

于是我想到,既然这条找不到,那么找到它的下一条,那么这条离找到的位置就不会远,基于此,我看了下下一条的信息:

在输出的Console里边找:

Ctrl+F寻找 pepper_sys?&seq=4:

之后向前找找,依然找不到,难道Ctrl+F是在当前显示的里边寻找而不是实际上的内容吗?(你会看到,即使内容很长,它显示的也很有限,将中间一部分使用省略号省略显示了),再仔细看看这个显示的内容,看到上边那个图片的最右边了吗?那个不就是需要找的那条请求的前半部分吗?有个f4v!!!

文章发表后发现上边这个图片右边看不到,需要将图片单独拖出去才能看到,所以单独将右边截图了一下:

将这个链接复制后在记事本中查看一下:

http://logs.live.tudou.com/logs/pepper_sys?&seq=4&myid=61BBC1A5-8670-9C15-9FF7-2CC3680985C3&source_id=10000&v=4.2.2&chan=d64704079b9cf3466d688754b28296ca&seg=Success|0|200%20OK|http://119.167.142.135/f4v/70/183772970.h264_2.040003010052BA6B4B477CBF3FF0337EA59D9C-5DE1-8F7C-DDC5-000189122327.f4v?10000&key=50bb025d55791beb88c8d752bb95b90040931816b8&playtype=3&tk=183835793311051012410234806&brt=3&bc=0&nt=0&nw=1&bs=0&ispid=12&rc=200&inf=12&si=un&npc=3695&pp=0&ul=2&mt=0&sid=10000&pc=1&cip=61.48.214.155&xid=040003010052BA6C02477CBF3FF0337EA59D9C-5DE1-8F7C-DDC5-000189122327&id=tudou&hf=0&hd=3&sta=0&ssid=0&itemid=189122327&fi=0&sz=4972930|

红色的部分,啊,终于找到了,哈哈,找到的视频的地址了,接下来就是如何将这个地址使用程序手段找到并截取等等处理了,再此不继续说了,本篇的目的达到了,至于最后做好的扩展代码,之后贴出。

【注意,本博文内容仅供学习交流使用,请勿用于侵害他人利益】

各种手段终于将土豆视频url请求找到了相关推荐

  1. Python使用pypcap扩展包,抓取视频网站的视频URL

    爬取视频网站的视频URL 前言 第一步.安装Python(2.7.13 64位) 第二步.安装Python的扩展包pypcapy==1.1.2 第三步.安装Python的扩展包dpkt(这个没什么特别 ...

  2. 播放器地址抓取 php,从优酷土豆视频地址中获取swf播放器分享地址 - PHP示例代码...

    从优酷土豆视频地址中获取swf播放器分享地址 - PHP示例代码 分类:PHP_Python| 发布:佚名| 查看: | 发表时间:2014/10/27 由于最近项目开发中遇到视频分享的功能,以下简单 ...

  3. KissTudou:超简易土豆视频下载方案

    今天在网上发现了一个超简易的土豆视频下载工具,名为KissTudou.从域名中可以看出,这是一个针对土豆的视频下载工具,操作方法很是简单,只需在地址栏中的土豆视频地址前面加一个kiss后并回车就可获得 ...

  4. 如何获取网络视频(或者说后台返回视频URL)第一帧图片以及获取本地视频的第一帧图片

    在项目开发的时候,有可能会有这样的一种需求:有一段视频需要展示给用户,在界面上先展示视频上的某一帧图片,用户点击的时候再去获取视频资源进行播放.这时,服务器会先给我们返回视频的url,这个时候就需要通 ...

  5. java通过视频URL获取视频时长,无需下载视频,修复jave在linux上的bug

    背景 项目中有一个需求,要获取前端上传过来的视频的时长.分辨率等信息.网上查了下,java后端基本上都是用的jave获取视频信息,jave的官网在此. 不过网上的教程都是获取本地视频的信息,jave提 ...

  6. PHP实现使用优酷土豆视频地址获取swf播放器分享地址

    这篇文章主要介绍了PHP实现使用优酷土豆视频地址获取swf播放器分享地址,即分析优酷土豆的视频页面地址,从而获得对应的swf播放器分享地址,需要的朋友可以参考下 项目用到临时写的.待完善: 复制代码代 ...

  7. nginx php 大小写问题,Nginx实现url请求不区分大小写

    如果你将跑在Windows下的项目(如:php)迁移到 解决方法有大概4种: 1. url rewrite 2. perl模块 3. lua模块 4. ngx_http_lower_upper_cas ...

  8. SpringMVC 学习系列 (3) 之 URL请求到Action的映射规则

    2019独角兽企业重金招聘Python工程师标准>>> 在系列(2)中我们展示了一个简单的get请求,并返回了一个简单的helloworld页面.本篇我们来学习如何来配置一个acti ...

  9. 根据传入url请求,返回json字符串

    /** * 根据传入url请求,返回json字符串 * @param url * @return * @throws UnsupportedEncodingException */ public st ...

  10. java url使用rest风格_Restful风格的URL请求

    SpringMVC的URL请求的配置方式有两种 第一种方式:.do,.action 类似于 /user/addUser.do /user/addUser.action 第二种配置方式:/* 类似于/u ...

最新文章

  1. jquery getJSON 中对超时Timeout的处理
  2. git命令详解( 八)
  3. VTK计算网格模型上的最短路径
  4. 动态开点线段树(多棵线段树)的内存分配与回收
  5. Google Guava –与Monitor同步
  6. Linux实战案例(2)实例讲解使用软连接的场景和过程
  7. JAVA的BIT数组
  8. ​​2021快手母婴行业数据价值报告
  9. Opencv--Mat类型ROI的设置
  10. fancyupload java_javascript-如何在内部Windows身份验证Intranet上...
  11. 剑指offer之数组中的数据查找
  12. Mongodb在Ubuntu下的安装
  13. LINUX-iostat命令讲解
  14. CentOS7静态IP地址配置
  15. Atitit oil painting article list sumup s55 C:\Users\Administrator\Desktop\油画技术资料包\Atitit Atitit 图像
  16. gis属性表怎么导成excel_ArcGIS中将属性表直接导出为Excel的方法
  17. 局域网联机_局域网联机
  18. 猎头猎取人才会注重人才的哪些点?
  19. BigDecimal精度控制
  20. DataGridView 基本用法及注意事项

热门文章

  1. Python 2和Python 3 用pip 安装时如何区分
  2. Filtered request failed
  3. Debian Fully Automatic Installation PXE自动安装FAI
  4. TinyOS数据帧与CC2420 Radio Stack解读
  5. 面试:设计一个电商平台积分兑换系统
  6. IE11的F12功能无法正常使用
  7. 九爷带你了解 nginx 的反向代理
  8. 贪心算法——皇后游戏(洛谷P2123)
  9. 1357. 路径总和 II
  10. 2023秋招—大数据开发面经—蚂蚁金融