精英盒子 -> 程序设计 -> 土豆网视频播放数查看器 [打印本页]

outman 2012-02-06 09:22

土豆网视频播放数查看器


就为了写这个小程序居然花了我一下午的时间……这让我情何以堪

先上示例:(没有任何防黑措施,仅供技术交流之用)http://www.catrio.tk/tudou/

源码:

----------------------------------------------------------------------------------------------------------------

  1. <html>

    <head><meta charset="gbk"></head>

    <title>查询土豆网视频播放次数</title>

    <body>

    <form method="get">

                  请输入土豆网视频地址:<input type="text" name="u">

                  <button type="submit">查询播放次数</button>

    </form>

    <?php

    if(isset($_GET['u'])){

    if(substr($_GET['u'],0,7)!="http://")$_GET['u']="http://".$_GET['u'];

    $result = @file_get_contents("compress.zlib://".$_GET['u']);

    $istart=stripos($result,"iid",0)+5;

    $iend=stripos($result,",",$istart)-$istart;

    $a=substr($result,$istart,$iend-1);

    $istart=stripos($result,"oid",0)+5;

    $iend=stripos($result,",",$istart)-$istart;

    $b=substr($result,$istart,$iend-1);

    $c="http://istat.tudou.com/itemSum.srv?iabcdefg=".$a."&uabcdefg=".$b;

    $c=str_replace(" ","",$c);

    $u=file_get_contents($c);

    $istart=stripos($u,"playNum",0)+9;

    $iend=stripos($u,",",$istart)-$istart;

    echo "<p>该视频播放数:".substr($u,$istart,$iend)."</p>";

    }

    ?>

    </body>

    </html>

----------------------------------------------------------------------------------------------------------------

原以为可以通过获取视频播放页的播放数达到目的,但是经过我非常精密的研究发现,在打开视频播放页面的初期播放数显示为0,后期才更改为实际播放数,这就是说土豆是通过js获取播放数的,于是自告奋勇打开其js文件研究……一小时后证实无效。

灵机一动打开抓包软件,经过筛选终于筛出一个有用的地址:http://istat.tudou.com/itemSum.srv?iabcdefg=118871182&uabcdefg=84991497

这里的iabcdefg就是视频的编号,而uabcdefg则不知道是什么意思,随便更改数字都可以,就是不能为空

难题又来了,如何获得视频编号?

……

一小时后,很无语的发现在视频播放页的源码中原来就有明文的视频编号-、-

欢呼雀跃,以为用curl获取页面源码即可,没想到获取回来的竟然是乱码;据资料显示似乎是编码问题,于是用iconv转码之,无效;

又经过一小时,终于知道了真相:原来土豆网使用了gzip技术,导致直接获取回来的数据是经过压缩的,要解码gzip,可以用php的file_get_contents函数:

file_get_contents("compress.zlib://".$url);//即可获得解码的网页数据

难题全部解决,于是剩下的工作就很简单了。(我一下午的光阴啊……)

whtsky 2012-02-06 10:20

别这么水

outman 2012-02-06 14:49

jybox 2012-02-06 17:03
用iframe,然后用js取呗...

outman 2012-02-06 17:16
jybox:[表情] 用iframe,然后用js取呗... (2012-02-06 17:03) 

这样没技术含量 而且浪费用户流量

jybox 2012-02-06 17:19
outman:[表情]这样没技术含量 而且浪费用户流量 (2012-02-06 17:16) 

服务器资源比客户端资源更宝贵....

如果你真要节省资源的话,应该和土豆友情会谈,让它开放接口

outman 2012-02-06 20:27
jy 我见你英俊潇洒玉树临风 这艰巨任务就交给你了

内容来自[手机版]




Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.051128 second(s),query:5 Gzip enabled