По каким признакам в браузере узнать недоступность страницы?

  • Автор темы Автор темы Axel
  • Дата начала Дата начала

Axel

Client
Регистрация
20.03.2017
Сообщения
188
Реакции
10
Баллы
18
Подскажите, как лучше и быстрее понять что по url страница недоступна, если я использую не GET запрос а именно открытие в браузере? Проверять регуляркой сообщение браузера?

Но там и Not Found и This Ssite cannot be reached, и 404 и http 500 error так далее вариантов ответов, но по сути надо всех их выявлять. Заголовок 200 ок тоже есть при том что реально страницы нет.
 
Подскажите, как лучше и быстрее понять что по url страница недоступна, если я использую не GET запрос а именно открытие в браузере? Проверять регуляркой сообщение браузера?

Но там и Not Found и This Ssite cannot be reached, и 404 и http 500 error так далее вариантов ответов, но по сути надо всех их выявлять. Заголовок 200 ок тоже есть при том что реально страницы нет.
В таком случае проверка статического текста, который есть на успешно загруженной странице - вполне подходящий вариант. Можно например проверять текст из футера/подвала сайта, например копирайт.
 
  • Спасибо
Реакции: Axel
r
Подскажите, как лучше и быстрее понять что по url страница недоступна, если я использую не GET запрос а именно открытие в браузере? Проверять регуляркой сообщение браузера?

Но там и Not Found и This Ssite cannot be reached, и 404 и http 500 error так далее вариантов ответов, но по сути надо всех их выявлять. Заголовок 200 ок тоже есть при том что реально страницы нет.
как вариант
if(instance.ActiveTab.PageText.Length>100)
 
  • Спасибо
Реакции: Axel и pe4enkin
r

как вариант
if(instance.ActiveTab.PageText.Length>100)
Хотелось бы, выглядит хорошо, но по факту любая
-----

This site can’t be reached​

*****.com’s server IP address could not be found.


Try:

ERR_NAME_NOT_RESOLVED
-----
Уже 240+ символов, и тут же прокололся на том что и нормальные страницы пошли под отсев по символам.
 
Подскажите, как лучше и быстрее понять что по url страница недоступна, если я использую не GET запрос а именно открытие в браузере? Проверять регуляркой сообщение браузера?

Но там и Not Found и This Ssite cannot be reached, и 404 и http 500 error так далее вариантов ответов, но по сути надо всех их выявлять. Заголовок 200 ок тоже есть при том что реально страницы нет.
Через JS
return window.document.location.href

Попробуйте?
При ошибке должно быть 'chrome-error://chromewebdata/'
 
  • Спасибо
Реакции: pe4enkin
Хотелось бы, выглядит хорошо, но по факту любая
-----

This site can’t be reached​

*****.com’s server IP address could not be found.


Try:

ERR_NAME_NOT_RESOLVED
-----
Уже 240+ символов, и тут же прокололся на том что и нормальные страницы пошли под отсев по символам.

100 от балды указал, смысл думаю был понятен. Вот ниже код, он не окончательный, неплохо добавить дополнительные проверки8-)

Код:
Развернуть Свернуть Копировать
instance.ActiveTab.Navigate("любой сайт");


Thread.Sleep(1000);

string site_error= instance.ActiveTab.PageText;

if(site_error.Length<500)
    throw new Exception(site_error);
return "good";
 
Для одного сайта я бы открыл рядом рабочую страницу и заведомо несуществующий URL. Если обе вернули 200 и одинаковый футер, проверяй элемент самой страницы, например заголовок карточки товара, которого нет на заглушке. Для произвольных доменов я бы оставлял отдельный результат «непонятно»: ни длина HTML, ни сам код 200 тут ничего не доказывают.
 
Я бы ещё на canonical смотрел: у нормальных страниц обычно есть link rel=canonical, а у страниц ошибок и заглушек его часто нет. Вместе с проверкой на chrome-error:// это почти всё закроет.
 
  • Спасибо
Реакции: Sergodjan
Спасибо за идеи, парни.
Тоже было нужно!
 
Ещё один вариант к футеру: проверять не только наличие нужного текста, но и заголовок страницы плюс размер DOM. У нас пустые «200 OK» с заглушкой часто выдавали нормальный title, но почти пустой body. Делаем две проверки: ключевой элемент на странице и минимальную длину текста. Так ложных срабатываний заметно меньше, чем на регулярках по тексту ошибок.
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)