Есть веб-сайт, размещенный на сервере (A), который отправляет запрос HttpRequest через php на другой веб-сайт, размещенный на другом сервере (B).
Каждый раз, когда пользователь нажимает кнопку на домашней странице веб-сайта, расположенного на A, A делает запрос на получение html-страницы B.
Может ли B заблокировать эти запросы от A?
Краткий ответ: да, это возможно.
Длинный ответ: это не практично. Хотя вы можете заблокировать IP-адрес сервера, но если владелец сервера действительно хочет это сделать, он / она может просто получить бесплатный прокси-сервер и затем отправить запрос, вы никогда не сможете определить, отправлен ли запрос с сервера A или действительный пользователь.
Простой ответ — да.
Есть несколько способов сделать это, начиная от блокировки вашего конкретного IP-адреса до блокировки запроса с определенными заголовками (или даже с отсутствующими заголовками).
Обычный метод не позволяет хотлинкинг, который обычно проверяет, существует ли заголовок реферера и соответствует ли он их собственному сайту.
Да. Есть много способов сделать это, как через PHP, так и через брандмауэр.
Например, вы можете поместить в верхней части вашего файла PHP на B
if( $_SERVER['REMOTE_ADDR'] == "whatever-ip-here" ) die();
Другой пример использует Linux / iptables. Это немного сложнее в настройке и будет блокировать все, что происходит от A (в соединениях будет отказано):
iptables -A INPUT -s putipaddresshere -j DROP