Цитата мудреца

Голосование

Система Orphus. Если вы заметили ошибку на сайте, нажмите сюда.
Загружается, подождите...
Начало сайта Материалы сайта Программы PHP-скрипты
Версия для слабовидящих
Версия для печати

Ограничение на скорость выдачи страниц одному пользователю

Здесь представлены некоторые мои разработки на PHP. Это в, основном, служебные скрипты, которые работают в составе других скриптов и не могут быть протестированы здесь непосредственно.

AD_DELAY - Время задержки в секундах, в течение которого нельзя обращаться к сайту.
Это значит, что пользователь не должен обращаться к сайту чаще, чем 1 раз во столько-то секунд. Я ставлю 2 секунды.
40 секунд - это это число, умноженное на 2. Вы установили этот параметр в 20 сек. Зачем? Человек быстрее кликает по ссылкам.

AD_TRYING - это когда посетитель продолжает обращаться к странице, несмотря на то, что она ему временно не показалась. Мы считаем, сколько раз он это делает, а потом баним его в htaccess навечно.
5 - это мало. Человек со злости может несколько раз нажать на кнопку F5.

AD_LIVE_TIME - этот параметр нужен для капчи. Если человек ничего не делал в течение этого времени, то счётчик перед показом капчи обнуляется.

Добавлено спустя 18 минут 24 секунды:
abc писал(а):Файл сам не создается, пока сам его не создашь. Хотя логи пишутся.

Я уже не помню, как оно сделано.
Ответить


А..Я писал(а):Человек со злости может несколько раз нажать на кнопку F5


И будет забанен навечно :)

Добавлено спустя 7 минут 49 секунд:
Андрей, подскажите по этому куску кода:
Код: Выделить всё
*---------------------------------------------------------
* Поисковые роботы не любят, когда к адресу страницы
* добавляется переменная сессии. Поэтому, если на сайте
* используются сессии, то их лучше включать, если агент -
* не робот.
* Если сессии не используются, то этот кусок можно убрать.
*---------------------------------------------------------
*/
/*
if (!$ad_IsRobot || ($ad_IsRobot == 'Localhost'))
{
session_start();
}
else
{
//Чтобы поисковый робот не сильно загружал сайт,
//делаем ему задержку. Но лучше всего вместо этого
//использовать команду Crawl-delay: в файле robots.txt
sleep(AD_DELAY);
}
*/

1) хостер сказал, что сессии используются.
2) что писать
$ad_IsRobot == 'тут'


Добавлено спустя 32 минуты 22 секунды:
Вот, накидал красоты на 503 страницу. Может и пригодится кому...
Код: Выделить всё
<!doctype html public "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Страница временно недоступна</title>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
<script type="text/javascript">
function Delay()
{
setTimeout("document.getElementById('go').style.display = 'block'",
(<?=$ad_sleep?> * 1000));
}
</script>
<style>@import url('https://fonts.googleapis.com/css?family=Rubik'); html, body {background: #fbfbfb; font-family: 'Rubik'; } .loader { position: absolute; left: 50vw; top: 30vh; margin-left: -50px; margin-top: -30px; width: 100px; text-align: center; color: #555; } .circle1 { animation: bounce linear 2.2s infinite forwards; animation-delay: 0; } .circle2 { animation: bounce linear 2.2s infinite forwards; animation-delay: 125ms; } .circle3 { animation: bounce linear 2.2s infinite forwards; animation-delay: 250ms; } .circle4 { animation: bounce linear 2.2s infinite forwards; animation-delay: 0.375s; } @keyframes bounce { 0%, 100% { transform: translateY(0); } 20%, 50% { transform: translateY(9px); } 80% { transform: translateY(2px); } 40% { transform: translateY(-15px); } 60% { transform: translateY(-7px); } } #div1 {font-size:1.2em;line-height:32px;position:relative;top:50vh;margin-left:-50px;margin-top:-50px;text-align:center;color:rgb(168, 119, 119);text-transform:uppercase;letter-spacing:2px;} .div2 {color:rgb(117, 101, 88);font-size:0.7em;} #div1 a {text-decoration:none;color:rgb(132, 118, 60);}</style>
</head>
<body onLoad="Delay();">
<div class="loader"> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 81 45" enable-background="new 0 0 81 45" xml:space="preserve"> <circle class="circle1" fill="#756558" cx="13.5" cy="22.5" r="4.5"/> <circle class="circle2" fill="#756558" cx="31.5" cy="22.5" r="4.5"/> <circle class="circle3" fill="#756558" cx="49.5" cy="22.5" r="4.5"/> <circle class="circle4" fill="#756558" cx="67.5" cy="22.5" r="4.5"/> </svg> </div> <div id="div1">Запрашиваемая страница временно недоступна<br />Через <?=$ad_sleep?> секунд появится ссылка и вы сможете обратиться к ней снова<br /><br /><div class="div2">Если по какой - то причине это не произошло нажмите клавишу F5<br />
<div id="go" style="display: none;"><br />
<a href="<?=$_SERVER['REQUEST_URI']?>">Перейти на запрашиваемую страницу</a></div></div>
</div>
</body>
</html>


Добавлено спустя 26 минут 54 секунды:
Не сочтите за назойливость
Код: Выделить всё
define ('AD_TRYING_CLICK', 5);
тогда за что отвечает?
Ответить


abc писал(а):2) что писать

Ничего.

AD_TRYING_CLICK - пропустить количество кликов, прежде чем вывести ошибку 503
Ответить


Спасибо

Добавлено спустя 47 минут 52 секунды:
Имеет ли смысл ставить скрипт на html сайт? Я думаю что нет.

Добавлено спустя 1 минуту 38 секунд:
Есть такой сайт и формы на php, где в свою очередь у форм есть подобные скрипты, но только у форм. В связи с этим и вопрос, как быть со страницами html?
Ответить


Андрей, подскажите пожалуйста что из скрипта нужно удалить, чтобы не пользоватьчся каптчей? Каптча не нужна.

Добавлено спустя 1 час 56 минут 56 секунд:
Спасибо за скрипт
Спасибо Вам за скрипт! Настроил. Теперь надо потестить. Спасибо еще раз и за поддержку.
Ответить


Подсети поисковиков

Андрей, если не секрет, где можно взять более полные, свежие подсети google, yandex, mail.ru ?
Вот на этих сайтах, вообще куча адресов яндекса и гугла:
http://ru.ipv4info.com/org/s9dc767/GOGL.html
https://bgpview.io/search/YANDEX#results-v4

Но какие из них необходимо прописывать? У Вас в скрипте, записей, в отличии от записей на этих сайтах не так и много.
Думаю что многие пользователи Вашего скрипта озабочены такой же проблемой
Ответить


Недавно я проверил список адресов. Пару пришлось удалить, т.к. они уже не принадлежат поисковикам.
По поводу новых я поступаю так: я проверяю письма, которые приходят мне с уведомлениями о забаненых адресах. Я смотрю, кто там user-agent, проверяю эти адреса по whois, и если они действительно принадлежат сеткам тех поисковиков, которым я разрешаю индексировать сайт, то я добавляю в исключения всю сеть.
Ответить


Андрей, благодарен Вам за помощь. Не могли бы Вы написать адреса удаленных? Если не затруднит
Ответить


abc писал(а):Не могли бы Вы написать адреса удаленных? Если не затруднит


Да я не запомнил. :)
Актуальные у меня сейчас в другом формате. Хотите - сравните сами.
Код: Выделить всё
      'Google1'      => '209.85.128.0/17',
      'Google2'      => '72.14.192.0/18',
      'Google3'      => '66.249.64.0/19',
      'Google4'      => '64.68.80.0/21',
      'Google5'      => '66.102.0.0/20',
      'Google6'      => '64.233.160.0/19',
      'Google7'      => '216.239.32.0/19',
      'Google8'      => '74.125.0.0/16',
      'Mail.Ru1'      => '94.100.181.128/25',
      'Mail.Ru2'      => '217.69.128.0/20',
      'msnbot1'      => '65.52.0.0/14',
      'msnbot2'      => '207.46.0.0/16',
      'msnbot3'      => '157.54.0.0/15',
      'msnbot4'      => '157.56.0.0/14',
      'msnbot5'      => '157.60.0.0/16',
      'msnbot6'      => '40.112.0.0/13',
      'msnbot7'      => '40.125.0.0/17',
      'msnbot8'      => '40.74.0.0/15',
      'msnbot9'      => '40.80.0.0/12',
      'msnbot10'      => '40.76.0.0/14',
      'msnbot11'      => '40.120.0.0/14',
      'msnbot12'      => '40.124.0.0/16',
      'msnbot13'      => '40.96.0.0/12',
      'msnbot14'      => '191.232.0.0/14',
      'Rambler'      => '81.19.64.0/19',
      'Yahoo1'      => '69.147.64.0/18',
      'Yahoo2'      => '67.195.0.0/16',
      'Yahoo3'      => '68.180.128.0/17',
      'Yandex1'      => '213.180.192.0/19',
      'Yandex2'      => '77.88.0.0/18',
      'Yandex3'      => '93.158.128.0/18',
      'Yandex4'      => '95.108.128.0/24',
      'Yandex5'      => '87.250.224.0/19',
      'Yandex6'      => '178.154.128.0/17',
      'Yandex7'      => '84.201.128.0/18',
      'Yandex8'      => '5.255.192.0/26',
      'Yandex9'      => '141.8.128.0/18',
      'Yandex10'      => '37.140.128.0/18',
      'Yandex11'      => '37.9.64.0/18',
      'Yandex12'      => '5.45.254.0/25',
      'LiveInternet'   => '88.212.202.0/24',
      'OpenStat'      => '193.169.234.0/24',
      'Facebook1'      => '31.13.112.0/22',
      'Facebook2'      => '173.252.64.0/18',
      'Facebook3'      => '69.63.176.0/20',
Ответить


Спасибо за адреса хороший человек.

Добавлено спустя 11 минут 55 секунд:
Небольшое отступление от темы, но в достаточной мере касается блокировки. Вот нашел такой ресурс http://mycrimea.su/partners/web/access/ (можете посмотреть,если будет время)
Автор предлагает правила htaccess по блокировки ip-адресов
Вот например, одно из правил. Правда у меня оно не сработало. Забанило и мой ip, до кучи :) А Вы что скажете? Может ошибка где?
Код: Выделить всё
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# Запретить все IP, кроме СНГ, Bing, Google, Yahoo:
RewriteCond %{REMOTE_ADDR} !^(?:2|3|5|3[17]|46|62|7[7-9]|8[0-9]|9[0-5]|1(?:09|28|3[046]|4[1569]|5[189]|64|7[168]|8[58]|9[2-5])|21[237])..*$
RewriteCond %{HTTP_USER_AGENT} !bingbot [NC]
RewriteCond %{HTTP_USER_AGENT} !Googlebot [NC]
RewriteCond %{HTTP_USER_AGENT} !Slurp [NC]
RewriteRule ^.*$ - [F,L]
</IfModule>


Добавлено спустя 22 минуты 17 секунд:
Чуть не забыл. У Вас в списке я увидет ip facebook.
У меня на сайте будут ссылки, ведущие на страницы моего сайта в соцсетях.
В связи с этим возник вопрос: если я не включу соцсети в разрешенные списки, это как-нибудь повлияет на SEO моего сайта? (хотя я сам так не считаю,но могу ошибаться)

Переведенные ip-шники, которые Вы мне дали. Добавил к ним маски (справа), что не морочится с переводом
'Google1' => '209.85.128.0/17', 255.255.128.0
'Google2' => '72.14.192.0/18', 255.255.192.0
'Google3' => '66.249.64.0/19', 255.255.224.0
'Google4' => '64.68.80.0/21', 255.255.248.0
'Google5' => '66.102.0.0/20', 255.255.240.0
'Google6' => '64.233.160.0/19', 255.255.224.0
'Google7' => '216.239.32.0/19',255.255.224.0
'Google8' => '74.125.0.0/16',255.255.0.0
'Mail.Ru1' => '94.100.181.128/25',255.255.128.0
'Mail.Ru2' => '217.69.128.0/20',255.255.240.0
'msnbot1' => '65.52.0.0/14',255.252.0.0
'msnbot2' => '207.46.0.0/16',255.255.0.0
'msnbot3' => '157.54.0.0/15',255.254.0.0
'msnbot4' => '157.56.0.0/14',255.252.0.0
'msnbot5' => '157.60.0.0/16',255.255.0.0
'msnbot6' => '40.112.0.0/13',255.248.0.0
'msnbot7' => '40.125.0.0/17',255.128.0.0
'msnbot8' => '40.74.0.0/15',255.254.0.0
'msnbot9' => '40.80.0.0/12',255.240.0.0
'msnbot10' => '40.76.0.0/14',255.252.0.0
'msnbot11' => '40.120.0.0/14',255.252.0.0
'msnbot12' => '40.124.0.0/16',255.255.0.0
'msnbot13' => '40.96.0.0/12',255.240.0.0
'msnbot14' => '191.232.0.0/14',255.252.0.0
'Rambler' => '81.19.64.0/19',255.255.224.0
'Yahoo1' => '69.147.64.0/18',255.255.192.0
'Yahoo2' => '67.195.0.0/16',255.255.0.0
'Yahoo3' => '68.180.128.0/17',255.128.0.0
'Yandex1' => '213.180.192.0/19',255.255.224.0
'Yandex2' => '77.88.0.0/18',255.255.192.0
'Yandex3' => '93.158.128.0/18',255.255.192.0
'Yandex4' => '95.108.128.0/24',255.255.255.0
'Yandex5' => '87.250.224.0/19',255.255.224.0
'Yandex6' => '178.154.128.0/17',255.128.0.0
'Yandex7' => '84.201.128.0/18',255.255.192.0
'Yandex8' => '5.255.192.0/26',255.255.255.192
'Yandex9' => '141.8.128.0/18',255.255.192.0
'Yandex10' => '37.140.128.0/18',255.255.192.0
'Yandex11' => '37.9.64.0/18',255.255.192.0
'Yandex12' => '5.45.254.0/25',
'LiveInternet' => '88.212.202.0/24',255.255.255.0
'OpenStat' => '193.169.234.0/24',255.255.255.0
'Facebook1' => '31.13.112.0/22',255.255.255.128
'Facebook2' => '173.252.64.0/18',255.255.192.0
'Facebook3' => '69.63.176.0/20',255.255.240.0

Добавлено спустя 1 час 33 минуты 12 секунд:
Андрей, а почему у Вас подсеть/25 mail.ru 94.100.181.128/25
Хотя многие онлайн сервися показывают /8 94.0.0.0/8
Ответить


Пред.След.

Вернуться в PHP-скрипты



Кто сейчас на сайте

Зарегистрированные пользователи: нет зарегистрированных пользователей