Артем Л.
11416 сообщений
#12 лет назад
Здравствуйте.
Подскажите пожалуйста, неужели правда никак нельзя программно отследить редирект выполненный при помощи javascript?
Может есть какие-то решения позволяющие отлавливать хотя бы небольшой процент таких редиректов?
Дмитрий Засядько
87 сообщений
#12 лет назад
Что имеется в виду непонятно. Надо отлавливать изменение href.location при помощи javascript? Или определять что ответ ajax запроса делает редирект?
Артем Л.
11416 сообщений
#12 лет назад
Поисковый бот заходит на сайт.
Если на сайте производится редирект с помощью header Location то можно с помощью курла определить наличие редиректа.
Если же редирект производится с помощью яваскрипта, то курл соответственно такой редирект не определит.
Вот задача стоит в том что бы на произвольном сайте программно определять наличие какого-либо редиректа.
Дмитрий Засядько
87 сообщений
#12 лет назад
Первое что приходит в голову - использовать headless браузер. Думаю можно приспособить для этих целей
Дмитрий Засядько
87 сообщений
#12 лет назад
Кстати, mink можно использовать и для парсинга - вот так поиск по документу выполняется например.
Андрей Халецкий
3562 сообщения
#12 лет назад
Курлом конечно нельзя не только отследить но и последовать по любому редиректу кроме как "локейшн..."
Для того что бы распознать другие типы редиректов (мета, яваскрипт, флеш(?)) - нужно выполнять соответсвующие дерективы. Самое простое решение - влоб, использовать браузер (селениум и ко для управления) либо сторонние решения/фреймворки.
Артем Л.
11416 сообщений
#12 лет назад
Спасибо за ценные советы, буду изучать
Стас Б.
5 сообщений
#12 лет назад
Я в последнее время phantomjs полюбил - очень мощная штука для работы с сайтами. прям то, что хотелось всегда и такое там определить, как 5 копеек - по-сути же браузер обычный, так что все что будет в обычном браузере, будет и там.
Артем Л.
11416 сообщений
#12 лет назад
Цитата ("k1on"):
Я в последнее время phantomjs полюбил

Как раз догуглился до него, но пока мало что понятно. Буду изучать.

Цитата ("k1on"):
и такое там определить, как 5 копеек

Если не сложно могли бы вы привести скрипт определения редиректа?
Стас Б.
5 сообщений
#12 лет назад
page.open(address, function(status){

if (status !== 'success') {
console.log('error:FAIL to load the address status:' + status + " url:" + address);
phantom.exit();
} else {
page.evaluate(function() {
console.log(document.location);
});
}
});

если адрес не совпадает, то стало быть редирект
Артем Л.
11416 сообщений
#12 лет назад
Хммм, спасибо, буду пробовать
Стас Б.
5 сообщений
#12 лет назад
Hungry_Hunter, там легко, я разобрался за пару дней и стало реально удобнее работать с парсингом. на обычных сайтах так же, а вот где заботятся о том, "чтобы не украли" - вообще вещь!
спрашивайте, отвечу.
Артем Л.
11416 сообщений
#12 лет назад
Спасибо большое, обязательно спрошу если не разберусь.
Думаю всесильный гугл мне в этом поможет
Андрей Ч.
61 сообщение
#12 лет назад
Phantomjs неплохая вещь, да. Но можно взять компоненты IE или хромиум (для дельфи точно есть, мб в сишарп, с++ билдер тоже), и использовать как полноценный браузер. Или вызывать СОМ объект IE , это можно хоть с Ассемблера делать.
Стас Б.
5 сообщений
#12 лет назад
Цитата ("flisk88"):
Phantomjs неплохая вещь, да. Но можно взять компоненты IE или хромиум (для дельфи точно есть, мб в сишарп, с++ билдер тоже), и использовать как полноценный браузер. Или вызывать СОМ объект IE , это можно хоть с Ассемблера делать.

фантом кроссплатформенный.