我需要从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 - work 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;
为什么链接不同?
答案 0 :(得分:1)
你注意到那些十六进制代码吗?
37d6764a8f8e43bd754f53431c2e79ce
d93d70a78428816b714882c678c39230
在我看来,通过这种非常快速的逆向工程,这些是一种一次性控制代码。
这些代码可能(我说可能,因为我不知道)
使用您的代码,您无法破坏此下载保护,因为至少有上述原因之一 - 或更多未知 - 但并非不可能。我不知道“道德”是如何帮助您滥用下载的(如果您不在网页上观看广告或能够重新分发内容,内容提供商肯定不满意。)
顺便说一下,很多开发者每天都会破解YouTube强制执行的所有FLV保护,这就是YT下载存在的原因。这同样适用于您,只需付出更多努力并使用更多Wireshark;)
答案 1 :(得分:0)
您没有会话信息。可能会有一个cookie集阻止这种与flv文件的深层链接。
答案 2 :(得分:0)
限制1次下载文件(刷新页面时会生成新代码) 绑定到你的IP(所以如果你从另一台服务器运行PHP,他们发现你在欺骗) 被绑定到会话和/或一些cookie,您应该在抓取器中模仿它们。使用http抓取器http://vidozon.com