Когда вы отправляете запрос на веб-сервер (нажмите на ссылку), сервер может отправлять несколько разных ответов. Типичными примерами являются 404 (страница не найдена), 403 (запрещено) или 500 (ошибка сервера). Вероятно, самый распространенный код ответа - 200 (ОК), но вы никогда его не увидите, потому что он обычно сопровождается страницей, которую вы надеялись увидеть.
Здесь есть пара других кодов: 301 и 302. Коды 301 и 302 являются кодами перенаправления, и они сообщают вашему браузеру, что требуемый ответ перемещен в другое место. Основное различие между ними заключается в том, как браузер кеширует вещи. Код 301 означает "перемещен навсегда", и в следующий раз, когда вы попытаетесь перейти по исходной ссылке, браузер может вспомнить, что страница была перемещена и перейти непосредственно в новое местоположение. 302 означает "Найдено в другом месте" и предоставит ссылку, которую ваш браузер должен использовать только временно.
Должна быть возможность написать программу, которая будет проверять ссылку, и до тех пор, пока вы продолжаете получать 30-кратные ответы, следуйте за ответом, пока он, наконец, не получит 200. На этом этапе, вместо загрузки контента, он должен показать вам ссылку.
К сожалению, это также сложнее, чем это. Html-страницу также можно перенаправить на новое место с помощью метатега в разделе заголовка страницы, который выглядит примерно так: <meta http-equiv="refresh" content="0;url=NEW PAGE URL" />
. Таким образом, такая программа уже должна была бы полностью разобрать html, чтобы убедиться, что мы достигли последнего перенаправления.
Кроме того, страница может перенаправить вас дальше, используя javascript, и javascript может быть запутан. Так что теперь наша гипотетическая программа также должна понимать JavaScript. На данный момент у нас есть полнофункциональный веб-браузер. Мы упускаем небольшую мелочь, которая фактически отображает страницу на экране, но в нашей программе есть почти все, что вам нужно для полноценного веб-браузера, включая все сопутствующие проблемы безопасности. Тебе уже не лучше, чем если бы ты просто щелкнул по ссылке, как обычно.