Создать ответ 
Скрипт защиты от ботов, спам ботов и авто ботов
Автор Сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,279
У нас с: Aug 2011
Сообщение: #1
Скрипт защиты от ботов, спам ботов и авто ботов
Дабы не разводить дебаты в комментариях к теме Скрипт защиты от ботов, спам ботов и авто ботов, было принято перенести часть комментариев из данной темы на форум.

(01.12.2014 13:55:27)Алексей писал(а):Верно, все работает, но теперь для страниц, которые находятся в корне - нет, т.е. все наоборот. Конечно я могу создать 2 папки, например, с bad_bot 1 и bad_bot_2 и в одном случае, когда папки в корне переменная
$file_name = "bot/black_list.dat"; (bad_bot я переименовал в bot)
и для страниц, которые в папке переменная
$file_name = "bot/black_list.dat";
тогда все будет работать, но нет ли возможности в index.php прописать, чтобы страницы в корне и в папках обращались к 1 файлу index.php или реализовать другим способом, так как я не люблю, когда все страницы лежат в корне. Заранее благодарен.



(01.12.2014 13:58:09)Алексей писал(а):Ошибся в написании переменной для страниц в папке.
$file_name = "bot/black_list.dat"; (bad_bot я переименовал в bot)
и для страниц, которые в папке переменная
$file_name = "../bot/black_list.dat";


(01.12.2014 14:17:01)Алексей писал(а):В папке bot, где хранятся все файлы создал папку и поместил в нее только index.php, где поменял переменную
$file_name = "../bot/black_list.dat";
на вложенных страницах прописал путь соответственно,
<?php include("../bot/имя папки/index.php"); ?> и теперь все работает, но повторяюсь, нет ли возможности в index.php указать, что не только для корневых, но и для вложенных страниц скрипт работал?



Попробуйте во всех местах перед указанием папки "bad_bot" добавить "../", чтобы избавиться от абсолютных путей.
01.12.2014 21:45:35
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-майор
*

Сообщений: 311
У нас с: Nov 2014
Сообщение: #2
RE: Скрипт защиты от ботов, спам ботов и авто ботов
К сожалению не работает, так как я сделал это сразу, но в любом случае спасибо !

Странно, например, <?php include ("../php/header.php"); ?> работает нормально для страниц в папках, а <?php include("bad_bot/index.php"); ?> для страниц в корне, и когда меняешь путь на <?php include("../bad_bot/index.php"); ?> для страниц в папках, то и в index.php надо менять переменную $file_name = "bot/black_list.dat"; на $file_name = "../bot/black_list.dat"; соответственно, т.е получается нужно создавать 2 файла index.php и расположить их в разных местах?
Я так и сделал и сейчас все работает нормально для всех страниц, но +742byte за еще 1 index.php, где добавляется ../ для переменной $file_name, чтобы скрипт работал и для страниц в папках.
(Последний раз сообщение было отредактировано 02.12.2014 в 12:49:41, отредактировал пользователь ale10ey.)
02.12.2014 12:35:19
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-майор
*

Сообщений: 311
У нас с: Nov 2014
Сообщение: #3
RE: Скрипт защиты от ботов, спам ботов и авто ботов
(02.12.2014 12:35:19)ale10ey писал(а):  К сожалению не работает, так как я сделал это сразу, но в любом случае спасибо !

Странно, например, <?php include ("../php/header.php"); ?> работает нормально для страниц в папках, а <?php include("bad_bot/index.php"); ?> для страниц в корне, и когда меняешь путь на <?php include("../bad_bot/index.php"); ?> для страниц в папках, то и в index.php надо менять переменную $file_name = "bot/black_list.dat"; на $file_name = "../bot/black_list.dat"; соответственно, т.е получается нужно создавать 2 файла index.php и расположить их в разных местах?
Я так и сделал и сейчас все работает нормально для всех страниц, но +742byte за еще 1 index.php, где добавляется ../ для переменной $file_name, чтобы скрипт работал и для страниц в папках.

Вопрос насчет кодировки.
На странице, где:
<?php include("bad_bot/index.php"); ?>

<!-- bad_bot -->
<a href="bad_bot/black_list.php" style="display: none;">
<img style="border: 1px solid #ff0000;" src="bad_bot/pixel.gif" alt="" /></a>
Делаю ссылкой видимой и кликаю по ней, попадаю на страницу black_list.php с
"козябрами". В браузере меняю кодировку на Кириллица (Windows) и отображается все нормально. Пробовал добавлять строчку в black_list.php после тега html <meta charset="utf-8"> не срабатывает и показывает:
��� �� ���� ������?

��������� �� ������� ��������
вместо:
Как Вы сюда попали?

вернуться на главную страницу
Все страницы имеют кодировку utf-8 (meta charset="utf-8">).
В 1 раз столкнулся с подобным, но проблему решил быстро, так у меня все страницы в кодировке utf-8, то я копировал 1 страницу и переименовал ее в нужные мне (black_list и index.php) и со страрых страниц вставил туда содержимое и все стало отображаться нормально.
Как сделать, чтобы не копировать имеющуюся страницу для имеющихся black_list и index.php, чтобы сообщения отображались в нормальной кодировке.
Надеюсь, вы сможете разобрать, что я написал.
07.12.2014 14:54:23
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,279
У нас с: Aug 2011
Сообщение: #4
RE: Скрипт защиты от ботов, спам ботов и авто ботов
Можно конечно еще в .htaccess файле задать кодировку: AddDefaultCharset UTF-8

Не факт что поможет, лучше конечно пересохранить странички сразу в нужной кодировке.
07.12.2014 16:31:37
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-майор
*

Сообщений: 311
У нас с: Nov 2014
Сообщение: #5
RE: Скрипт защиты от ботов, спам ботов и авто ботов
(07.12.2014 16:31:37)Admin писал(а):  Можно конечно еще в .htaccess файле задать кодировку: AddDefaultCharset UTF-8

Не факт что поможет, лучше конечно пересохранить странички сразу в нужной кодировке.

В файле .htaccess прописано:
DefaultLanguage ru-Ru
AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_charset.c>
CharsetSourceEnc utf-8
CharsetDefault utf-8
</IfModule>

Это не помогло, а вот пересохранение в нужной кодировке - да.
Спасибо за ответ.
08.12.2014 13:14:26
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-майор
*

Сообщений: 311
У нас с: Nov 2014
Сообщение: #6
RE: Скрипт защиты от ботов, спам ботов и авто ботов
Уважаемый администратор, возвращаюсь к избитой теме, так как думаю, что проблему можно решить.
Сделал корневую и вложенную страницы, прописал в корневой странице относительный адрес и проверил в работе - OK, для корневой страницы пробовал как относительный, так и абсолютный адрес, но выдается ошибка.
Прикрепил архив mysite.ru, где при переходе на вложенную страницу page.html выдается вышеупомянутая ошибка.

.rar  mysite.ru.rar (Размер: 4.17 Кб / Загрузок: 1)
На данный момент у меня проблема решена добавлением в папку bad_bot еще одного html документа (bad_bot.php), где изменена лишь одна строчка из index.php
(строка 5)
$file_name = "bot/black_list.dat";
на:
$file_name = "../bot/black_list.dat";
и работает корректно для корневой страницы.
Тег <base> на страницах указан, но проблема не решается.
P.S.: Похожая проблема была в скрипте "Несколько измененный скрипт автобана"
и была решена (сообщение #105).
Пробовал и также тут сделать, но не получается, ошибка:
Warning: fopen(bad_bot/black_list.dat) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: No such file or directory in D:\Site\OpenServer\domains\mysite.ru\www\bad_bot\index.php on line 6

Все понятно, но не хотелось бы создавать 2 файла с одинаковым содержанием, в одном из которых будет изменена лишь 1 строчка.
С уважением, Алексей.
(Последний раз сообщение было отредактировано 11.02.2015 в 15:57:53, отредактировал пользователь ale10ey.)
11.02.2015 15:54:21
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-майор
*

Сообщений: 311
У нас с: Nov 2014
Сообщение: #7
RE: Скрипт защиты от ботов, спам ботов и авто ботов
Доброе время суток,
Тестировал на 2 локальных серверах (Denwer, OpenServer) и результат один для корневых работает отлично, а для вложенных страниц скрипт не работает, пока не создашь еще 1 страницу, в моем случае bad_bot, где будет изменена 1 строчка.
23.02.2015 06:21:24
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,279
У нас с: Aug 2011
Сообщение: #8
RE: Скрипт защиты от ботов, спам ботов и авто ботов
К сожалению сейчас компьютера с Apache сервером под рукой нету, потестить не могу.
23.02.2015 14:34:07
Найти все сообщения Цитировать это сообщение
Frunzik Не на форуме
Рядовой
*

Сообщений: 6
У нас с: Jan 2016
Сообщение: #9
Thumbs Up RE: Скрипт защиты от ботов, спам ботов и авто ботов
Здравствуйте! HappyDrinkБольшое спасибо за ваше практичное решение! В посте # 1175 вы писали
Цитата:Вы прописали в файле robots.txt запрет на индексацию для ботов (disallow: /bad_bot/)? Если да, и это не помогло, то можно добавить условие на проверку популярных ботов в файл black_list.php.
Для этого после <?php добавьте:
$agent=$_SERVER['HTTP_USER_AGENT'];
if (strpos($agent, 'Googlebot')===false and strpos($agent, 'YandexBot')===false) {
И не забудьте в конце перед тегом ?> закрыть фигурную скобку "}".
на что вам ответили что добавление осуществлялось (со стороны того кто спрашивал)
Цитата:По поводу закрыть скобку, теперь их две после exit;
, это говорит о том, что добавление производилось в файл index.php
мой вопрос: при добавлении в black_list.php у меня не работает - белая страница, при добавлении в index.php всё работает но добавляет googleBota,
PHP код:
194.58.115.144 17:24:34 18.01.2016 /bad_bot/black_list.php http://bot.virusdie.com/ Virusdie crawler/2.1
66.249.78.36 17:51:55 18.01.2016 /bad_bot/black_list.php  Mozilla/5.0 (compatibleGooglebot/2.1; +http://www.google.com/bot.html) 
что нужно правильно прописать чтобы Googlebot, yandexbot и другие нужные боты не попадали в список .dat?Help
18.01.2016 20:52:56
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,279
У нас с: Aug 2011
Сообщение: #10
RE: Скрипт защиты от ботов, спам ботов и авто ботов
Даа... Be что-то я там насоветовал не так...

Правильнее будет и в файл index.php, и в файл black_list.php сразу после <?php добавить:
PHP код:
$agent=$_SERVER['HTTP_USER_AGENT'];
if (
strpos($agent'Googlebot')===false and strpos($agent'YandexBot')===false) { 

И в конце в обоих файлах перед тегом ?> закрыть фигурную скобку "}".

Таким образом, при заходе на black_list.php будет отображаться пустая страница, но указанные боты добавляться в black_list.dat не будут.
18.01.2016 21:24:01
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)



Mail.ru LiveInternet

© Copyright 2011-2016 by UsefulScript.ru