|
|
|
| Доброго дня.
Хочу с сайта литмир скачать все книги из определенной категории.
Судя по плагину мозиллы, при клике на кнопку скачивания идет такой запрос
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($ch, CURLOPT_URL, $url);
// указываем заголовки для браузера
curl_setopt($ch, CURLOPT_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($ch, CURLOPT_NOBODY, 1);
// нам необходимо получить HTTP заголовки
curl_setopt($ch, CURLOPT_HEADER, 1);
// возвращаем результаты вместо вывода
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
var_dump($info);
}
?>
| но он не работает. Подскажите пожалуйста, как получить ссылку на файл, что в Location? | |
|
|
|
|
|
|
|
для: max90
(30.11.2014 в 13:46)
| | Так может нужно $output вывести/разобрать ? | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: max90
(30.11.2014 в 20:35)
| | Здесь стоит защита от автоматического скачивания, которая работает на JavaScript. Именно поэтому curl и буксует, ведь он JavaScript обрабатывать не умеет. Можно попробовать использовать PhantomJS/CasperJS. | |
|
|
|