G|Translate: English EN Français FR Deutsch DE Italiano IT Русский RU Español ES

Используем PHP и псевдографику для простой гистограммы

Вот такой вывод «гистограммы» на основе данных массива

Используем PHP и псевдографику для простой гистограммы

Нет никаких графических библиотек, чистый PHP и символ псевдографики (ASCII 2593).

Для построения используется цифровой массив — могут быть положительные и отрицательные данные.

Массив ниже — данные вначале более актуальные по времени, поэтому в коде используется реверс (что бы эти данные оказались справа на гистограмме)

$arr_count = array (99,85,41,34,21,56,75,46,78,34,125,130,128,10,15,24,50,30,20,0,10,20,30,50,30,20,10,0,5,10,20,30,50,150);

Да  — точность не особо высокая, но это гистограмма для оценки ситуации. Можно использовать в админке для служебных целей или для простого вывода на странице.

Вот еще «график» при наличии отрицательных значений в массиве

Используем PHP и псевдографику для простой гистограммы

Сами данные ниже, есть отрицательные значения

$arr_count = array (99,85,41,34,21,56,75,46,78,34,125,130,128,10,15,24,50,30,20,0,-10,-20,-30,-50,-30,-20,-10,0,5,10,20,30,50,150)

 

Код PHP — функция вызывается с передачей ей цифрового массива. Второй параметр — высота вывода в строках, по умолчанию 20.

echo tsl_graph ($arr_count);

/////----------------------------------------------------------------
function tsl_graph ($arr_count, $high_star = 20) {
   //$arr_count - числовой массив для вывода с использованием псевдографики
   //$high_star - число строк для вывода "графики"
   $count_total = array_sum($arr_count) ; 	//сумма данных в массиве
   $arr_count_new = array_reverse($arr_count); 	//реверс, тк обычно в массиве в начале более свежие данные
   $len_count_total = count($arr_count_new); 	//число элементов массива

   $max_array = max($arr_count_new); 
   $min_array_var = min($arr_count_new);
   $min_array = ($min_array_var < 0 ? $min_array_var : 0); //диапазон с учетом отрицательных значений
   $pik_arr = ($max_array - $min_array)/$high_star; 	//значение одного "деления" по вертикали
		
   $graph_line = '';
   $num_line = $high_star; 	//самая верхняя строка графика
   //сверху вниз
   while ($num_line > 0) {

       //формируем строку, используем одинаковый символ с разным цветом - иначе разная ширина
       $star_line = '';
       $num_element = 0;
       $shift = $min_array/$pik_arr ; //смещение при наличии отрицательных чисел
       while ($num_element < $len_count_total) {
           $virt_line = $num_line + $shift ; //для 0 без изменений, для отрицательного будет вычитаться

              if ( $arr_count_new[$num_element] > 0 ) { //для положительных чисел
                 if ( ( ($arr_count_new[$num_element]/$pik_arr) >= $virt_line) && ($virt_line > 0 ) ) {
                    $star_line .= '▓'; 
                 }else{
                    $star_line .= '<font color="#D3D3D3">▓</font>'; 
                 } 
              }elseif ( $arr_count_new[$num_element] < 0 ){ //для отрицательных чисел
                 if ( ( ($arr_count_new[$num_element]/$pik_arr) < $virt_line) && ($virt_line <= 0 ) ) {
                    $star_line .= '▓';
                 }else{
                    $star_line .= '<font color="#D3D3D3">▓</font>'; 
                 }
               }else{ // ноль
                    $star_line .= '<font color="#D3D3D3">▓</font>'; 
               }

          $num_element = $num_element + 1;
          } 
     //сборка элементов массива в одну строку с переводами строк
     $graph_line .= $star_line.'<br />';
     $num_line = $num_line - 1;
     }
return '<br />'.$graph_line.'<br /><b>Total '.$count_total.'</b><br />';
}

Комментарии:

  • используется символ псевдографики (ASCII 2593)
  • символ используется и для гистограммы и для фона (серым цветом)
  • разные символы использовать нельзя, т.к. шрифты в разных браузерах могут быть разными и толщина их тоже может быть разной
  • используется реверс массива, т.к. обычно более свежие данные в начале массива (в начале таблицы), а на графике они должны оказаться справа — при желании можно отключить, код простой
  • значения меньше чем размер «шкалы» не отображаются, считаются нулем
  • функция возвращает строку html с графиком и суммой элементов массива
  • гистограмма использована вместо точек графики из-за того, что эти символы «прилипают» друг к другу, использование «звездочек» дает некрасивую картинку
  • никакой защиты от некорректных данных в функции нет — можно при желании доработать

 

ВАЖНО: если WordPress что-то испортил в коде на этой странице — пишите через обратную связь (или site_post@bk.ru), вышлю файл PHP.

 

В Debian 11 нет команды iptables

При вводе команды iptables получаем “command not found”. Это  как?

В Debian 11 нет команды iptables

А вот так :)

По умолчанию теперь есть nftables. Включена в ядро Linux, начиная с версии 3.13, выпущенной 19 января 2014 года. Является заменой четырех команд:

  • iptables
  • ip6tables
  • arptables
  • ebtables

Базовых отличий два:

  • в одной команде объедена работа с протоколами IPv4 и IPv6
  • теперь нет изначально созданных таблиц — нужно создавать самостоятельно

Таблицы могут быть одного из 6-ти семейств (families):
ip — для обработки пакетов IPv4
ip6 — IPv6
inet — обрабатывает сразу и IPv4 и IPv6 (чтобы не дублировать одинаковые правила)
arp — пакеты протокола ARP
bridge — пакеты, проходящие через мост
netdev — для обработки «сырых» данных, поступающих из сетевого интерфейса (или передающихся в него)

Цепочки получают на вход пакеты из хуков (цветные прямоугольники на картинке). Для ip/ip6/inet предусмотрены хуки prerouting, input, forward, output и postrouting.

В Debian 11 нет команды iptables

 

Прочитать про netfilter и fail2ban можно ниже

Установка fail2ban на Linux

Синтаксис nft более схож с реальной грамматикой языка.

Команда для добавления правила блокирования пакетов, направленных на адрес 1.2.3.4:

nft add rule ip filter output ip addr 1.2.3.4 drop

Синтаксис такого же действия для iptables:

iptables -t filter -A OUTPUT -j DROP -d 1.2.3.4

Для обеспечения обратной совместимости предоставляется специальная прослойка, позволяющая использовать iptables/ip6tables поверх инфраструктуры nftables.

Для облегчения перехода можно конвертировать правила iptables в nftables с помощью утилит iptables-translate, iptables-restore-translate, iptables-nft-restore и т.п. Утилиты находятся в пакете iptables, который нужно установить дополнительно.

Две полезные статьи по использованию команды nft

Как пользоваться NFT

Переход с iptables на nftables

 

Использование тройного === в программировании (PHP)

Любопытный пример.

Использование тройного === в программировании (PHP)

Программисты знают, что есть несколько вариантов «равно»:

  • присваивание $a = 10
  • сравнение if ($a == $b) {……..}
  • тождественное сравнение if ($a === $b) {……..}

Если с первыми двумя вариантами достаточно понятно, то третий вариант вызывает вопросы. 

Тождественно равно — должны совпадать не только значения, но и типы переменных. Основные типы в PHP:

  • число $a = 10;
  • строка $b = ’10’; // кавычки показывают, что внутри строка
  • логическая переменная $c = FALSE;

И например, условие $a == $b будет верным, т.к. сравниваются значения и интерпретатор PHP «понимает», что это десять.

А вот условие $a === $b будет ложным, т.к. дополнительно сравниваются и типы переменных —  число и строка.

На уровне определений понятно. Зачем это нужно в реальном программировании?

В PHP есть функция поиска подстроки в строке

$pos = strpos(‘abcdef’, ‘a’);

Функция возвращает позицию найденной подстроки, в данном случае 0 (поиск идет слева направо, позиции считаются от нуля). Если ничего не найдено — возвращается логическое значение FALSE.

И все бы было просто и  хорошо, но интерпретатор PHP может воспринимать 0 — как логическое FALSE

<?php
if (!$pos) { // условие в скобках истина
   echo 'ничего не найдено';
}
// так не правильно
?>

Ноль признается логической переменной (т.к. он находится в условии), инвертируется и получается TRUE. PHP помогает программисту. Можно использовать числа 0 и 1 в качестве логических переменных (если они в условии или сравнении).

Хотя просто это нулевая позиция, которая была найдена.

Вот тут нам и пригодится тройное равно

<?php
if ($pos === FALSE) { // переменная тождественно равна FALSE
   echo 'ничего не найдено'; 
} else {
   echo 'позиция символа '.$pos;
}
?>

Использование конструкции === позволяет избежать ошибок.

P.S.

В настоящее время лучше использовать функцию mb_strrpos() — она корректно работает с юникодом и многобайтовыми строками (наша кириллица и другие языки).

Функции для работы с многобайтовыми строками

Переадресация с https на http

Зачем это нужно?

Переадресация с https на http

Есть несколько причин:

  •  у нас сайт в разработке, пока работает на http, но поисковые боты проверяют и протокол https (и делают заглушку основным «зеркалом»…)
  • у нас сайт в процессе переезда на другой сервер, а сертификат SSL может выпускаться от 10 мин до 1 часа (если проверка по DNS) — а в поиске все страницы сайта выдаются в виде https://site.ru

Нужно как-то и поисковым машинам сказать, что это временно.

И посетителям сайта, которые в этот момент перейдут с поиска — тоже об этом сказать.

Основная статья по перевода на HTTPS

Как включить HTTPS на сайте?

ВАЖНО: браузер проводит проверку наличия SSL-сертификата раньше (при запросе https), чем срабатывает редирект. Если у Вас нет активного SSL-сертификата (а его пока нет) — посетители сайта в любом случае увидят предупреждение браузера о незащищённом контенте раньше, чем сработает редирект.

Вариантов несколько.

У хостера настроена (на уровне Nginx) заглушка при запросе HTTPS

Очевидно, что запросы до файла .htaccess (Apache) не дойдут. Делаем переадресацию прямо в самом файле-заглушке html вида

<!DOCTYPE html>
<html>
<head>
<title>Сайт на реконструкции</title>
<meta http-equiv="refresh" content="0;URL=http://site.ru" />
<meta name="robots" content="noindex,nofollow">
</head>
<body>
<p>Скоро здесь будет сайт</p>
</body>
</html>

Делаем переадресацию (с нулевой задержкой) на протокол http и запрещаем его роботам индексировать. Если в Nginx всё настроено правильно, то и роботы получат код 302 Moved Temporarily («перемещено временно»).

Нам как раз это и нужно.

Переадресация с https на http

Код 301 Moved Permanently («перемещено навсегда») — ни нам, ни роботам не нужен.

Переадресация https->http средствами Apache

Если запрос https доходит до папки сайта — то можно использовать .htaccess

RewriteEngine On
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://site.ru/$1 [R=302,L]

или

RewriteEngine On
RewriteCond %{ENV:HTTPS} =on
RewriteRule ^(.*)$ http://site.ru/$1 [R=302,L]

или без указания имени домена

RewriteEngine On 
RewriteCond %{ENV:HTTPS} =on 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=302,L]

В всех случаях отдаем роботам ошибку 302!

Переадресация всех страниц сайта на главную страницу

У нас же только заглушка есть, остальных станиц пока нет.

Нам не нужен 404 код при переходе с поиска…

Используем конструкцию

RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ index.php [L,QSA]

Пусть пока посетители сайта видят основную заглушку index.php

 

 

Чем отличается сервер VPS от VDS

В чем разница VPS/VDS?

Чем отличается сервер VPS от VDS

Хитрые хостеры отвечают, что это одно и то же.

А вот не совсем:

  • VPS — (англ. virtual private server) — виртуальный частный сервер
  • VDS — (англ. virtual dedicated server) — виртуальный выделенный сервер

Server — он конечно сервер, но разный. Одна буква P/D — и разница есть.

Читаем статью про хостинг

Хостинг VPS

Самые низкие тарифы VPS – на виртуализации OpenVZ

Читаем статью

Как выбрать VPS/VDS по параметрам

Вот именно OpenVZ — это как раз виртуальный частный сервер VPS. Точнее — это контейнер (причем для его работы требуется модифицированное ядро Linux — в отличии от Docker), а не сервер. Внутри контейнера можно запускать только те программы, которые поддерживает общее ядро.

А ядро у всех пользователей общее. И под пользователей выделены контейнеры, где созданы виртуальные ядра, память и пр.
Хостеры очень любят OpenVZ – так там диск тоже виртуальный и его объем динамически распределяется между пользователями. Т.е. Ваши 15 Гб на диске типа у хостера и 3 использованных = факт только 3 использованных и Вам еще выделят до 15 при необходимости…

Поэтому дешево.

НО для OpenVZ:

  • так как диск виртуальный и он не весь ваш – там невозможен SWAP -> те при исчерпании оперативки будет срабатывать OOM Killer – и самые загруженные процессы будут убиваться. Пришло много пользователей, памяти выделилось много (надо же где-то процессору собрать html по инструкциям php), оперативная память кончилась, убили наиболее загруженный процесс (как правило mysql) – сайт/сайты отвалились…..
  • так как ядро Linux общее — Вы не можете помять, например, нужную версию fail2ban с 0.9.0 на 0.10.0 (с поддержкой IP v6)
  • и ограничение всего 256 правил для iptables — т.е. полноценную защиту от ботов не сделать.

 

Читаем здесь

Установка fail2ban на Linux

Настраиваем fail2ban под свои задачи

И оперативная память тоже интересно расходуется. Т.е. она конечно в рамках тарифа вся Ваша — но посмотрим на графики.

Данные с панели управления — порядка 750 Мб занято из 3 Gb

Чем отличается сервер VPS от VDS

Данные через биллинг (общие данные с сервера) — занято порядка 2 Гб

Чем отличается сервер VPS от VDS

Как такое может быть?

Проверим командой (через SSH)

free -h

Смотрим на результат. Что это?

Чем отличается сервер VPS от VDS

  • total 3 Gb- понятно
  • used 726 Mb  — понятно
  • cache 1,3 Gb — а это кто?

А это общее ядро Linux в Вашей памяти (которая в рамках OpenVZ) кэширует различные операции… Пока Вы часть памяти не использовали — она идет на общие нужны ядра операционной системы.

И при использовании режима модуля Apache FastCGI тоже есть ограничения.

Чем отличается сервер VPS от VDS

Количество «воркеров» (т.е. рабочих процессов) ограничено двумя. Т.е. режим FastCGI Вы включить можете, а максимальное число рабочих процессов — не можете. Фактически это ограничение означает, что только два посетителя одновременно (в один и тот же момент времени) могут увидеть Ваш сайт. Если пришел третий — ему надо подождать, пока двум предыдущим сервер отдаст страницу :(

В общем, надо смотреть конкретные цифры у конкретного хостера.

Те вариант VPS = OpenVZ+Apache+Nginx+FastCGI+PHP – он дешевый, но для серьезных проектов на подходит….

Он даже хуже (иногда) чем обычный виртуальный хостинг – на виртуальном  хостинге сайты просто тормозить будут, а на VPS с OpenVZ при нехватке памяти – падать (SWAP-файла на диске нет по определению)…

А вот виртуализация KVM — это полноценный выделенный сервер VDS. Фактически на нем может быть запущена любая операционная система.

ВАЖНО: существуют  дешевые варианты VDS на KVM. Дешевле, чем OpenVZ. В чем секрет? Вы получаете чистую виртуальную машину с root доступом. И всё.

И дальше сами настраиваете:

  • или руками через SSH или через установку бесплатной панели управления хостингом
  • доступ через FTP
  • мониторинг нагрузки и прочее
  • вручную настраиваете сертификаты SSL (бесплатные let’s encrypt)
  • вручную настраиваете Fail2Ban

Можно конечно и за деньги — арендовать панель управления, подключить платный сертификат. Но сразу стоимость вырастет в несколько раз.

То есть если у Вас есть навыки администрирования Linux — то сможете получить дешевый VDS. Если навыков нет — будет дороже. Но зато управления мышью клац-клац :)

Нужно информационного сайта:

  • или KVM брать – он дороже в 4 раза (и как минимум 2 ядра, 4 гига RAM и своп на диске), но там весь диск Ваш и можно сделать SWAP
  • или выделенный сервер в железе – совсем дорого
  • или домашнюю машину 4 ядра + 8 гиг (на том же 775 сокете) + хороший инет-канал 500 Мбит/с + KVM+Apache+Nginx+PHP (без FastCGI – только для дублирования сайта на хостинге) + DNS от Яндекса (с балансировщиком – основная отдача с домашнего сервера и плюс резерв с платной VPS) + CMS должна уметь делать синхронизацию из дома на сервер (статика и база)
  • основная отдача с домашнего сервера и плюс резерв с платной VPS + на хостинг отдаем только статику html (генерируем статичный сайт из WP)
  • Записи должны быть с html на конце (что бы физические файл создать)
  • Те все дополнения и изменения делаем только дома на сервере WP+PHP, потом преобразовываем в статику
  • На php остается только форма обратной связи – отдельный скрипт

 

Нужно для интернет-магазина:

  • желательно облачное решение с ресурсами по требованию
    • резкие всплески нагрузки (реклама, акции, сезонность)
    • много пользователей в одном пике – память будет расти лавинообразно
  • одного ядра не хватит для нормальной работы
    • т.к. для каждого посетителя будет раздел «Вы смотрели» — страница каждый раз формируется заново
    • кэширование готовых страниц мало поможет — значит, работает процессора и собирает из PHP станицы заново

Что выбрать HDD или SSD у хостера?

Простой вопрос HDD vs SSD

Что выбрать HDD или SSD у хостера?

Казалось бы — что тут выбирать?

Каждый, кто менял в своей Windows 7 на старом ПК диск HDD на SSD = радовался увеличению быстродействия системы.

SSD — быстрее:

  • нет механических систем
  • да и электроны быстрее по микросхемам бегают

Но у хостера — не домашний ПК, там сервер. И диски не по отдельности, а соединены в RAID-массив.

Некоторые хостеры предлагаю очень простой выбор

Что выбрать HDD или SSD у хостера?

У некоторых выбор посложнее: SAS или SSD

Что выбрать HDD или SSD у хостера?

А что такое SAS HDD?

Вот тут вся разница:

  • SAS HDD — это серверные диски, которые работают по протоколу SAS (дуплекс — умеют писать и читать одновременно)
  • SATA SSD — это диски, которые работают по протоколу SATA (полудуплекс — читают и пишут по очереди — как в рации «прием/передача» для примера)

Читаем статью

Интерфейсы SAS и SATA

Что выбрать HDD или SSD у хостера?

При увеличении числа дисков в массиве RAID:

  • физическая сущность диска нивелируется
  • фактическая скорость обмена начинает ограничиваться протоколом

В результате скорость обмена данными в массиве у SAS HDD может быть выше, чем у SATA SSD. Чистый маркетинг — все хотят SSD и на спрос есть предложение.

И конечно, всё еще зависит от:

  • какая версия протокола у дисков
  • в какой RAID собраны диски

Т.е. если Вам нужен сервер VDS/VPS для хостинга сайта — выбирайте SAS HDD. Это будет немного быстрее и немного дешевле варианта SATA SSD.

А если Вам надо быстро и дорого — берите NVMe — это твердотельная память с протоколом PCIe (быстрый и многопоточный).

Защищаем скрипт PHP от прямого вызова

В папке плагинов WordPress лежит замечательный файл index.php

Защищаем скрипт PHP от прямого вызова

«Молчание — золото»…

Это как раз для любителей вызвать папку «/wp-content/plugins/» напрямую.

В скриптах WordPress проверяется служебная переменная ABSPATH перед запуском

if (!defined ('ABSPATH')) exit;

При попытке выполнить скрипт вне пространства WP — на выход

А как быть с самодельным скриптом ,который запускается с Вашего сайта, но не из WP?

Для начала очевидное:

  1. Сделаем свой index.php
  2. Будем показывать его любопытным при прямом запуске

Вариант файла index.php

<?php
header($_SERVER['SERVER_PROTOCOL']." 404 Not Found");
echo 'Silence is golden';
exit;
?>

при показе файла дополнительно сообщаем боту, что ошибка 404 «файл не найден» — для разнообразия

Т.к Ваш скрипт запускается с какой-либо страницы Вашего сайта — то там должен быть рефер  с именем этой страницы. При прямом запуске — рефер будет пустой.

$backurl = $_SERVER['HTTP_REFERER'];
if (empty ($backurl)) { 
   include 'index.php';  
   exit;
}

Но это еще не все. Боты научились подделывать рефер (что бы их так просто не выгоняли), там может быть:

  • или Ваш домен mysite.ru с ошибкой вида www.mysite.ru
  • или URL адрес Вашего скрипта вида http://mysite.ru/test.php

С последним вариантом бот бился 6 часов с интервалом 1 сек… Подбирая разные варианты запуска php.

Атака шла с IP v6 — так что версия fail2ban 0.9 ничего тут не смогла сделать (поддержка IP6 только с версии 10.0).

Добавим дополнительные проверки

$backurl = $_SERVER['HTTP_REFERER'];
$domen_link = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $domen;
//----------
if (empty ($backurl)) { 
   include 'index.php'; 
   exit;
}
if (mb_strpos($backurl, $domen_link)=== FALSE) { 
   include 'index.php'; 
   exit;
}
if (mb_strpos($backurl, '.php') > 0) { 
   include 'index.php'; // 
   exit;
}

где $domen_link — домен Вашего сайта с протоколом и поищем:

  • или отсутствие правильного домена в строке рефера (откуда был вызван скрипт)
  • или символы ‘.php’ в рефере

Если хотя бы одна из трех ловушек сработает — бот получит страницу index.php и 404 ошибку.

Бинго!

ВАЖНО: «символы ‘.php’ в рефере» ! 

Иногда вредные боты подменяют рефер и там вписывают название Вашего скрипта вида https://mysite.ru/script.php

А у Вас например, скрипт script.php после выполнения перезагружает страницу, откуда он был запущен https://mysite.ru

А там теперь, в рефере (бот подделал) — название Вашего же скрипта. Что произойдет? После захода такого бота сервер уйдет в цикличный вызов скрипта и ему будет нехорошо…

P.S.

Если разработчики ботов еще что придумают — допишем ловушки :)

Как заработать на рекламе на информационном сайте

Собственно никак :)

Как заработать на рекламе на информационном сайте

Есть сервисы Яндекс РСЯ и Google Adsense.

Посмотрим внимательно:

  • Яндекс принимает в свою сеть сайты с 10 000 визитов  день (Россия)
  • Google принимает всех

Цифры по Google Adsense — в среднем с сайта 500 визитов в день (15 000 в месяц) Вы получите порядка 50 долл. Чтобы хотя бы получить 500 долл. за месяц — у Вас должен быть сайт с уровнем визитов 150 000 в месяц.

Или, например,  300 000 визитов в месяц — как хочет Яндекс (10 000 * 30 дн).

Что для информационного сайта силами одного вебмастера малореально. И не забываем, что у многих установлен AdBlock Plus, который достаточно хорошо отрезает рекламные модули.

Этого хватит на оплату домена, хостинг VPS и немного на мороженое…

Хостинг VPS нужно покупать нормальный, что бы он мог обеспечить отдачу контента такому количеству желающих. В двух словах — т.к. желающих много — Вам нужна многопоточность, что обычный дешевый хостер не может обеспечить.

Читаем статью

Хостинг VPS

Особенности работы с Google Adsense

Проходим регистрацию, добавляем свой сайт, добавляем на него код — ждем подтверждения, что с сайтом система может работать.

Две основные стратегии работы — полностью автоматический режим и возможность самостоятельно добавлять код объявлений на сайт.

Как заработать на рекламе на информационном сайте

Переводим на русский «подбирать лучшие места»:

  • в текст статьи втыкается 3-5 рекламных блоков
  • в боковые панели сайта добавляется 2-3 блока
  • и вишенка — при клике по пункту меню появляется всплывающая реклама

В результате сайтом в принципе нельзя пользоваться. Забавно.

Лучше сделать свои медийные блоки и вручную их разместить на сайте:

  • перед контентом
  • после контента

Как заработать на рекламе на информационном сайте

Да, кликов будет меньше — но по крайней мере сайт будет выглядеть нормально.

ВАЖНО

Просто вставить свой созданный медийный блок на страницы AMP не сможете.

Это легко только для автоматизированных страниц. Для вставки самостоятельного медийного блока Google Adsense необходимо корректировать код. Конечно — в справке Google Adsense написано «Разместите этот фрагмент кода на AMP там, где должно показываться объявление«. А как разместить — не написано.

Читаем статью

Грамотная и максимальная монетизация AMP страниц

А еще вот так бывает после старта рекламы (т.е. уже после проверки, что сайт готов)

Как заработать на рекламе на информационном сайте

Робот считает, что на Вашем сайте бесполезный контент. При этом сам же Гугль нормально показывает сайт в выдаче….

Роботы правят миром :(

Почему не получится использовать свою рекламу на сайте

Не получится — низкая релевантность объявлений. Что бы был клик со стороны посетителя:

  • объявление должно показываться в той же категории, что и текст (или по той же теме)
  • только поисковая система всё знает о посетителе (что он смотрел ранее, его интересы и прочее)

Если Вы делаете свою рекламу — то количество кликов будет на уровне 1 промилле (1/1000). Если рекламная система дает объявление — то количество кликов будет на уровне 1% (1/100).

Хоть что-то.

И вторая причина. Сейчас поисковые системы превратились в магазин по продаже рекламы. Вот пример — на поисковый запрос все позиции  на видимой части первого экрана — это реклама, а не результат поиска.

Как заработать на рекламе на информационном сайте

Поиска нет вообще :(

При попытках на своем сайте давать свою cdj. рекламу — Ваш сайт обрушат в поиске… Конкуренты не нужны.

Как заработать на рекламе на информационном сайте

Малополезный контент, избыток рекламы — почему вообще система поиска принимает такие решения за пользователей…

А рекламная система добавляет файл ads.txt, в котором есть информация — кто и как рекламирует.

Ads.txt — это текстовый файл, хранящийся в основной папке веб-сайта, который содержит список компаний, уполномоченных продавать рекламу на  сайте. IAB Tech Lab выпустила этот инструмент в мае 2017 года для решения проблемы мошенничества, подтверждая им подлинность рекламных мест.

Это официально. А по факту — это сигнал поисковым машинам, что используется именно их рекламный канал.

 

Роботы и боты не спят…

Пока  Вы думаете, как завлечь посетителей на сайт — боты там резвятся от души.

Роботы и боты не спят...

одни боты ломятся в админку (для сайта на WordPress). Их там правда не ждут — но ботам всё равно.

Любимые файлы WP для подборщиков:

  • wp-login.php
  • xmlrpc.php (для мобильного входа)

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

Роботы и боты не спят...

Вот это «empty message» — уже после очистки от спецсимволов. И какое упорство для 195.123.227.217 — с одного IP-адреса пытаться сделать инъекцию кода в поле формы.

Роботы и боты не спят...

И хорошо — есть еще тупые боты 5.188.84.115, которые заполняют скрытые поля «Honeypot» (бочка с медом) и получают заслуженный бан.

Роботы и боты не спят...

Да, интернет знает этого бота 5.188.84.115.

Обратите на временные интервалы — от пяти до 10 попыток в час. Это еще здесь нет логов ботов, которые всякую ахинею в адресной строке браузера набирают.

Скоро интернет придет к состоянию электронной почты — будет 90% ботов и 10% людей.

P.S.

Не просто так Dropbox резко усложнил капчу на вход в аккаунт.

Протокол http против https

Казалось бы, что тут может быть нового? Используйте https и будет Вас счастье.

Протокол http против https

Но чудеса встречаются на разных серверах…

Допустим у Вас есть проект в работе, он пока работает на http, сайт уже есть. И он открывается нормально по http.

Протокол http против https

Совершенно случайно Вы узнаете, что сайт открывается еще и по https, но:

  • там висит заглушка вместо сайта
  • никаких действий по подключению https Вы не предпринимали
  • сертификата SSL у Вас нет

А откуда Вы это случайно узнали?

А это поисковые роботы проверили https, выяснили, что сервер отвечает на запрос (с кодом 302 — временно перемещено), страница с html тэгами там есть = и сделали страницу-пустышку https главным зеркалом сайта.

Т.е. теперь пустышка — главное зеркало, а сам основной сайт по http выброшен из поиска (типа — не главное зеркало и в поиске больше не участвует).

Неожиданно :(

Смотрим, что отвечает сервер Яндекса

http = 200

Протокол http против https

https = 302

Протокол http против https

Упс…

Нужно это дело контролировать и принимать меры, что бы хотя бы возвращалась ошибка https=404

Протокол http против https

Только тогда глупый поисковый робот успокаивается и прекращает попытки сделать заглушку главным зеркалом.

P.S. Конечно понятно.

Программисты хотели сделать доброе дело, если есть ответа по https — давайте сделаем его главным зеркалом по умолчанию, поможем разработчику сайта.

Только никто не подумал, что бывают разные ситуации.