【问题标题】:How the server recognizes that this is not a man?服务器如何识别这不是一个人?
【发布时间】:2011-01-28 23:29:05
【问题描述】:

我需要从 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; 

为什么链接不同?

【问题讨论】:

    标签: php curl get


    【解决方案1】:

    你注意到那些十六进制代码了吗?

    37d6764a8f8e43bd754f53431c2e79ce
    d93d70a78428816b714882c678c39230
    

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

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

    • 限制文件的 1 次下载(刷新页面时会生成新代码)
    • 绑定到您的 IP(因此,如果您从另一台服务器运行 PHP,他们会发现您在作弊)
    • 绑定到会话和/或一些 cookie,您应该在抓取器中模仿它们。

    我的答案是

    您的代码无法破坏此下载保护,因为至少有上述原因之一(或更多未知),但并非不可能。我不知道如何“道德”地帮助您滥用下载(如果您不观看网页上的广告或能够重新分发内容,内容提供商肯定会不高兴)。

    顺便说一句,每天都有许多开发者破坏 YouTube 强制执行的所有 FLV 保护,这就是 YT 下载器存在的原因。这同样适用于您,只需付出更多努力并使用更多 Wireshark ;)

    【讨论】:

    • 是的,我使用 sript 到 localhost - 是工作。但我不明白是因为什么
    【解决方案2】:

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

    【讨论】:

    • Cookie:名称评论值 1 常量
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2018-09-18
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      • 2020-09-02
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      • 2022-11-02
      相关资源
      最近更新 更多