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

Форум PHP

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

 

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

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

тема: Обход защиты от скачивания
 
 автор: demon666   (01.07.2007 в 13:48)   письмо автору
 
 

Здравствуйте! Очень нужна Ваша помощь.
Написал граббер:

<?php
Error_Reporting
(0);
$host "antiwap.ru";
$path "/load/?$QUERY_STRING";
$fp fsockopen($host,80,$errno,$errstr,30);
if(!
$fp) echo"$errstr ($errno)<br />\n";
else{
$headers "GET $path HTTP/1.0\r\n";
$headers .= "Host: $host\r\n";
$headers .= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n";
$headers .= "Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\n";
$headers .= "Accept-Encoding: deflate\r\n";
$headers .= "Accept-Language: ru,en;q=0.9,ru-RU;q=0.8\r\n";
$headers .= "User-Agent: Opera/9.20 (Windows NT 5.1; U; ru)\r\n\r\n";
$headers .= "Cache-Control: no-cache\r\n";
$headers .= "Proxy-Connection: close\r\n";
fwrite($fp,$headers);
while(
$text != "\r\n"
$text fgets($fp,128);
$text "";
while(!
feof($fp)) 
$text .= fgets($fp,4096);
fclose($fp);
}
header("Cache-Control: no-cache");
header("Content-Type:text/html;charset=UTF-8");
print 
'<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Загрузки</title>
    <link rel="stylesheet" href="default.css" type="text/css">
    </head>
    <body><div class="main">'
;
$text=@preg_replace('|<!D(.*)<body>|U','',$text);
$text=@preg_replace('|<br>Добавил:(.*)user.php(.*)>(.*)</a>|U','',$text);
$text=@preg_replace('|<tr><td class="iteml"><small>(.*)<(.*)stat(.*)>Статистика</a></small></td></tr>|U','',$text);
$text=@preg_replace('|<tr><td class="item" style="border-bottom: solid 1px #000080"><small>(.*)<(.*)rating(.*)>Рейтинг</a></small></td></tr>|U','',$text);
$text=@str_replace('<tr><td class="item" style="border-bottom: solid 1px #000080"><small>&nbsp;<a href="http://offsex.org/old">New Sex Archive</a></small></td></tr>','',$text);
$text=@str_replace('style/folder.gif','folder.gif',$text);
$text=@preg_replace('|<img src="style/ar(.*)<(.*)index(.*)>Главная</a><br>|U','',$text);
$text=@str_replace('style/up.gif','up.gif',$text);
$text=@str_replace('<div class="bottom">','',$text);
$text=@str_replace('dl.php','http://antiwap.ru/load/dl.php',$text);
$text=@str_replace('img.php','http://antiwap.ru/load/img.php',$text);
$text=@explode('<img src="style/ar.gif" alt="&gt;">&nbsp;<a href="search.php',$text);
print
"$text[0]";
print 
'<small><a href="./"><span>-</span>&nbsp;Загрузки</a><br/><a href="../"><span>-</span>&nbsp;На главную</a></small></div></body></html>'
?>


Но на этом сайте стоит защита от скачиваний. и самое главное что по ссылке вида http://antiwap.ru/load/dl.php?id=32972&s=1 файл скачивается, а если файл скачивать в граббере по идентичной ссылке нажатием кнопки "[ СКАЧАТЬ ]" то выкидывает на страницу ошибки. Вот страница скачивания этого фала, если граббер на локалке http://localhost/load/index.php?id=32972&s=1 .
Подмена реферера не помогает....
Но если сделать скрипт
<?php
header
("Location:http://antiwap.ru/load/dl.php?id=32972&s=1");
?>

то файл скачивается! Не понимаю как совместить это с моим граббером.... Заранее спасибо за помощь!

   
 
 автор: demon666   (01.07.2007 в 13:52)   письмо автору
 
   для: demon666   (01.07.2007 в 13:48)
 

собственно убедиться в том что файл не скачивается, можно перейдя со страницы этого форума по этой ссылке http://antiwap.ru/load/dl.php?id=32972&s=1
А если эту ссылку скопировать, вставить в адресную строку и перейти то файл скачивает!
Вообще не пойму какая защита там стоит....

   
 
 автор: kasmanaft   (01.07.2007 в 13:56)   письмо автору
 
   для: demon666   (01.07.2007 в 13:52)
 

реферер проверяют ... либо его отсутствие, либо правильность.. хз
Нажав в бравзере на сцылку, вы передаете неправильный реферер, вставив адрес в адр. строку реферер не передаете.. (то же самое и с header())
http://softtime.ru/forum/read.php?id_forum=1&id_theme=31564

   
 
 автор: CrazyAngel   (01.07.2007 в 13:53)   письмо автору
 
   для: demon666   (01.07.2007 в 13:48)
 

эм... может куки?

   
 
 автор: demon666   (01.07.2007 в 14:50)   письмо автору
 
   для: CrazyAngel   (01.07.2007 в 13:53)
 

>эм... может куки?
куков нет точно...

GET http://antiwap.ru/load/dl.php?id=43469&s=1 HTTP/1.0
User-Agent: Opera/9.20 (Windows NT 5.1; U; ru)
Host: antiwap.ru
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru,en;q=0.9,ru-RU;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Referer: http://antiwap.ru/load/index.php?id=43469&s=1
Pragma: no-cache
Cache-Control: no-cache
Proxy-Connection: close

тогда как сделать чтобы скрипт не передавал реферер?
Пробовал $headers .= "Referer:\r\n";
не работает ((
Через ini_set тоже пытался.....
или как подделать реферер чтобы он имел такой вид http://antiwap.ru/load/index.php?id=43469&s=1
То есть id=43469&s=1 это параметры ссылки которые передаются через $QUERY_STRING
делал такой заголовок $headers .= "Referer: http://antiwap.ru/load/index.php?$QUERY_STRING";
тоже не пашет (((

   
 
 автор: kasmanaft   (01.07.2007 в 14:57)   письмо автору
 
   для: demon666   (01.07.2007 в 14:50)
 

Прочитайте тему, что я привел...

   
 
 автор: demon666   (01.07.2007 в 14:57)   письмо автору
 
   для: demon666   (01.07.2007 в 14:50)
 

самое интересное то что настроив Оперу на работу через программку Naviscope, файлы скачиваются! В логах программа пише вот что:

Не верный запрос:
GET http://antiwap.ru/load/dl.php?id=44724&s=1 HTTP/1.0
User-Agent: Opera/9.20 (Windows NT 5.1; U; ru)
Host: antiwap.ru
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru,en;q=0.9,ru-RU;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Referer: http://localhost/load/index.php?id=44724&s=1
Pragma: no-cache
Cache-Control: no-cache
Proxy-Connection: close

Исправляет на такие запросы:

HTTP/1.0 302 Found
Date: Sun, 01 Jul 2007 10:48:32 GMT
Server: Apache
Location: http://l.antiwap.ru/Programmy/~Series~60/internet/antiwap.ru_10536~_jataayujb~5~mobilebrowserv~130~s~60~v~2~fp~3~symbianos~81.sis
Connection: close
Content-Type: text/html


HTTP/1.0 302 Found
Date: Sun, 01 Jul 2007 10:48:32 GMT
Server: Apache
Location: http://l.antiwap.ru/Programmy/~Series~60/internet/antiwap.ru_10536~_jataayujb~5~mobilebrowserv~130~s~60~v~2~fp~3~symbianos~81.sis
RemovedHdr: close
Content-Type: text/html


И файл выдается на скачивание....
Следовательно можно это сделать как то и средствами php.

   
 
 автор: demon666   (01.07.2007 в 15:03)   письмо автору
 
   для: demon666   (01.07.2007 в 14:57)
 

kasmanaft , спасибо, прочитал, но если не ошибаюсь на этом сайте нет wml версии загрузок ((
А если в заголовках реферер вообще не передавать, то не работает... если грабить через file_get_contents тоже не качает....

   
 
 автор: kasmanaft   (01.07.2007 в 15:23)   письмо автору
 
   для: demon666   (01.07.2007 в 15:03)
 

Мммм..... Ваш граббер работает! (если ссылки на файлы показывает, я не запускал)
Сам этот граббер нужен только для того, чтобы достать ссылки на файлы. Он их качать не будет.
Ссылки показывает - работает... не показывает - не работает.

>> file_get_contents тоже не качает....
Файлы качает, попробуйте "echo file_get_contents('http://antiwap.ru/load/dl.php?id=32972&s=1');" .. появится характерная крякозябра :-)
Что там насчет страниц со ссылками на файлы (качает она их или нет) не знаю... По идее должна, в своем граббере вы реферер нигде не передаете, он работает => должна и file_get_contents качать.

>> на этом сайте нет wml версии загрузок
WML - это язык разметки (как HTML, но попроще и с меньшими возможностями). Вот.
То есть на том сайте wml версия и не нужна... Сделайте свою (если нужно).

   
 
 автор: demon666   (01.07.2007 в 16:07)   письмо автору
 
   для: kasmanaft   (01.07.2007 в 15:23)
 

kasmanaft, граббер показывает ссылки на файлы. Но при попытке скачать этот файл, перекидывает на главную страницу....
Да,этот скрипт работает

<?
$file
=file_get_contents('http://antiwap.ru/load/dl.php?id=32782&s=1');
echo 
$file;
?>

Немного видоизменяю чтобы использовать в граббере:
Файл dl.php

<?
$file
=file_get_contents('http://antiwap.ru/load/dl.php?$QUERY_STRING');
echo 
$file;
?>


В граббере стираю строчку
$text=@str_replace('dl.php','http://antiwap.ru/load/dl.php',$text);

Дальше пытаюсь скачать файл, прекидывает на http://localhost/load/dl.php?id=32782&s=1
По идее должна начаться закачка, но появляется надпись "Файл не найден
Не указан или указан несуществующий файл.." (((

пробовал даже такой способ:
в граббере:

$pattern='|<a[\s]href="dl.php\?([^<]+)">|U';
preg_match_all($pattern,$text,$out);
$link=$out[1][0];


Файл dl.php:

<?
include 'index.php';
$file=file_get_contents('http://antiwap.ru/load/dl.php?$link');
echo 
$file;
?>

и тоже пишет "Файл не найден
Не указан или указан несуществующий файл.." (((

   
 
 автор: kasmanaft   (01.07.2007 в 16:44)   письмо автору
 
   для: demon666   (01.07.2007 в 16:07)
 


<? 
$file
=file_get_contents('http://antiwap.ru/load/dl.php?$QUERY_STRING'); 
echo 
$file
?>

Измените тут кавычки на двойные.

зыж лучше не используйте register_globals.
зыжж испльзуя этот скрипт вы здорово увеличите нагрузку и трафик. Я не советовал, просто показал, что работает. (попробуйте вместо него header("Location: ....") )

   
 
 автор: demon666   (01.07.2007 в 17:11)   письмо автору
 
   для: kasmanaft   (01.07.2007 в 16:44)
 

>

><? 
>$file=file_get_contents('http://antiwap.ru/load/dl.php?$QUERY_STRING'); 
>echo 
$file
>
?>
>

>Измените тут кавычки на двойные.
>
>зыж лучше не используйте register_globals.
>зыжж испльзуя этот скрипт вы здорово увеличите нагрузку и трафик. Я не советовал, просто показал, что работает.

да, это действительно не способ, зачем тогда вообще делать граббер....
Я просто не понимаю каким образом может преедаваться реферер в таком скрипте:

<?
header
("Location:http://antiwap.ru/load/dl.php?$QUERY_STRING");
?>

Выкидавает на главную страницу, а значит неверный реферер.
Когда такой скрипт работает:

<?
header
("Location:http://antiwap.ru/load/dl.php?id=10624&s=1");
?>

   
 
 автор: demon666   (01.07.2007 в 17:18)   письмо автору
 
   для: demon666   (01.07.2007 в 17:11)
 

делаем такой скрипт:
dl.php
<?
header
("Location:http://antiwap.ru/load/dl.php?$QUERY_STRING");
?>

Обращаемся к нему вот так: http://localhost/load/dl.php?id=10624&s=1
Файл загружается.
Точно такая же ссылка: когда жмем "СКАЧАТЬ" со страницы граббера, то выкидывает на главную... Вообще ничего не понимаю.....

   
 
 автор: kasmanaft   (01.07.2007 в 17:36)   письмо автору
 
   для: demon666   (01.07.2007 в 17:18)
 

> Точно такая же ссылка: когда жмем "СКАЧАТЬ" со страницы граббера
Разве такая же?

$text=@str_replace('dl.php','http://antiwap.ru/load/dl.php',$text);
$text=@str_replace('img.php','http://antiwap.ru/load/img.php',$text);

Если туда смотрю, то ссылки ведут не на ваш скрипт, а прямиком на антивап.

   
 
 автор: demon666   (01.07.2007 в 17:47)   письмо автору
 
   для: kasmanaft   (01.07.2007 в 17:36)
 

нет, я же писал, что убирал.....
вот скрипт...

<?php
#Error_Reporting(0);
$text=@file_get_contents("http://antiwap.ru/load/?$QUERY_STRING");
header("Cache-Control: no-cache");
header("Content-Type:text/html;charset=UTF-8");
//шапка (при необходимости добавляем своё...)
print '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Загрузки</title>
    <link rel="stylesheet" href="default.css" type="text/css">
    </head>
    <body><div class="main">'
;
$text=@preg_replace('|<!D(.*)<body>|U','',$text);
$text=@preg_replace('|<br>Добавил:(.*)user.php(.*)>(.*)</a>|U','',$text);
$text=@preg_replace('|<tr><td class="iteml"><small>(.*)<(.*)stat(.*)>Статистика</a></small></td></tr>|U','',$text);
$text=@preg_replace('|<tr><td class="item" style="border-bottom: solid 1px #000080"><small>(.*)<(.*)rating(.*)>Рейтинг</a></small></td></tr>|U','',$text);
$text=@str_replace('<tr><td class="item" style="border-bottom: solid 1px #000080"><small>&nbsp;<a href="http://offsex.org/old">New Sex Archive</a></small></td></tr>','',$text);
$text=@str_replace('style/folder.gif','folder.gif',$text);
$text=@preg_replace('|<img src="style/ar(.*)<(.*)index(.*)>Главная</a><br>|U','',$text);
$text=@str_replace('style/up.gif','up.gif',$text);
$text=@str_replace('<div class="bottom">','',$text);
#$text=@str_replace("dl.php","http://antiwap.ru/load/dl.php",$text);
$text=@str_replace('img.php','http://antiwap.ru/load/img.php',$text);
$text=@explode('<img src="style/ar.gif" alt="&gt;">&nbsp;<a href="search.php',$text);
print
"$text[0]";
print 
'<small><a href="./"><span>-</span>&nbsp;Загрузки</a><br/><a href="../"><span>-</span>&nbsp;На главную</a></small></div></body></html>'
?>


dl.php

<?
header
("Location:http://antiwap.ru/load/dl.php?$QUERY_STRING");
?>

   
 
 автор: kasmanaft   (01.07.2007 в 19:18)   письмо автору
 
   для: demon666   (01.07.2007 в 17:47)
 

Нда... Оказывается header("Location: ...") тоже передает реферер (если он есть)
Остается, наверное, только яваскрипт.
Что-то вроде (в dl.php)

<script type="text/javascript">
window.location.href = "http://antiwap.ru/load/dl.php?<?php echo $_SERVER['QUERY_STRING'?>";
</script>

Может быть к ссылкам на onclick этот редирект подвесить..

   
 
 автор: demon666   (01.07.2007 в 19:53)   письмо автору
 
   для: kasmanaft   (01.07.2007 в 19:18)
 

Спасибо что помогаете, я Вас достал уже наверное, но и это не работает(((
В JS не силен, если не сказать что вообще пока не силен....
Мда.. а тут в какой-то теме говорили, что нельзя сделать защиту от грабберов...

   
 
 автор: kasmanaft   (01.07.2007 в 20:29)   письмо автору
 
   для: demon666   (01.07.2007 в 19:53)
 

Точно, в опере не работает.. А я в ИЕ проверил и успокоился...
Тогда хз.. видимо никак не обойти (разве что, попробуйет WML)

> нельзя сделать защиту от грабберов...
Ну сам граббер то работает. Ссылки показывает (даже если стояла бы проверка реферера, сессия, еще какие-нибудь заморочки - все можно было бы обойти)
А когда пользователь нажимает на ссылку - это уже другое дело.. граббер тут нипричем.

   
Rambler's Top100
вверх

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