Короткий ответ: вы не можете, если вы действительно не хотите наказать своих пользователей.
Всплывающие окна обычно генерируются на стороне клиента с использованием JavaScript, поэтому вы не можете знать, было ли всплывающее окно заблокировано с сервера, если вы не наблюдаете, как сравнивать запросы на содержимое страницы с запросами на содержимое всплывающего окна с того же IP-адреса. Этот метод производит невероятное количество ложных срабатываний и ложных отрицаний, потому что, если пользователь обновляет страницу, он может не получить всплывающее окно во второй раз, но, возможно, он получил его в первый раз. Или всплывающее окно может быть сгенерировано, и содержимое в этом окне может загружаться независимо от содержимого на остальной части страницы. В результате единственное рациональное решение совершенно ненадежно.
Итак, вы можете написать тест JavaScript, чтобы измерить, было ли всплывающее окно сгенерировано так, как это должно быть при запуске JavaScript. Когда запускается JavaScript, но всплывающее окно не существует сразу, вам придется отключить AJAX, чтобы отправить вам предупреждение, чтобы вы динамически уведомили, что всплывающее окно не удалось загрузить. Однако, если бы я когда-либо видел подобный код, я бы занес весь ваш домен в черный список от моего предприятия и предупредил бы крупные фирмы по обеспечению безопасности, что вы либо вредоносный веб-сайт, либо взломаны.