Это связано с тем, что метод print отображает flextable, он не возвращает значение HTML. Метод format(fletable_obj, type = "HTML")
возвращает значение HTML.
Вы должны изменить создание HTML следующим образом:
msgJP <- try(mime_part(paste('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>HTML demo</title>
<style type="text/css">
</style>
</head>
<body>',"hello,<br>","check out the data for self audit.","<br>",
format(flextable(samplemondata), type = "html"),
'</body>
</html>')))
Вы не сможете обнаружить это, если они не передадут специальные заголовки, в которых это явно упоминается, например, X-Forwarded-For или что-то в этом роде.
Насколько я знаю, вы должны использовать черный список. Пользователи, которые используют переадресацию портов, VPN или другие более сложные методы, незаметны, поскольку они ведут себя точно так же, как обычные пользователи.
Metasploit использует множество различных методов, чтобы заставить клиентскую систему устанавливать прямое соединение (уязвимости / недостатки в Flash, Java, QuickTime, MS Office, настраиваемый DNS-сервер).
В качестве альтернативы. , если вы не можете заставить браузер клиента запустить metasploit, вы можете попытаться найти открытые прокси (сканирование портов) и известные узлы выхода Tor .
Но, пожалуйста, не думайте, что прокси - это зло и должны быть заблокированы - существует множество легитимных прокси, и некоторым пользователям приходится их использовать.
Если у вас проблемы со спамом или другим недобросовестным трафиком, то простое блокирование прокси не очень поможет. Вам следует искать конкретные решения, которые решают суть проблемы (спам-фильтры, IDS), а не предполагать, что anonymous = guilty.
Все, что клиент передает серверу, можно настроить самостоятельно. Нельзя доверять ничему, кроме IP-адреса. Таким образом, вы не можете проверить данные заголовка, если это прокси или обычный клиент.
Между прочим: намерение прокси-сервера не показывать, что оно является прокси :)
Конечно, вы можете взять IP-адрес запрашивающей стороны и отправить http-запрос, который вы отправили бы на прокси. Если он реагирует, это может быть прокси, иначе это обычный клиент. Этот метод был бы очень дорогим и ненадежным. Если бы запрошенный вами прокси-сервер находился за брандмауэром, вы бы не получили ответа и подумали, что это обычный клиент.
Я думаю, что здесь происходит то, что какой-то клиентский JavaScript пытается что-то загрузить и может «видеть», что страница просматривается внутри фрейма. Это могло бы быть более плодотворным путем для исследования - как указывали другие ответы, прокси-серверы намеренно затрудняют определение только с сервера.