比如我想下载这个图片:
http://down.qqtz.com/attachment/Day_120613/248_1010720_1b320fcc0c7f252.jpg
实际上这个图片跳转到
http://i.qqtz.com/qqtz.png请问,他依据什么来判断是站外的引用而做的跳转?
比如我伪造php访问的referer是他的站都不行?

解决方案 »

  1.   

    人家说不定防御了两层,。1,首先down.qqtz.com下的页面必须有referer指明从哪跳来。
    2,要求必须提交SESSION-COOKIE,并且可能可能标记了SESSION以便区分外链,比如一个SESSION从来没访问过down.qqtz.com以外的.qqtz.com域名。
      

  2.   

    3c44b_lastpos=other; 3c44b_lastvisit=1 1339582619 /jsdl.php?; 我想复杂了点,其实直接COOKIE控制就行,你看它这些COOKIE,明显用来做记录用的。
      

  3.   


    问题解决了,我第一次访问网站的时候,他跟我说图片是外部链接,我刷新,图片正常。感觉是cookie起了作用。于是采集图片的时候把请求头的cookie带入下载图片,果然,顺利下载了。
      

  4.   


    可以curl先拉一次主页面,把cookie拿下来,之后再随便拉它的图片带上referer和cookie就好了
      

  5.   


    稍带一个问题
    如何从下面的字符串提取视频地址?$str = "<script language=\"JavaScript\">player('player_'+1,'http://www.aipai.com/c11/OjY8ICgkJ2gnaiAh/playerOut.swf','600','500','flash');</script>";求正则。
      

  6.   

    [User:root Time:06:52:58 Path:/home/liangdong/php]$ php preg.php 
    http://www.aipai.com/c11/OjY8ICgkJ2gnaiAh/playerOut.swf[User:root Time:06:52:59 Path:/home/liangdong/php]$ cat preg.php 
    <?php
    $str = <<<EOF
    <script language="JavaScript">player('player_'+1,'http://www.aipai.com/c11/OjY8ICgkJ2gnaiAh/playerOut.swf','600','500','flash');</script>
    EOF;
    $n = preg_match('/player_\'\+1,\'(.*)\'/iUs', $str, $matches);
    print_r($matches[1]);
    ?>
      

  7.   

    在我的基础上面改一下$pregfind = array(
    "/<script.+'player(\'player_\'.+,\s+'([^\']+)'.+,\'flash\');<\/script>/eiU",
    );
    $pregreplace = array(
    "mediatag_format('\\1', '".$url."')",
    );
    return preg_replace($pregfind, $pregreplace, $text);最好把script带进去,而且player('player_'+1这个1可能是一个变数,说不定有些是2有些是3,最好不要带进去。
    我主要目的是把这段html转换成ubb代码。
      

  8.   


    我改成了这样
    "/<script.*'player(\'player_\'\d+,\s+'([^\']+)',\s+'(\d+)',\s+'(\d+)',\'flash\');<\/script>/eiU",不知道哪里错了,没匹配上
      

  9.   

    [User:root Time:07:29:48 Path:/home/liangdong/php]$ php preg.php 
    http://www.aipai.com/c11/OjY8ICgkJ2gnaiAh/playerOut.swf[User:root Time:07:29:48 Path:/home/liangdong/php]$ cat preg.php 
    <?php
    $str = <<<EOF
    <script language="JavaScript">player('player_'+1,'http://www.aipai.com/c11/OjY8ICgkJ2gnaiAh/playerOut.swf','600','500','flash');</script>
    EOF;
    $n = preg_match('/<script language="JavaScript">player\(\'player_\'\+\d+,\'(.*)\'/iUs', $str, $matches);
    print_r($matches[1]);
    ?>
      

  10.   


    顺便把整个script匹配出来,因为要将整段html转换成ubb嘛,比如[flash]http://www.aipai.com/c11/OjY8ICgkJ2gnaiAh/playerOut.swf[/flash]
      

  11.   


    matches[0]的结果是:<script language="JavaScript">player('player_'+1,'http://www.aipai.com/c11/OjY8ICgkJ2gnaiAh/playerOut.swf'只取到了其中一段而已。。
      

  12.   

    preg_match_all('/<script language="JavaScript">player\(\'player_\'\+\d+,\'(.*)\'.+<\/script>/iUs', $str, $matches);
    print_r($matches);