1. 广州SEO技术博客首页
  2. 科技科普

网站被镜像反向代理应该如何解决?

这次,小编来给大家说说关于一种黑技术 ”反代“,如果被反向代理了,那就是说整个站几乎都被镜像代理了,这对自己的站危害甚大啊。那么,网站被镜像反向代理应该如何解决呢?接下来,小编就给大家说说吧。

网站被镜像反向代理应该如何解决
网站被镜像反向代理应该如何解决

如果某天查看Nginx日志发现自己的网站被设置301 跳转了,想想只是跳转,没实际危害就算了。但是,如果站长你查询日志,发现居然变本加厉反向代理了整个站,再查发现居然还开了好多个域名反代,那得自己行动,保护自己的网站了。

一、恶意反代的危害

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

二、如何屏蔽反代

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

1、防火墙配置

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

[root@UN ~]# firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address="1.1.1.1" drop' --permanent
[root@UN ~]# 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
Sh
Copy

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;
}
......
}

原创文章,作者:小嵘SEO技术,如若转载,请注明出处:https://www.seo388.com/fandai/

联系我们

17688872082

在线咨询:点击这里给我发消息

邮件:2668888288@QQ.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code