Добрый день.
Можно ли создать расширение, а точнее оформить уже рабочие скрипты в расширение что бы не править файлы в ручную ?
Смысл расширения в том, что при обнаружении у пользователя, зашедшего на форум с включённым VPN реклама адсенс блокируется.
Сейчас всё это работает таким способом -
VPN проверяется только раз в 5 минут на пользователя, что значительно экономит API-запросы!
В корне сайта ( public_html или /var/www/html/ ), создаём папку: vpn_storage
Назначаем ей права записи: 777
В эту папку будут записываться файлы кеширования.
В корне форума так же создаём файл check_vpn.php:
Скрипт для вставки перед закрывающим тегом
Всё это работает через апи запросы к сайту vpnapi.io
Поэтому в админке, в настройках расширения нужно только одно поле где надо вставить этот самый API Key.
Всё это создавалось с помощью чат жпт, и тестировалось в течении нескольких дней. Работоспособность удовлетворительная.
Разговоры о том, что мол так попроси пускай он тебе и расширение напишет, не рассматриваются. Я пробовал. Для этого у нас на двоих мало ума.
Можно ли создать расширение, а точнее оформить уже рабочие скрипты в расширение что бы не править файлы в ручную ?
Смысл расширения в том, что при обнаружении у пользователя, зашедшего на форум с включённым VPN реклама адсенс блокируется.
Сейчас всё это работает таким способом -
VPN проверяется только раз в 5 минут на пользователя, что значительно экономит API-запросы!
В корне сайта ( public_html или /var/www/html/ ), создаём папку: vpn_storage
Назначаем ей права записи: 777
В эту папку будут записываться файлы кеширования.
В корне форума так же создаём файл check_vpn.php:
Код: Выделить всё
<?php
header('Content-Type: application/json');
$api_key = '****************'; // Вставьте ваш API-ключ
$user_ip = $_SERVER['REMOTE_ADDR']; // Получаем IP пользователя
$cache_dir = __DIR__ . "/vpn_storage/";
if (!file_exists($cache_dir)) {
mkdir($cache_dir, 0777, true);
}
$cache_file = $cache_dir . "cache_vpn_{$user_ip}.json";
$cache_time = 300; // 5 минут (300 секунд)
// Если есть кэш и он не устарел, возвращаем данные из него
if (file_exists($cache_file) && (time() - filemtime($cache_file) < $cache_time)) {
echo file_get_contents($cache_file);
exit;
}
// Запрашиваем данные с vpnapi.io
$api_url = "https://vpnapi.io/api/{$user_ip}?key={$api_key}";
$response = file_get_contents($api_url);
$data = json_decode($response, true);
// Проверяем, является ли IP VPN
$is_vpn = $data['security']['vpn'] ?? false;
// Сохраняем результат в кэш
$cache_data = json_encode(['vpn' => $is_vpn]);
file_put_contents($cache_file, $cache_data);
// Отправляем ответ
echo $cache_data;
?>
</body>
в overall_footer.html
форума -
Код: Выделить всё
<script>
(function() {
const CHECK_INTERVAL = 5 * 60 * 1000; // Кэш на 5 минут
const now = Date.now();
const cachedData = sessionStorage.getItem("vpnCheckResult");
const cachedTime = sessionStorage.getItem("vpnCheckTime");
if (cachedData && cachedTime && now - parseInt(cachedTime) < CHECK_INTERVAL) {
console.log("Читаем кэш:", cachedData);
handleVPNCheck(JSON.parse(cachedData));
} else {
fetch("https://ваш сайт.com/check_vpn.php") // Вставляем адрес нашего сайта
.then(response => response.json())
.then(data => {
sessionStorage.setItem("vpnCheckResult", JSON.stringify(data));
sessionStorage.setItem("vpnCheckTime", now.toString());
console.log("VPN проверен:", data);
handleVPNCheck(data);
})
.catch(error => console.error("Ошибка VPN:", error));
}
function handleVPNCheck(data) {
if (data.vpn) {
console.log("VPN обнаружен! Блокируем рекламу.");
// Останавливаем загрузку AdSense
window.adsbygoogle = window.adsbygoogle || [];
window.adsbygoogle.push = function() {};
// Удаляем уже загруженные рекламные блоки
document.querySelectorAll("script[src*='adsbygoogle.js']").forEach(el => el.remove());
document.querySelectorAll("ins.adsbygoogle").forEach(el => el.remove());
// Блокируем дальнейшее добавление рекламы
const observer = new MutationObserver(() => {
document.querySelectorAll("ins.adsbygoogle").forEach(el => el.remove());
});
observer.observe(document.body, { childList: true, subtree: true });
console.log("AdSense заблокирован.");
} else {
console.log("VPN не найден, реклама остаётся.");
}
}
})();
</script>
Поэтому в админке, в настройках расширения нужно только одно поле где надо вставить этот самый API Key.
Всё это создавалось с помощью чат жпт, и тестировалось в течении нескольких дней. Работоспособность удовлетворительная.
Разговоры о том, что мол так попроси пускай он тебе и расширение напишет, не рассматриваются. Я пробовал. Для этого у нас на двоих мало ума.
Комментарии: 1