自从被封禁后,这个家伙就一直在向我的 phpBB2 论坛发送垃圾信息。他不断使用代理,我想用我的 htaccess 屏蔽他们。我的论坛位于http://www.site.com/forum/我在 /forum/ 中放置了一个 .htaccess 文件,其中包含以下内容,在网上某处找到的:
RewriteEngine on
RewriteCond %{HTTP:VIA} !^$ [OR]
RewriteCond %{HTTP:FORWARDED} !^$ [OR]
RewriteCond %{HTTP:USERAGENT_VIA} !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED_FOR} !^$ [OR]
RewriteCond %{HTTP:PROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$
RewriteRule ^(.*)$ - [F]
我听说这个非常准确。所以我试了一下,但网络代理无法访问该页面。但它工作了 5 分钟,现在它没有阻止任何东西......我尝试了不同的代理,无论是否基于网络,都没有被阻止......我想知道我是否做错了什么,htaccess 对我来说看起来是正确的!
如果你们有想法,那就太好了。我总是在 Stackoverflow 上找到答案,所以我觉得我应该在这里问 :P
干杯
答案1
我希望你明白,如果你让你的代理阻止规则发挥作用,这不仅会禁止垃圾邮件发送者,还会禁止所有使用代理的用户。
您可以尝试记录 X-Forwarded-For 标头(例如,如果您使用的是 apache,请将“%{X-Forwarded-For}i”添加到 logformat)。除非垃圾邮件发送者使用匿名代理,否则这应该会在访问日志中为您提供真实的访问者 IP。然后将他的帖子的时间戳与 http 访问日志进行匹配(使用几秒钟的时间窗口),您应该会得到他的真实 IP。它可能有效。
如果垃圾邮件发送者使用匿名代理,您可能需要审核您的帖子。无论如何您都应该这样做。自动接受来自知名用户的帖子并审核新/不受信任用户的帖子。我不知道 phpbb,但它可能支持审核。
编辑__
如果你真的想阻止(坏)代理,请尝试使用mod_spamhaus,它应该会阻止报告的垃圾邮件和开放代理的 IP。请参阅spamhaus 网站了解被报告的 IP 地址。我想不出任何可以阻止匿名代理的 mod_rewrite 规则(我一直在想这件事)
答案2
我为我的工作网站做了 3 件事,帮助消除了 99.9% 的联系表单垃圾邮件:
1) 测量从加载联系表单到提交表单所经过的时间。如果有人在不到 10 秒的时间内提交表单,那么这一定是计算机做的,因为即使使用地址填充插件,人类也不可能在这段时间内回答所有必需的问题。您可以考虑采用类似的策略来防止脚本快速发布。
2) 如果联系信息包含多个或可疑 URL,则标记为垃圾邮件。对于公告板情况,阻止多个 URL 链接可能不可接受,但如果您可以在垃圾邮件帖子中发现任何特定的独特 URL 模式,您可能能够过滤这些帖子。
3)我们有一个人类用户永远不会看到的虚假隐藏电子邮件地址字段,因此如果提交的表单的隐藏字段有一个值,我们就知道它不是人类……也许你可以用虚假的评论框做类似的事情?
这些可能对你不起作用,因为它们是在 PHP 级别而不是 Apache 级别实现的,而且它们只对自动脚本真正有效,但希望至少它能给你一些关于处理垃圾邮件问题的其他方法的想法