Как предотвратить спам-отзывы в Magento

В нашем магазине Magento мы наблюдаем ряд спам-отзывов о продуктах. Недавно я установил расширение Fontis reCaptcha, чтобы добавить форму reCaptcha в форму отзывов. Во всех моих тестах это работает отлично. «Настоящий» пользователь не может отправить форму, не заполнив часть reCaptcha. Однако это не решило проблему. Мы все еще получаем спам-отзывы. Интересно, что эти спам-обзоры также не имеют звездного рейтинга. Каким-то образом эти спам-боты могут отправить отзыв без всей необходимой информации и полностью в обход кода reCaptcha. Любые мысли о том, как я могу это исправить?

Я также попытался создать простой скрипт, который отправлял бы поля формы на проверку по URL-адресу действия формы в попытке обойти логику (см. ниже). Я либо не могу заставить его работать, либо это просто невозможно, но меня всегда перенаправляют на страницу «Пожалуйста, включите файлы cookie».

Проверка отправки формы обзора

<?php
$curl_connection = curl_init('http://my.domain.com/review/product/post/id/2587/');

curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);

$post_data = array();
$post_data['ratings[5]'] = '21';
$post_data['nickname'] = 'mynick';
$post_data['title'] = 'my title';
$post_data['detail'] = 'My Review Content';

$post_items = array();

foreach ( $post_data as $key => $value)
{
    $post_items[] = $key . '=' . $value;
}
$post_string = implode ('&', $post_items);

curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);

$result = curl_exec($curl_connection);

echo "Curl Info:<br><pre>";
print_r(curl_getinfo($curl_connection), true);


curl_close($curl_connection);

echo "<br>Result:<br>" . htmlentities($result) . "</pre><br>";
?>

person BrianVPS    schedule 10.02.2012    source источник
comment
Проблема не здесь, кажется, а в файле, соответствующем /review/product/post/id/2587/.   -  person axiomer    schedule 10.02.2012


Ответы (4)


Тестировать отправку обзора стало проще с Varien_Http_Client (Zend_Http_Client)

include 'app/Mage.php';
Mage::app(); //for autoloading:)

$client = new Varien_Http_Client('http://your-url.com/review/product/post/id/2/');
$client->setMethod(Varien_Http_Client::POST);
$client->setParameterPost('nickname', 'test');
$client->setParameterPost('detail', 'detail');
$client->setParameterPost('title', 'test');
$client->setCookie('test');
$client->setCookieJar(true);
/** @var $response Zend_Http_Response */
$response = $client->request();

echo $response;

Без reCaptcha добавляет обзор.

С прямо сейчас загруженным модулем reCaptcha fontis (версия 2.3.1) он возвращает ошибку с некорректной reCaptcha.

Если вы используете ту же версию этого модуля и ту же версию Magento (1.6.2.0), я бы рассмотрел возможность поиска в журнале сервера «злого» запроса POST и проверки точки входа.

person Jakub Šimon    schedule 10.02.2012
comment
Спасибо за информацию о тестировании подачи отзыва через классы Varien. Кажется, это работает, однако ответ, который отображается на странице, является тарабарщиной (похоже, он печатает двоичный файл в виде текста). Могу ли я что-то сделать с этим, чтобы сделать его читабельным? - person BrianVPS; 14.02.2012
comment
echo $response вызывает $response->_toString(), который печатает как заголовки, так и тело этого ответа. С echo $response->getRawBody() вы можете получить вывод без заголовка, и он должен правильно отображаться в браузере (у меня работает в chrome). В любом случае, это не было целью моих усилий, ответ показывает только сообщение об ошибке, которое подтверждает, что модуль капчи работает - person Jakub Šimon; 16.02.2012

В итоге я внедрил код защиты от спама Akismet в расширение Fontis reCaptcha, и это, похоже, устранило все спам-обзоры. Каким-то образом боты могут обойти проверку reCaptcha. Я до сих пор не понял, как, но, думаю, это то, что отличает хакеров от таких парней, как я, которые просто пытаются поддерживать работоспособность сайта...

person BrianVPS    schedule 20.02.2012

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

person Юрий Николаев    schedule 10.02.2012

Я разработал расширение, которое использует форму по умолчанию в Magento для отправки отзыва. Затем он отправляет контент в Mollom, который похож на Akismet. Затем контент анализируется, и если контент интерпретируется как спам, я заставляю пользователя ввести капчу на следующем шаге, чтобы дать «настоящему» пользователю возможность убедиться, что он настоящий. Этот подход может разрешить спам, если служба не обнаружит его правильно, но на практике его проще использовать пользователям. Я не упаковывал код вместе, но могу предложить его на Magento Connect, если обнаружу, что на такой продукт есть достаточный спрос.

person code_break    schedule 24.02.2012