Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Получение файлов используя CURL
 
 автор: max90   (30.11.2014 в 13:46)   письмо автору
 
 

Доброго дня.
Хочу с сайта литмир скачать все книги из определенной категории.
Судя по плагину мозиллы, при клике на кнопку скачивания идет такой запрос
http://www.litmir.net/BookFileDownloadLink/?id=152939

GET /BookFileDownloadLink/?id=152939 HTTP/1.1
Host: www.litmir.net
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:33.0) Gecko/20100101 Firefox/33.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://www.litmir.net/bd/?b=112168
Cookie: esteq_ddos_intercepter=09f658d11fdd5fbb40b4d36d0258a5f8; PHPSESSID=imgm3agki4b7jqbmg3528oc637; TimezoneOffset=7200; DST=0; _ym_visorc_25027157=b
Connection: keep-alive

HTTP/1.1 302 Moved Temporarily
Server: nginx/1.5.7
Date: Sun, 30 Nov 2014 10:41:55 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.4.35-0+deb7u2
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: http://www.litmir.me/data/Book/0/112000/112168/Cvetkova_A.__Informatika_i_informacionnye_tehnologii_konspekt_lekcii__Litmir.net_112168.fb2.zip

Набросал на основе примера с инета такой код
<?php 

// тестируем URL
$urls = array(
     
"http://www.litmir.net/BookFileDownloadLink/?id=152939"
);
// тестируем браузеры
$browsers = array(

    
"standard" => array (
     
"user_agent" => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729)",
     
"language" => "en-us,en;q=0.5"
     
)
);

foreach (
$urls as $url) {

    echo 
"URL: $url\n";

     
$ch curl_init();

     
// указываем url
     
curl_setopt($chCURLOPT_URL$url);

     
// указываем заголовки для браузера
     
curl_setopt($chCURLOPT_HTTPHEADER, array(
             
"Host: www.litmir.net",
             
"User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:33.0) Gecko/20100101 Firefox/33.0",
             
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
             
"Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
             
"Accept-Encoding: gzip, deflate",
             
"Referer: http://www.litmir.net/bd/?b=152939",
             
"Cookie: esteq_ddos_intercepter=09f658d11fdd5fbb40b4d36d0258a5f8; PHPSESSID=imgm3agki4b7jqbmg3528oc637; TimezoneOffset=7200; DST=0; _ym_visorc_25027157=b",
             
"Connection: keep-alive"
             
         
));
     
// нам не нужно содержание страницы
     
curl_setopt($chCURLOPT_NOBODY1);
     
// нам необходимо получить HTTP заголовки
     
curl_setopt($chCURLOPT_HEADER1);

     
// возвращаем результаты вместо вывода
     
curl_setopt($chCURLOPT_RETURNTRANSFER1);

     
$output curl_exec($ch);
$info curl_getinfo($ch);

     
curl_close($ch);
   
var_dump($info);
}

?>
но он не работает. Подскажите пожалуйста, как получить ссылку на файл, что в Location?

  Ответить  
 
 автор: Trianon   (30.11.2014 в 19:56)   письмо автору
 
   для: max90   (30.11.2014 в 13:46)
 

Так может нужно $output вывести/разобрать ?

  Ответить  
 
 автор: max90   (30.11.2014 в 20:35)   письмо автору
 
   для: Trianon   (30.11.2014 в 19:56)
 

В output тоже ничего нужного нет
HTTP/1.1 200 OK
Server: nginx/1.5.7
Date: Sun, 30 Nov 2014 17:31:00 GMT
Content-Length: 873
Connection: keep-alive
У них стоит защита от ддос.если запросить содержание - получаю
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; " />
<script>
    document.cookie='esteq_ddos_intercepter=09f658d11fdd5fbb40b4d36d0258a5f8; max-age=604800; path=/';
    var nc = function() {return document.cookie.indexOf('esteq_ddos_intercepter=09f658d11fdd5fbb40b4d36d0258a5f8')==-1;};
    var w = function() {document.body.innerHTML = document.getElementsByTagName('noscript')[0].textContent;};
    if (!window.opera) {
        if (!nc()) {window.location.reload(true);}
        var r = function() {if (nc()) w();};
    } else {
        var r = function () {
            if (!nc()) {window.location.reload(true);}
            else {w();}
        }
    }
</script>
</head>
<body onload="r()">
<noscript>You have to turn on javascript and cookies support in browser to visit this site.<br/>
<a href="http://esteq.net">EsteQ</a>
</noscript>
</body>
</html>

  Ответить  
 
 автор: Commander   (01.12.2014 в 05:55)   письмо автору
 
   для: max90   (30.11.2014 в 20:35)
 

Здесь стоит защита от автоматического скачивания, которая работает на JavaScript. Именно поэтому curl и буксует, ведь он JavaScript обрабатывать не умеет. Можно попробовать использовать PhantomJS/CasperJS.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования