Влад23 » 2013.12.09 21:40

Реальноли грабить страничку на которой стоит 301 редирект на аналогичную

Код:

1
span style="color: #0000BB"><?php//.....Файл parser.php содержимое сграбленного выводится в зависимости от id http://сайт.ru/parser.php?id=595 дает результат грабежа со странице //http://сайт.ru/index.php?newsid=595 (эта страничка так же //доступна mod rewrite http://сайт.ru/595-kakoito-text.html).....................................................*/define('DATALIFEENGINE', true);define('ROOT_DIR', dirname (__FILE__));define('ENGINE_DIR', ROOT_DIR.'/engine');include_once(ENGINE_DIR.'/classes/mysql.php');include_once(ENGINE_DIR.'/data/dbconfig.php');include_once(ENGINE_DIR.'/data/config.php');include_once(ENGINE_DIR.'/modules/functions.php');$db->connect(DBUSER, DBPASS, DBNAME, DBHOST, 1);//......Тут я получаю ID новости$id = ((($_GET['id'] = intval(@$_GET['id'])) < 1) ? 1 : $_GET['id']);$query = $db->query( 'SELECT * FROM `'.PREFIX.'_post` WHERE `id`=' .$id);//echo $alt_name; - Эту переменную я не могу получить тк не получается//print 'http://сайт.ru/'.$id.'-'.$alt_name.'--.html'; - Это я пытался получить переменную и составить адрес c mod rewrite но получаю хуй//print $newsid; - Значит будем грабить с адреса без mod rewrite preg_match( '/<div class=\"video\">(.*?)<\/div><\/div><\/div>/is' , $text, $out );//echo $out[0];//print 'http://сайт.ru/index.php?newsid='.$id.''; - Получается вывести адрес без mod rewrite//..........Переменная ID это индификатор странички с которой я сграблю все что в див video$ch = curl_init('http://сайт.ru/index.php?newsid='.$id.''); //....Параметры курлаcurl_setopt($ch, CURLOPT_USERAGENT, 'IE20');curl_setopt($ch, CURLOPT_HEADER, 0);// ........Следующая опция необходима для того, чтобы функция curl_exec() возвращала значение а не выводила содержимое переменной на экранcurl_setopt($ch, CURLOPT_RETURNTRANSFER, '1');// .........Получаем html$text = curl_exec($ch);// Отключаемсяcurl_close($ch);// ......Находим и сохраняем нужный фрагментpreg_match( '/<div class=\"video\">(.*?)<\/div>/is' , $text, $links ); //........Вывожу сграбленное echo '<style>.video{padding-bottom:55.25%;height:0;overflow:hidden;}.video iframe,.video object,.video embed{position:absolute;top:0;left:0;width:100%;height:100%;}</style> '; echo $links[0]; // вывожу то что сграбил ?>

Граблю странички типа: http://сайт.ru/index.php?newsid=786 но на ней стоит редирект 301 на http://сайт.ru/786-kakoito-text.html содержимое идентично, есть может вариант что бы грабер продолжал работать если стоит перенаправление?

Влад23 » 2013.12.09 21:59

Конечно это против всех правил мне кажется (можно зациклить), но может все же есть...

Gemorroj » 2013.12.09 22:20

http://www.php.net/manual/ru/function.curl-setopt.php см. CURLOPT_FOLLOWLOCATION

Влад23 » 2013.12.10 03:24

благодарю

TLENS » 2013.12.13 18:13

Влад23 Попробуй передать реферер. Возможно из за него он тебя шлет туда

Влад23 » 2013.12.14 00:41

нет там в настройках DLE есть исправлять неверные URL типа seo оптимизация, если она включена то идет 301 редирект на версию страницы с мод реврайтом (с http://сайт.ru/index.php?newsid=595 на http://сайт.ru/595-kakoito-text.html), приходится отключать что бы не было 301 тогда парсит все ок работает. Сейчас вот у меня отключен вот пример результата под хайдом , его можно вставить в опере в исходный код нажать применить и посмотреть результат:(на вапинет, как то эту возможность отключили)

Показать/Скрыть
<iframe src="http://ap#ilm.ru/kino.php?id=104" width="607" height="360"></iframe>

А что хайд не работоает то?, тогда знак # замените на f, ид вконце это ид страницы, можно его заменить...