Всем привет! На связи Affiliate Diaries!
Как и обещал, даю гайд по клоаке:
– Гугл видит реальный сайт.
– Все остальные ошибку.
– Код можно легко доработать, чтобы вместо ошибки поставить что то другое (например слив траффика на ПП).
Преимущество нашего кода в том, что сайт нельзя будет “раскрыть” через разные инструменты гугла – например “удобство для мобильных”, который в случае обычный клоаки, покажет сайт для бота.
Пользуйтесь 🔥
Создаем 2 файла:
– iflogged.php
– cloak.php
В файле iflogged.php мы сделаем несколько важных проверок:
1. Получим актуальный адрес админки, учитывая возможно смененный плагином all in one wp security адрес админки.
2. Проверим есть ли айпи пользователя в вайтлисте.
3. Если пользователь состоит в вайтлисте, либо он обращается к адресу админки либо он уже залогинен и имеет куки – открываем рабочую версию сайта.
Сам код:
<?php
/**
* Plugin Name: Cloak
* Description: This plugin rejects – any not authenticated users requests, if in not Google Search Bot
* Author: YourName
* Version: 0.1.0
*/
function cloa()
{
function detect()
{
$login_urls = [
get_option(‘aio_wp_security_configs’)[‘aiowps_login_page_slug’],
explode(‘/’, wp_login_url())[3]
];
$whitelist_ip = [‘164.132.161.145’,];
$is_login_page = in_array(trim($_SERVER[‘REQUEST_URI’], “/”), $login_urls);
$is_white_ip = in_array($_SERVER[“HTTP_CF_CONNECTING_IP”], $whitelist_ip);
if (!$is_login_page && !$is_white_ip) {
include(DIR . ‘/cloak.php’);
}
}
function detect_if_loggedin()
{
if (!is_user_logged_in()) detect();
}
$has_login_cookie = false;
foreach ((array)$_COOKIE as $cookie_key => $cookie_value) {
if (preg_match(“/wordpress_logged_in/i”, $cookie_key)) $has_login_cookie = true;
}
if ($has_login_cookie) add_action(‘plugins_loaded’, ‘detect_if_loggedin’);
else detect();
}
cloa();
Во втором файле cloak.php мы проверим является ли посетитель гуглботом.
Если да, то отдаем ему рабочую версию сайта.
Если это обычный посетитель он увидит вместо сайта заглушку.
<?php
$googlebot = 0;
// Get ip of visitor then get hostname. If hostname finish with googlebot.com it’s googlebot
// documentation is here : https://developers.google.com/search/docs/advanced/crawling/verifying-googlebot?hl=en
$remoteHost = gethostbyaddr(strip_tags($_SERVER[“HTTP_CF_CONNECTING_IP”]));
if (substr($remoteHost, -14) == “.googlebot.com”) {
if (gethostbyname($remoteHost) == $_SERVER[‘HTTP_CF_CONNECTING_IP’]) {
if (strstr(strtolower($_SERVER[‘HTTP_USER_AGENT’]), “googlebot”)) {
if (strlen($_SERVER[‘HTTP_ACCEPT’]) >= 36) {
$googlebot = 1;
}
}
}
}
// add noarchive in http headers to disallow Google cache
if ($googlebot == 1) {
@header(“Cache-Control: max-age=0”);
@header(‘X-Frame-Options: DENY’);
@header(“X-Robots-Tag: noarchive”, true);
}
// if visitor
if ($googlebot == 0) {
@header(“Cache-Control: max-age=0”);
@header(‘X-Frame-Options: DENY’);
// maintenance message
header(“HTTP/1.1 503 Service Temporarily Unavailable”);
header(“Status: 503 Service Temporarily Unavailable”);
// customize below html message for visitor
?>
<!DOCTYPE html>
<html>
<head>
<title>Site is temporarily unavailable due to maintenance</title>
</head>
<body>
<h1>Site is temporarily unavailable due to maintenance</h1>
</body>
</html>
<?php
// end message for visitor
exit;
}
Даю пример грамотного использования клоаки любителям зеркал – показываем гуглу зеркало, а юзер сразу идет на бренд 😉.
И юзер доволен, и гуглу это окей по первой причине.