应对恶意镜像

上个周末帮朋友解决了个人博客被"恶意镜像".小记一下解决过程.


站点被恶意镜像的影响我作为个人站长只想到如下:

  • 小站比较注重SEO,恶意镜像可能降低权重
  • 恶意镜像者添加了一些不应有的内容——如各种令人讨厌的弹窗,损害站点形象.

企业站更注重SEO,而如果新建成的企业站被恶意镜像,而恶意镜像者的域名权重高于你站。那么除了上述对个人站影响之外,当有人用搜索引擎搜索你企业相关信息时,那个恶意镜像者的域名可能排名更靠前,这对企业网络宣传十分不利


#1.常规方法与局限性

nslookup查恶意镜像站IP,站长后台屏蔽此IP(如使用.htaccess),阻止其采集站点内容.但是这是有局限性的——

其一,恶意镜像者若使用CDN,你无法得到其IP。

其二,安装了HTTP服务的服务器(VPS)与恶意采集你站的服务器(VPS)并不是同一台,以下流程图会让你明白此言何意.

你的服务器(IP#0)→采集服务器(IP#1)→HTTP服务器(IP#2,域名解析到此IP)→读者的浏览器

我们可以对恶意镜像站的域名进行nslookup,得知IP#2,但并非IP#2的服务器在进行恶意采集,而欲阻止被恶意采集,服务器端应屏蔽IP#1.


#2.新思路&实战.

获取并在服务器端屏蔽IP#1是解决之关键。它被用于访(采)问(集)你的服务器,故可以从你的服务器下手.

我本次遇到的情况中,站长使用虚拟主机,Apache HTTP Server和PHP5.6,因不是Dedicated Server或VPS,故很难得到Apache的Log,抑或是操作iptables.所以要通过PHP得知IP#1.

将如下代码写入文本档,保存为.php,并访问即可获得Remote IP.

<?php 
/* 更改字符集 否则中文乱码 */
header("Content-type:text/html;charset=utf-8");
?>
<head><title>查看IP地址</title></head> 
<body>
    <p style="text-align:center;font-size:20px;">
    当前访问者IP为:
<?php 
$ip=$_SERVER['REMOTE_ADDR'];
echo $ip;
?>
    <a href="http://www.ip138.com/ips138.asp?ip=<?php $ip=$_SERVER['REMOTE_ADDR']; echo $ip; ?>" target="_blank">查看此IP地址位置</a> <!-- 通过IP138.com查找IP所在地 -->
    </p>
</body>

以上代码最核心的就一句,用来获取并Print出访问者IP.

<?php
    $ip = $_SERVER['REMOTE_ADDR'];
    echo $ip;
?>

把这个文件保存成简单名称(如我,https://hardrain980.com/ip.php),放进根目录,首页做个链接(如我,放在页脚)

然后静静等待那个恶意镜像的站再次采集...最后进恶意采集你的站,点开上面的ip.php链接,应该便可得到IP#1。把它屏蔽掉。


回想起去年我应对无耻ISP宽带通把我站(当时本站没有SSL)劫持到其母公司鹏博士宽带的采集站uibe2010.comsdfste.com时,我也使用了类似方法。

17条评论

  1. 不错,学习了!恶意镜像真的是好烦人呀!特别是投放了联盟广告的站点,一旦被恶意镜像被封的可能就非常的大了!

  2. 以前好像有人反代我的,倒也没放心上,没啥价值的东西反代只会浪费他的资源

    1. @FROYO : 嗯...但有些人以此牟利还投放不良广告败坏站点名声,我就遇到过鹏博士这家ISP这么干

  3. 我这种为了加速网站自己给自己网站搭建镜像结果被百度K站的大概很少了

    1. @路易大叔 : 其实更多是通过权重在搜索引擎那压你 然后在恶意镜像的、你的站上投放广告(可能还有不良内容)来获取经济利益

评论已关闭。