Всем привет! На связи 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;

}

Даю пример грамотного использования клоаки любителям зеркал – показываем гуглу зеркало, а юзер сразу идет на бренд 😉.

И юзер доволен, и гуглу это окей по первой причине.

Loading