- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть самописный плагин Джумлы, который защищает сайт от назойливых парсеров и прочей нечисти.
Раз в 10 минут он парсит лог Nginx и при превышении заданного лимита выводит гугл капчу, пока ее не пройдешь - контент не получишь.
Давайте не будем отвлекаться на вопросы "а зачем это нужно", "а как же поисковые боты", все работает уже лет 5 как и все норм, речь не об этом.
Решил я использовать этот плагин для ограниченного доступ к одному из разделов сайта, куда вручную собираю инфу и хочу намного усложнить ее парсинг.
Вот часть кода плагина, отвечающего за вывод капчи.
//preg_match('~(.*)/price~', $_SERVER['REQUEST_URI'], $urlPrice, PREG_OFFSET_CAPTURE);
if(!empty($count))
{
$doc = JFactory::getDocument();
$doc->addScript('/js/site.cap.js');
$this->content = '<div id="kapcha"></div>';
}
/*
elseif (!empty($urlPrice[0][0])){
$doc = JFactory::getDocument();
$doc->addScript('/js/site.cap.js');
$this->content = '<div id="kapcha"></div>';
}
*/
}
}
return;
}
function onAfterRender()
{
if(!empty($this->content))
{
$content = JResponse::getBody();
$content = preg_replace('#(<div id="Center">)(.+)<!-- code -->#is', '$1<h1>Пройдите проверку, что Вы не робот</h1>'.$this->content, $content);
JResponse::setBody($content);
}
}
}
В итоге на странице нужного раздела появилась капча, но при ее прохождении страница просто перезагружается и снова капча.
Что я упустил?
Новый код, что я добавил - выделил жирным.
Так обычно - капчу проходишь, страница перезагружается и показывается контент.
Я так думаю что у меня вечно срабатывает условие elseif (!empty($urlPrice[0][0])){
Можно ли это обойти или не в этом ошибка?
Вот часть кода плагина, отвечающего за вывод капчи.
1) А где часть кода, отвечающая за её обработку? =)
2) и где устанавливается $urlPrice?
ivan-lev,
1. Да вроде нет этой части - как я понимаю - прошел капчу и функция function onAfterRender() тебя пропустила дальше.
2. Это вообще не понял, это просто проверка на часть урла