小幻最近评论被人通过多说和 WP 的评论接口 POST 攻击评论了,可以 WordPress 的防住了,多说的却没有任何头绪。于是一气之下直接关掉了多说。无聊又添加了 UA 显示(多说原因,以前的都出了问题)、邮件提醒这些功能。
可是每次发送的时候都感觉不对劲,给我发过来的 E-mail 显示的 IP 都是一个 IP,看了下,发现原来……都是一个 IP 地址。仔细一想,原来是我的 CDN 的问题。
只是简单的这个还没有事情,只是,WordPress 内有评论 IP 拦截等等这些功能,不能都拦截了。
百度一下,发现了一个好的方法。只要添加一段代码,IP 地址就可以正常了,其实 CDN 在头部应该有把访问者 IP 发送的,那段代码就是把 WordPress 的 ip 中变量换成 $_SERVER 获取的。这个可以用在任意 CDN 和反代里面,IP 地址可以获取正确的,但是如果你想我的对方用过 VPN 、代理、 ss……后的本机原始 IP 可以使用 js 获取,这个以后会有介绍的。
好了唠叨了那么多,还是上点干货吧。
在 WordPress 安装根目录下面 wp-config.php 文件,打开后,在其内添加下面代码:
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']); $_SERVER['REMOTE_ADDR'] = $list[0]; }
再用 SS,发了个评论,看了下 IP 地址,换成了 VPS 的地址了,当然我的 IP 识别也正常了!
再次庆祝一下自己咯,虽说备案好了,搜索引擎还一直没恢复,不过 IP 却已经过百了,不错了。