Вымышленные страницы и HTTP-результаты обработаны теми же правилами проверки и уведомлений, что и сохранённые пары. Реальные сайты не запрашиваются, данные в аккаунт не сохраняются, уведомления не отправляются.
Интервал плановый: непрерывная доступность не измеряется. Индексация и позиции здесь не проверяются.
Заполненный журнал — только пример. В пустом укажите реальные источник и цель, время UTC, доказательства, ответственного и результат повторной проверки. Неизвестное оставьте пустым. Это не файл импорта монитора: импорт использует документированные заголовки sourceUrl и targetUrl.
href и цель остаются корректными. Без ожидания анкора второе наблюдение исправно и сообщает об изменении; повтор не создаёт нового уведомления.
Сравните текст с договорённостью и запишите, принят ли он.
{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": 200,
"targetStatus": 200,
"html": "<main><a href=\"https://brand.example.org/guide\">Guide</a></main>"
},
"result": {
"status": "FOUND",
"sourceStatus": 200,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": "Guide",
"observedRel": null,
"matchCount": 1,
"errorCode": null,
"targetErrorCode": null
},
"transition": {
"healthy": true,
"signature": null,
"failures": 0,
"changes": [],
"warning": false,
"recovered": false,
"changed": false,
"nextDelayMs": 86400000,
"alertedSignature": null,
"notification": null
}
}{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": 200,
"targetStatus": 200,
"html": "<main><a href=\"https://brand.example.org/guide\">Updated guide</a></main>"
},
"result": {
"status": "FOUND",
"sourceStatus": 200,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": "Updated guide",
"observedRel": null,
"matchCount": 1,
"errorCode": null,
"targetErrorCode": null
},
"transition": {
"healthy": true,
"signature": null,
"failures": 0,
"changes": [
"anchor"
],
"warning": false,
"recovered": false,
"changed": true,
"nextDelayMs": 86400000,
"alertedSignature": null,
"notification": "trackedChanged"
}
}{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": 200,
"targetStatus": 200,
"html": "<main><a href=\"https://brand.example.org/guide\">Updated guide</a></main>"
},
"result": {
"status": "FOUND",
"sourceStatus": 200,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": "Updated guide",
"observedRel": null,
"matchCount": 1,
"errorCode": null,
"targetErrorCode": null
},
"transition": {
"healthy": true,
"signature": null,
"failures": 0,
"changes": [],
"warning": false,
"recovered": false,
"changed": false,
"nextDelayMs": 86400000,
"alertedSignature": null,
"notification": null
}
}Обе попытки не устанавливают наличие ссылки. UNREACHABLE и цель 200 совпадают: вторая может предупредить при разных ошибках источника. Позднейшая читаемая ссылка даёт восстановление.
Проверьте доступ и повторите. Не считайте ссылку удалённой по этим попыткам.
{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": 403,
"targetStatus": 200,
"html": ""
},
"result": {
"status": "UNREACHABLE",
"sourceStatus": 403,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": null,
"observedRel": null,
"matchCount": 0,
"errorCode": "HTTP_403",
"targetErrorCode": null
},
"transition": {
"healthy": false,
"signature": "UNREACHABLE:200",
"failures": 1,
"changes": [],
"warning": false,
"recovered": false,
"changed": false,
"nextDelayMs": 3600000,
"alertedSignature": null,
"notification": null
}
}{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": null,
"targetStatus": 200,
"html": "",
"sourceError": "PAGE_TIMEOUT"
},
"result": {
"status": "UNREACHABLE",
"sourceStatus": null,
"targetStatus": 200,
"sourceFinalUrl": null,
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": null,
"observedRel": null,
"matchCount": 0,
"errorCode": "PAGE_TIMEOUT",
"targetErrorCode": null
},
"transition": {
"healthy": false,
"signature": "UNREACHABLE:200",
"failures": 2,
"changes": [],
"warning": true,
"recovered": false,
"changed": false,
"nextDelayMs": 3600000,
"alertedSignature": "UNREACHABLE:200",
"notification": "trackedAttention"
}
}{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": 200,
"targetStatus": 200,
"html": "<main><a href=\"https://brand.example.org/guide\">Guide</a></main>"
},
"result": {
"status": "FOUND",
"sourceStatus": 200,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": "Guide",
"observedRel": null,
"matchCount": 1,
"errorCode": null,
"targetErrorCode": null
},
"transition": {
"healthy": true,
"signature": null,
"failures": 0,
"changes": [
"status"
],
"warning": false,
"recovered": true,
"changed": false,
"nextDelayMs": 86400000,
"alertedSignature": null,
"notification": "trackedRecovered"
}
}Два читаемых ответа не содержат ожидаемый href. Второй предупреждает; возвращённая статическая ссылка даёт восстановление.
Проверьте HTML и точный ожидаемый URL. Редиректы и отрисовку исследуйте отдельно.
{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": 200,
"targetStatus": 200,
"html": "<main><p>No target link in this fixture.</p></main>"
},
"result": {
"status": "NOT_FOUND",
"sourceStatus": 200,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": null,
"observedRel": null,
"matchCount": 0,
"errorCode": "NOT_FOUND_IN_HTML",
"targetErrorCode": null
},
"transition": {
"healthy": false,
"signature": "NOT_FOUND:200",
"failures": 1,
"changes": [],
"warning": false,
"recovered": false,
"changed": false,
"nextDelayMs": 3600000,
"alertedSignature": null,
"notification": null
}
}{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": 200,
"targetStatus": 200,
"html": "<main><p>No target link in this fixture.</p></main>"
},
"result": {
"status": "NOT_FOUND",
"sourceStatus": 200,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": null,
"observedRel": null,
"matchCount": 0,
"errorCode": "NOT_FOUND_IN_HTML",
"targetErrorCode": null
},
"transition": {
"healthy": false,
"signature": "NOT_FOUND:200",
"failures": 2,
"changes": [],
"warning": true,
"recovered": false,
"changed": false,
"nextDelayMs": 3600000,
"alertedSignature": "NOT_FOUND:200",
"notification": "trackedAttention"
}
}{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": 200,
"targetStatus": 200,
"html": "<main><a href=\"https://brand.example.org/guide\">Guide</a></main>"
},
"result": {
"status": "FOUND",
"sourceStatus": 200,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": "Guide",
"observedRel": null,
"matchCount": 1,
"errorCode": null,
"targetErrorCode": null
},
"transition": {
"healthy": true,
"signature": null,
"failures": 0,
"changes": [
"status"
],
"warning": false,
"recovered": true,
"changed": false,
"nextDelayMs": 86400000,
"alertedSignature": null,
"notification": "trackedRecovered"
}
}Анкор присутствует всегда. Два ответа цели 404 делают результат проблемным и создают предупреждение; 200 восстанавливает исправность.
Назначьте владельцу цели. Менять исходную ссылку не обязательно правильно.
{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": 200,
"targetStatus": 404,
"html": "<main><a href=\"https://brand.example.org/guide\">Guide</a></main>"
},
"result": {
"status": "FOUND",
"sourceStatus": 200,
"targetStatus": 404,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": "Guide",
"observedRel": null,
"matchCount": 1,
"errorCode": null,
"targetErrorCode": "HTTP_404"
},
"transition": {
"healthy": false,
"signature": "FOUND:404",
"failures": 1,
"changes": [],
"warning": false,
"recovered": false,
"changed": false,
"nextDelayMs": 3600000,
"alertedSignature": null,
"notification": null
}
}{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": 200,
"targetStatus": 404,
"html": "<main><a href=\"https://brand.example.org/guide\">Guide</a></main>"
},
"result": {
"status": "FOUND",
"sourceStatus": 200,
"targetStatus": 404,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": "Guide",
"observedRel": null,
"matchCount": 1,
"errorCode": null,
"targetErrorCode": "HTTP_404"
},
"transition": {
"healthy": false,
"signature": "FOUND:404",
"failures": 2,
"changes": [],
"warning": true,
"recovered": false,
"changed": false,
"nextDelayMs": 3600000,
"alertedSignature": "FOUND:404",
"notification": "trackedAttention"
}
}{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": 200,
"targetStatus": 200,
"html": "<main><a href=\"https://brand.example.org/guide\">Guide</a></main>"
},
"result": {
"status": "FOUND",
"sourceStatus": 200,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": "Guide",
"observedRel": null,
"matchCount": 1,
"errorCode": null,
"targetErrorCode": null
},
"transition": {
"healthy": true,
"signature": null,
"failures": 0,
"changes": [
"destination"
],
"warning": false,
"recovered": true,
"changed": false,
"nextDelayMs": 86400000,
"alertedSignature": null,
"notification": "trackedRecovered"
}
}sponsored дважды противоречит ожиданию follow. Исправление ожидания на sponsored не меняет страницу и сбрасывает предупреждение.
Запишите исправленные условия, сохраните обозначение платной связи. Редактирование настроек — не ремонт у издателя.
{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": "follow"
},
"input": {
"sourceStatus": 200,
"targetStatus": 200,
"html": "<main><a href=\"https://brand.example.org/guide\" rel=\"sponsored\">Guide</a></main>",
"rel": "follow"
},
"result": {
"status": "ATTRIBUTES_CHANGED",
"sourceStatus": 200,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": "Guide",
"observedRel": "sponsored",
"matchCount": 1,
"errorCode": "EXPECTATION_MISMATCH",
"targetErrorCode": null
},
"transition": {
"healthy": false,
"signature": "ATTRIBUTES_CHANGED:200",
"failures": 1,
"changes": [],
"warning": false,
"recovered": false,
"changed": false,
"nextDelayMs": 3600000,
"alertedSignature": null,
"notification": null
}
}{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": "follow"
},
"input": {
"sourceStatus": 200,
"targetStatus": 200,
"html": "<main><a href=\"https://brand.example.org/guide\" rel=\"sponsored\">Guide</a></main>",
"rel": "follow"
},
"result": {
"status": "ATTRIBUTES_CHANGED",
"sourceStatus": 200,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": "Guide",
"observedRel": "sponsored",
"matchCount": 1,
"errorCode": "EXPECTATION_MISMATCH",
"targetErrorCode": null
},
"transition": {
"healthy": false,
"signature": "ATTRIBUTES_CHANGED:200",
"failures": 2,
"changes": [],
"warning": true,
"recovered": false,
"changed": false,
"nextDelayMs": 3600000,
"alertedSignature": "ATTRIBUTES_CHANGED:200",
"notification": "trackedAttention"
}
}Перед проверкой изменены ожидания. Счётчики сброшены; это не доказывает исправление сайта.
{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": "sponsored"
},
"input": {
"sourceStatus": 200,
"targetStatus": 200,
"html": "<main><a href=\"https://brand.example.org/guide\" rel=\"sponsored\">Guide</a></main>",
"rel": "sponsored",
"reset": true
},
"result": {
"status": "FOUND",
"sourceStatus": 200,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": "Guide",
"observedRel": "sponsored",
"matchCount": 1,
"errorCode": null,
"targetErrorCode": null
},
"transition": {
"healthy": true,
"signature": null,
"failures": 0,
"changes": [
"status"
],
"warning": false,
"recovered": false,
"changed": false,
"nextDelayMs": 86400000,
"alertedSignature": null,
"notification": null
}
}Скрипт вставил бы анкор в браузере. Статический анализ игнорирует текст скрипта и не находит ссылку в обеих проверках.
Сравните отрисовку и HTML сервера. Предупреждение не подтверждает отсутствие ссылки в браузере.
{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": 200,
"targetStatus": 200,
"html": "<main id=\"root\"></main><script>document.getElementById(\"root\").innerHTML=\"<main><a href=\\\"https://brand.example.org/guide\\\">Guide</a></main>\";</script>"
},
"result": {
"status": "NOT_FOUND",
"sourceStatus": 200,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": null,
"observedRel": null,
"matchCount": 0,
"errorCode": "NOT_FOUND_IN_HTML",
"targetErrorCode": null
},
"transition": {
"healthy": false,
"signature": "NOT_FOUND:200",
"failures": 1,
"changes": [],
"warning": false,
"recovered": false,
"changed": false,
"nextDelayMs": 3600000,
"alertedSignature": null,
"notification": null
}
}{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": 200,
"targetStatus": 200,
"html": "<main id=\"root\"></main><script>document.getElementById(\"root\").innerHTML=\"<main><a href=\\\"https://brand.example.org/guide\\\">Guide</a></main>\";</script>"
},
"result": {
"status": "NOT_FOUND",
"sourceStatus": 200,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": null,
"observedRel": null,
"matchCount": 0,
"errorCode": "NOT_FOUND_IN_HTML",
"targetErrorCode": null
},
"transition": {
"healthy": false,
"signature": "NOT_FOUND:200",
"failures": 2,
"changes": [],
"warning": true,
"recovered": false,
"changed": false,
"nextDelayMs": 3600000,
"alertedSignature": "NOT_FOUND:200",
"notification": "trackedAttention"
}
}Первоначальный href не меняется и ведёт к исправной цели через другой конечный URL. Второй результат сообщает об изменении, не о потере.
Проверьте содержание и путь редиректа. Конечный URL не раскрывает канонический адрес, выбранный Google.
{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": 200,
"targetStatus": 200,
"html": "<main><a href=\"https://brand.example.org/guide\">Guide</a></main>"
},
"result": {
"status": "FOUND",
"sourceStatus": 200,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/guide",
"observedAnchor": "Guide",
"observedRel": null,
"matchCount": 1,
"errorCode": null,
"targetErrorCode": null
},
"transition": {
"healthy": true,
"signature": null,
"failures": 0,
"changes": [],
"warning": false,
"recovered": false,
"changed": false,
"nextDelayMs": 86400000,
"alertedSignature": null,
"notification": null
}
}{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": 200,
"targetStatus": 200,
"html": "<main><a href=\"https://brand.example.org/guide\">Guide</a></main>",
"targetFinal": "https://brand.example.org/new-guide"
},
"result": {
"status": "FOUND",
"sourceStatus": 200,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/new-guide",
"observedAnchor": "Guide",
"observedRel": null,
"matchCount": 1,
"errorCode": null,
"targetErrorCode": null
},
"transition": {
"healthy": true,
"signature": null,
"failures": 0,
"changes": [
"targetRedirect"
],
"warning": false,
"recovered": false,
"changed": true,
"nextDelayMs": 86400000,
"alertedSignature": null,
"notification": "trackedChanged"
}
}{
"expected": {
"sourceUrl": "https://publisher.example.org/article",
"targetUrl": "https://brand.example.org/guide",
"expectedAnchor": "",
"expectedRel": ""
},
"input": {
"sourceStatus": 200,
"targetStatus": 200,
"html": "<main><a href=\"https://brand.example.org/guide\">Guide</a></main>",
"targetFinal": "https://brand.example.org/new-guide"
},
"result": {
"status": "FOUND",
"sourceStatus": 200,
"targetStatus": 200,
"sourceFinalUrl": "https://publisher.example.org/article",
"targetFinalUrl": "https://brand.example.org/new-guide",
"observedAnchor": "Guide",
"observedRel": null,
"matchCount": 1,
"errorCode": null,
"targetErrorCode": null
},
"transition": {
"healthy": true,
"signature": null,
"failures": 0,
"changes": [],
"warning": false,
"recovered": false,
"changed": false,
"nextDelayMs": 86400000,
"alertedSignature": null,
"notification": null
}
}Разберите последовательность проверок Вымышленные страницы и HTTP-результаты обработаны теми же правилами проверки и уведомлений, что и сохранённые пары. Реальные сайты не запрашиваются, данные в аккаунт не сохраняются, уведомления не отправляются. Заполненный журнал — только пример. В пустом укажите реальные источник и цель, время UTC, доказательства, ответственного и результат повторной проверки. Неизвестное оставьте пустым. Это не файл импорта монитора: импорт использует документированные заголовки sourceUrl и targetUrl. Интервал плановый: непрерывная доступность не измеряется. Индексация и позиции здесь не проверяются. Проверяется только HTML сервера. JavaScript-ссылки, блокировки и временные ошибки могут требовать ручной проверки. Индексация и позиции не измеряются. Исправные ссылки проверяются ежедневно, проблемные — через час. Две одинаковые ошибки создают уведомление в аккаунте. История хранится 90 дней. 50 пар на аккаунт. 100 запрошенных проверок в день, включая добавления и изменения ожиданий. Между ручными проверками — пять минут. M01 · Анкор исправной ссылки меняется href и цель остаются корректными. Без ожидания анкора второе наблюдение исправно и сообщает об изменении; повтор не создаёт нового уведомления. Сравните текст с договорённостью и запишите, принят ли он. M02 · Сначала 403, затем тайм-аут Обе попытки не устанавливают наличие ссылки. UNREACHABLE и цель 200 совпадают: вторая может предупредить при разных ошибках источника. Позднейшая читаемая ссылка даёт восстановление. Проверьте доступ и повторите. Не считайте ссылку удалённой по этим попыткам. M03 · Нет в читаемом HTML Два читаемых ответа не содержат ожидаемый href. Второй предупреждает; возвращённая статическая ссылка даёт восстановление. Проверьте HTML и точный ожидаемый URL. Редиректы и отрисовку исследуйте отдельно. M04 · Ссылка найдена, цель сломана Анкор присутствует всегда. Два ответа цели 404 делают результат проблемным и создают предупреждение; 200 восстанавливает исправность. Назначьте владельцу цели. Менять исходную ссылку не обязательно правильно. M05 · Неверное ожидание rel sponsored дважды противоречит ожиданию follow. Исправление ожидания на sponsored не меняет страницу и сбрасывает предупреждение. Запишите исправленные условия, сохраните обозначение платной связи. Редактирование настроек — не ремонт у издателя. M06 · Ссылку вставляет JavaScript Скрипт вставил бы анкор в браузере. Статический анализ игнорирует текст скрипта и не находит ссылку в обеих проверках. Сравните отрисовку и HTML сервера. Предупреждение не подтверждает отсутствие ссылки в браузере. M07 · Конечная цель перемещается Первоначальный href не меняется и ведёт к исправной цели через другой конечный URL. Второй результат сообщает об изменении, не о потере. Проверьте содержание и путь редиректа. Конечный URL не раскрывает канонический адрес, выбранный Google.