2011-01-28 44 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

相關問題