网站被人反代做了镜像站,怎么破?

之前查询 Nginx 日志发现主站被 301 跳转了,想想只是跳转,没实际危害就算了,今天查询日志,发现居然变本加厉反向代理了整个站,再查发现居然还开了好多个域名反代,我也是醉了,必须采取点措施了!

一、恶意反代的危害

  • 首先肯定会占用服务器资源,网站打开速度受影响。
  • 其次,别人通过代理盗用你的网站数据,对用户与不是那么智能的搜索引擎而言,相当于建了一个与你一模一样的站点,那么很有可能你的站点会进搜索引擎沙箱,甚至被降权。
  • 如果被恶意代理的页面,还挂有你的联盟广告(比如 Adsense),这就十分危险了,如果有人点击了上面的广告,很容易被 Adsense 封号。
  • 还有很多危害,可以自行脑补 ……

二、如何屏蔽反代

屏蔽方法很多,可以在系统层面利用防火墙屏蔽,可以在服务上屏蔽,也可以在内容上屏蔽,没有必要都配置一遍,选择合适的即可。

1、防火墙配置

如果代理服务器是直接连接我们服务器,可以在防火墙上禁止该 IP 连接,以 CentOS 7 为例:

[[email protected] ~]# firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address="1.1.1.1" drop' --permanent
[[email protected] ~]# firewall-cmd --reload

如果代理服务器更换了 IP,我们就要再配置防火墙,而且若代理服务器使用了 CDN 来反代,那么这种方法将不适用,除非你确定自己也不会用 CDN。

2、Nginx 配置

在站点配置文件中新增一段:

server {
......
       if ($host !~ vircloud.net) {
           return 444;
       }
......
}

代理服务器访问直接不回应,若要跳转到自己的网站,可以把 444 改成网站链接,此方法最简单彻底。

3、.htaccess 屏蔽

.htaccess

RewriteEngine On
RewriteBase /
php_value auto_append_file proxy.php

proxy.php

<?php
$f = getenv("HTTP_X_FORWARDED_FOR");
$server = getenv("HTTP_HOST");
if (($f!="")&&($server!="vircloud.net")&&($server!="www.vircloud.net")){
    echo '本服务器禁止反向代理!';
}
?>

4、JavaScript 屏蔽

直接在网页中添加:

<script type="text/javascript">  
if (document.domain != 'vircloud.net' && document.domain != 'www.vircloud.net'){  
window.location.href='https://www.vircloud.net/';  
}  
</script>  

如果是反代者使用了 iframe,那么应该再加一段判断:

<script type="text/javascript">
  if (top.location != self.location) {
    top.location=self.location;
}
</script>

或者

<script type="text/javascript">
var url=window.location.href;
if(window!=parent)
parent.navigate(url);
</script>

厉害的反代者会直接把 js 替换掉,所以这种方法不能完美屏蔽。

5、PHP 屏蔽

$proxy_rs = $this -> proxy_filter();
if( $proxy_rs != 'vircloud.net' || $proxy_rs != 'www.vircloud.net' )
{
    echo '非法反向代理访问';
    header('Location: http://www.vircloud.net/');
    exit;
}
public function proxy_filter()
{
    $svrUrl = 'http://' . $_SERVER['SERVER_NAME'].$_SERVER["PHP_SELF"];
    if (!empty($_SERVER["QUERY_STRING"]))
    {
        $svrUrl .= "?".$_SERVER["QUERY_STRING"];
    }
    return $svrUrl;
    return $_SERVER['SERVER_NAME'];
}

6、refer 屏蔽

此方法针对 301 跳转,Nginx 下配置:

server{
.....
if ($http_referer ~* (.*\.abc.com|abc.com)){
  return 444;
}
......
}

扩展阅读:
1、《Typecho 如何设置文章密码保护
2、《网站如何屏蔽垃圾蜘蛛爬取?


参考文章:
1、《如何阻止网站被恶意反向代理访问


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 反代修复 的文章

 本文最后更新于 2018/03/12 20:38:50,可能因经年累月而与现状有所差异

 引用转载请注明:VirCloud's Blog > 运维 > 网站被人反代做了镜像站,怎么破?

精选评论

  1. 4Rou

    之前看到V2老哥用js混淆然后给自己导流,也挺不错的

  2. 思绪的空中生活

    说明你的文章是优质内容

    1. VirCloud

      也是哦,也算是一种肯定了,虽然不喜欢

  3. zhujiwiki

    也是被反代了,没有理。
    试下这个方法

  4. LALA

    收藏,顺带点赞~

  5. zvv