Добрый день. Попробовал написать сегодня скрипт для генерации прямой ссылки на скачку. Всё работает. Ссылку даёт, но при скачке выдаёт 403 Forbidden. Вот код: PHP: <?php echo <<<HTML <form action="" method="post"> <input type="text" name="query"><input type="submit" name="submit" name="Поиск!"> </form> HTML; if(isset($_POST['query'])) { $_POST['query'] = str_replace(" ", "+", $_POST['query']); $url = "http://zaycev.net/search.html?query_search=".$_POST['query']."&sub=%CD%E0%E9%F2%E8%21"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, 2); curl_setopt($ch, CURLOPT_ENCODING, 0); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLINFO_HEADER_OUT, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $html = curl_exec($ch); curl_close($ch); preg_match_all("/<a href='http:\/\/www.zaycev.net\/pages\/(.*?)'>(.*?)<\/a>/i", $html, $out); for($i=0; $i<count($out[1]); $i++) { echo '<a href="'.$PHP_SELF.'?mp3_url=http://www.zaycev.net/pages/'.$out[1][$i].'">'.$out[2][$i].'</a><br>'; } } if(isset($_GET['mp3_url']) OR isset($_GET['text_check'])) { if(!isset($_GET['text_check'])) { $url = $_GET['mp3_url']; $ch = curl_init($url); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, 2); curl_setopt($ch, CURLOPT_ENCODING, 0); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLINFO_HEADER_OUT, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt ($ch, CURLOPT_COOKIESESSION, true); curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookies/zaycev.net.txt'); curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookies/zaycev.net.txt'); curl_setopt ($ch, CURLOPT_COOKIE, session_name() . '=' . session_id()); $html = curl_exec($ch); curl_close($ch); preg_match('/"http:\/\/www.zaycev.net\/download.php\?ass=(.*?)&id=(.*?)"/i', $html, $out); $url = 'http://www.zaycev.net/download.php?ass='.$out[1].'&id='.$out[2]; $download_url = $url; //$ass = $out[1]; $id = $out[2]; $ch = curl_init($url); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, 2); // Отображать детальную информацию о соединении curl_setopt($ch, CURLOPT_ENCODING, 0); // Шифрование можно включить, если нужно curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLINFO_HEADER_OUT, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_COOKIESESSION, true); curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies/zaycev.net.txt'); // вроде куда сохранять curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies/zaycev.net.txt'); // вроде откуда брать curl_setopt ($ch, CURLOPT_COOKIE, session_name() . '=' . session_id()); $html = curl_exec($ch); curl_close($ch); preg_match('/src="\/captcha.php\?id=(.*?)"/i', $html, $out); $image = "http://zaycev.net/captcha.php?id=".$out[1]; $captcha_id = $out[1]; preg_match('/name="ass" value="(.*?)"/i', $html, $out2); $ass = $out2[1]; if($fsock = fsockopen("zaycev.net", 80, $errno, $errstr, 30)) { @fputs($fsock, "GET /captcha.php?id=".$out[1]." HTTP/1.1\r\n"); @fputs($fsock, "Host: zaycev.net\r\n"); @fputs($fsock, "Connection: close\r\n\r\n"); while (!@feof($fsock)) { $thread .= @fread($fsock, 128); } @fclose($fsock); } $html = explode("\r\n\r\n", $thread); $f = fopen("captcha/zaycev/".$out[1]."_code.jpg", "w"); fputs($f, $html[1]); fclose($f); echo "<img src=\"captcha/zaycev/{$out[1]}_code.jpg\" border=\"0\">"; echo '<form action="" method="get"><input type="hidden" name="download_url" value="'.$download_url.'"><input type="text" name="text_check"><input type="hidden" name="ass" value="'.$ass.'"><input type="hidden" name="id" value="'.$id.'"><input type="hidden" name="captcha_id" value="'.$captcha_id.'"><input type="submit" name"submit" value="OK"></form>'; } else { $_GET['ass'] = str_replace(" ", "+", $_GET['ass']); $url = "http://zaycev.net/download.php?id=".$_GET['id']."&ass=".$_GET['ass']."&text_check=".$_GET['text_check']."&captcha_id=".$_GET['captcha_id']."&ok=%D1%EA%E0%F7%E0%F2%FC"; echo $url."<p>"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, 2); // Отображать детальную информацию о соединении curl_setopt($ch, CURLOPT_ENCODING, 0); // Шифрование можно включить, если нужно curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLINFO_HEADER_OUT, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_COOKIESESSION, true); curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies/zaycev.net.txt'); // вроде куда сохранять curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies/zaycev.net.txt'); // вроде откуда брать curl_setopt ($ch, CURLOPT_COOKIE, session_name() . '=' . session_id()); $html = curl_exec($ch); curl_close($ch); preg_match('/http:\/\/dl.zaycev.net\/(.*?).mp3/i', $html, $out); echo '<a href="http://dl.zaycev.net/'.$out[1].'.mp3">Скачать</a>'; } } ?> Может в чём-то я ошибся? SaveFrom.net - тут работает, значит какой-то вариант скачки работает... Зарание спасиба
Ммм, можеш скинуть пример? Как скачать через скрипт. Пробал хеадер аттачмент .. потом реадфайл и мне краказяблы выдало ..
как тогда __http://savefrom.net/search.php работает? Ссылка генерируется и скачать можно. В моём скрипте обычная ссылка, как и на самом зайцеве. Просто мой скрипт без графики и т.д.- что бы быстрее и удобнее.
Много кода..=\ Нельяза чтоли в одну функцию курл засунуть? По сабжу, заголовки прописывай и качай на здоровье http://forum.antichat.ru/threadnav40896-1041-10.html