如何防止Magento中的垃圾评论

时间:2012-02-10 17:27:16

标签: php forms magento recaptcha spam

我们在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>";
?>

4 个答案:

答案 0 :(得分:0)

使用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请求并检查入口点。

答案 1 :(得分:0)

我最终在Fontis reCaptcha扩展中实施了Akismet反垃圾邮件代码,这似乎已经取消了所有垃圾邮件评论。不知何故,机器人能够绕过reCaptcha检查。我仍然没有弄清楚如何,但我想这就是将黑客与像我这样的人分开,只是想让网站保持正常运行......

答案 2 :(得分:-1)

尝试使用我们的免费模块ET_Reviewnotify。它具有拒绝垃圾邮件机器人的功能。

答案 3 :(得分:-1)

我开发了一个扩展程序,可以使用Magento中的默认表单来提交评论。然后它将内容发送到Mollom,类似于Akismet。然后分析内容,如果内容被解释为垃圾邮件,则让用户在下一步进入验证码,以允许“真实”用户有机会验证它们是真实的。如果服务没有正确检测到它,这种方法可以允许垃圾邮件,但实际上更容易让用户使用。我没有将代码打包在一起,但如果我发现对这样的产品有足够的需求,我可以在Magento Connect上提供它。