Автор Тема: Как узнать о редиректе?  (Прочитано 7249 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн vovanabok

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как узнать о редиректе?
« : 26 Ноября 2008, 22:20:21 »
Есть пхп-скрипт "S", который грабит контент некой хтмл-страницы "А". У которой, соответственно, есть урл-адрес "А-урл".

Но вот, переходя по адресу "А-урл", для скрипта открывается страница "Б" вследствии действия Коварного_редиректа, некогда установленного на странице "А".

Вопрос: как в пхп-скрипте "S" узнать, имел ли место Коварный_редирект и что скрипт грабит на самом деле совершенно другую, совершенно ни в чем невиноватую страницу "Б"?

Постусловие: контент страницы "А" разработчику неизвестен.

Оффлайн APL

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 344
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.aerozone.ru
Как узнать о редиректе?
« Ответ #1 : 26 Ноября 2008, 23:12:21 »
это не редирект... скрипт, как и браузер, по http-запросу получает то, что выдает сервер, и браузер, если там стоит редирект перенаправляет на другую стр, а скрипт получит все нормально...

или вы под редиректом что-то другое имеете в виду...

или уж напишите что по вашему такое "для скрипта открывается страница "Б""?
"для скрипта" ничего не открывается :)

Оффлайн vovanabok

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как узнать о редиректе?
« Ответ #2 : 27 Ноября 2008, 00:03:41 »
отслеживая отображаемые результаты граббинга очереди страниц, я увидел, что вместо ожидаемого [title] страницы "А" в окошке броузера отображается [title] страницы "Б", на которую, как я понял, и произошел редирект.

что еще могу сказать: урл желаемой страницы "А" имел примерно такой вид:
http://какой.то.урл/component/option,com_banners/task,click/bid,6/news/article/491/1/article/497/1/
подозрительный конечно урл. но не ставить же резалку, которая будет отметать все урлы, что имеют строку "banner" или "click".

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Как узнать о редиректе?
« Ответ #3 : 27 Ноября 2008, 00:15:40 »
vovanabok
Цитировать
vovanabok:
по адресу "А-урл", для скрипта открывается страница "Б" вследствии

Контент забирается чем? Способ?
Ну а вообще - curl.

* адрес здесь ни при чем.
LJ: Backslashed life (rss)

Оффлайн vovanabok

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как узнать о редиректе?
« Ответ #4 : 27 Ноября 2008, 12:41:03 »
Граблю таким способом:

Цитировать
function get_url_content($url){
   $c = \'\';
   $fo = @fopen($url, "r");
   while (!feof($fo)) {
      $c .= fread($fo, 8192);
   }
   fclose($fo);
   return $c;
}


2 CGVictor: curl нужно ставить, как я понял. скрипт на не моем хостинге работает...

2 APL: чтоб ответить на вопрос, продолжаю тестирование...

Оффлайн APL

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 344
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.aerozone.ru
Как узнать о редиректе?
« Ответ #5 : 27 Ноября 2008, 13:40:00 »
Поправьте, если ошибаюсь....

Почитал описание fopen() и fread()... не вижу там никакого парсинга html :) т.е. редирект возможен только со стороны web-сервера и/или скриптов отвечающих за выдачу html, а это уже не лечится... может там проверка referrer\'а или типа того :)

А если он стоит в html типа
, то функция и должна вернуть такую html-ку и ей этот рефреш уже по барабану...

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Как узнать о редиректе?
« Ответ #6 : 27 Ноября 2008, 23:45:07 »
vovanabok
Общий постулат: если удаленный сервер действительно что-то куда-то редиректит, то делает он это только по одному условию - по несовпадению параметров запроса (user agent и прочая). Других отличий для него как бы и нет.
Лечится отправкой полного запроса (либо через curl, либо fsockopen).

Либо это делает не он, а кривые руки где-то между (что мы, впрочем, не узнаем). В случае кривых рук тогда рекомендую попробовать не fread/feof, а просто [p]file_get_contents[/p].

Curl вообще обычно на хостах есть, довольно стандартная-устоявшаяся штука. Если нет - можно и хостера пнуть, по той же причине.
LJ: Backslashed life (rss)

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Как узнать о редиректе?
« Ответ #7 : 28 Ноября 2008, 10:21:46 »
Самое смешное то, что здесь, скорее всего, все наоборот, ребята )

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Как узнать о редиректе?
« Ответ #8 : 30 Ноября 2008, 13:16:07 »
[off]hanslinger
Т.е. редиректа нет? Как и ложки? :)[/off]
LJ: Backslashed life (rss)

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Как узнать о редиректе?
« Ответ #9 : 01 Декабря 2008, 10:49:36 »
Он есть, но для браузера нашего друга. А скрипту на него положить. Вот и не совпадают заголовки, незадача.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28