2011-01-28 40 views
0

我需要filmix.net/uzhasy/14482-tayna-bermudskogo-treugolnika-the-bermuda-triangle-1987.html 获得FLV文件。当我通过浏览器链接转到服务器。 flv文件,我发现它可以保存文件。服务器如何认识到这不是一个人?

而当我做一个PHP脚本,链接不起作用。

video-10.filmix.net/s/37d6764a8f8e43bd754f53431c2e79ce/_02/The.Bermuda.Triangle.1978.DVDRip.flv - 工作 video-10.filmix.net/s/d93d70a78428816b714882c678c39230/_02/The.Bermuda。 Triangle.1978.DVDRip.flv - 不起作用。

我已经试过这样:

$viart_xml = fsockopen("filmix.net", 80, $errno, $errstr, 12); 

    fputs($viart_xml, "GET /uzhasy/14482-tayna-bermudskogo-treugolnika-the-bermuda-triangle-1987.html HTTP/1.1\r\n"); 
    fputs($viart_xml, "Host: filmix.net\r\n"); 
    fputs($viart_xml, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13\r\n\r\n"); 
fputs($viart_xml, "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n"); 
fputs($viart_xml, "Accept-Encoding: gzip,deflate\r\n"); 
    fputs($viart_xml, "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n"); 
    fputs($viart_xml, "Keep-Alive: 115\r\n"); 
    fputs($viart_xml, "Connection: keep-alive\r\n\r\n"); 


if (!$viart_xml) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    $content = ""; 
    while (!feof($viart_xml)) { 
     $content .= fgets($viart_xml, 1000000); 

    } 
    fclose($viart_xml); 
    echo $content; 

末:

function download_pretending($url,$user_agent='Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)') 
{ 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent); 
curl_setopt ($ch, CURLOPT_HEADER, 0); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_REFERER, 'www.yandex.ru'); 
$result = curl_exec ($ch); 
curl_close ($ch); 
return $result; 

为什么链接有什么不同?

回答

1

你有没有注意到那些十六进制代码?

37d6764a8f8e43bd754f53431c2e79ce 
d93d70a78428816b714882c678c39230 

在我看来,这种非常快速的反向工程,这些都是某种一次性控制代码。

这些代码可能(我说的可能,因为我不知道)

  • 将限制在1所下载的文件(当刷新生成新的代码页)
  • 绑定到你的IP(所以如果你从另一台服务器运行PHP,他们发现你是作弊)
  • 被绑定到一个会话和/或一些cookie,你应该模仿你的抓取器。

我的回答是

与您的代码,因为上述原因,至少一个 - 或多个unknown-你不能打破这种下载保护,但这不是不可能。我不知道“道德”是如何帮助你滥用下载的(如果你不在网页上看广告或能够重新发布内容,内容提供商肯定不高兴)。

顺便说一下,很多开发者每天都会打破YouTube强制实施的每种FLV保护措施,这就是为什么YT下载器存在。这同样适用于你,只需付出更多努力并使用更多的Wireshark;)

0

您没有会话信息。可能会有一个cookie集阻止这种深度链接到flv文件。

+0

Cookie:名称评论值1常量 – Mediator 2011-01-29 00:32:02

+0

这100%不是cookie! – Mediator 2011-01-29 01:02:34

0

限制文件的下载1(当你刷新页面时生成一个新代码) 绑定到你的IP(所以如果你从另一台服务器上运行PHP,他们发现你在作弊) 被绑定到一个会话和/或一些cookie,你应该在你的抓取器中模仿。使用http grabber http://vidozon.com

相关问题