| ситуация: есть таблица в БД с адресами файлов на сервере sendspace.com, адреса имеют вид http://sendspace.com/file/{file_id) (http://sendspace.com/file/v4n9zr, например). файлы после заливки через некоторое время (которого я точно не знаю, к сожалению) с сервера удаляются :-(. а заливаем мы много, и они нам нужны.
задача: написать робота, который будет имитировать скачивание файлов.
что я смог сделать сам:
ссылка на файл генерируется не на http://sendspace.com/, а на файл на моём сервере, который с использованием класса Snoopy получает с сервера страницу со ссылкой на файл. нужно заметить, что ссылка генерируется через JavaScript, так что скачивание по клику осуществить мне не удалось. зато удалось сделать переадресацию через тот же JavaScript на тот же файл на сервере с параметром /my_dir/index.php?link={ссылка_на_файл}, только эта ссылка_на_файл - не просто URL, а <a href="URL">file_name</a> :-(. так что параметр чистится и делается вторая переадресация (уже через PHP напрямую на файл).
В итоге всё выглядит красиво - выбираем ссылку в списке, кликаем и через две-три секунды (пока загрузится страница и выполнится JavaScript) вылетает окошко о сохранении файла. :)
Но как я уже сказал, этого мало, ибо нужно организовать весь процесс автоматически, чтобы робот читал таблицу и по ней скачивал файлы.
вот используемый код:
<?
if(isset($_GET['fileid']))
{
$fileid = $_GET['fileid'];
$filename = $_GET['filename'];
include 'Snoopy.class.php';
$snoopy = new Snoopy;
$snoopy->fetch("http://www.sendspace.com/file/$fileid");
$content = $snoopy->results;
$content = str_replace('<script>document.write(link_dec)</script>', '<big><b><script>document.write(link_dec)</script></b></big>-hoi-', $content);
$content = str_replace('-hoi-', "<script language='JavaScript'><!-- //
window.location.href = 'http://nepopsisty.net/filemanager/uploads/?link=' + link_dec;
// --></script>", $content);
$content = str_replace("<head>", "<head><BASE href='http://sendspace.com'", $content);
print substr(trim($content), 0, strpos($content, '<b><i>send</i>space</b> is the best file transfer and exchange'));
}
elseif(isset($_GET['link']))
{
$link = str_replace('http://sendspace.com/%3Ca%20id=%22downlink%22%20href=%22<a id="downlink" href="', '' ,$_GET['link']);
$first = strpos($link, '">') + 2;
$second = strpos($link, '</a>');
$name = substr($link, $first, $second - $first);
$link = str_replace('<a id="downlink" href="', '', str_replace('">'. $name . '</a>', '', $link));
Header('Location: ' . $link);
}
?>
|
просмотреть работу можно так: http://nepopsisty.net/filemanager/uploads/?fileid=v4n9zr&filename=Maxima.rar
крон на сервере есть, запускать можно раз в 15 минут. | |