之前有被反代的经历,写了篇《我的博客这么有名了吗?》讲述处理的过程,目前已经成功解决。有朋友留言,也有网友给我发邮件,有类似的经历,问我怎么办?这里就集中回复。不敢班门弄斧,只求相互学习。

一、什么是反向代理

举例来理解,比如用户访问 https://oqaz.xyz(之前盗版我网站的域名),结果看到的却是我网站的内容,除了域名不同,其他内容几乎一模一样。原因是由于访问 https://oqaz.xyz 时,它是偷偷从我的服务器上爬取资源,然后作为自己的内容吐给用户。但用户并不知情,这里所提到的 https://oqaz.xyz 这个域名对应的服务器就设置了反向代理功能。

二、为什么要反向代理

反向代理可以解决一些问题,比如有些国外的网站在国内是无法访问的,通过反向代理可以访问的到。还有些垃圾站,本身无内容又想让搜索引擎收录,于是就反代一个网站,加速收录,这样就构成了恶意反向代理,即盗版别人的网站。

Nginx的出现让反向代理的实现变的特别简单,特别是一些建站平台,比如宝塔面板,直接将反向代理作为一个功能提供给客户,只需要填入反向代理的目标域名或IP,一键就能完成反向代理,给一些别有用心的人提供了可乘之机。

三、恶意反向代理(盗版)的危害

首先是占用服务器资源,导致网站打开速度受影响;其次,对搜索引擎而言,相当于建了一个与你一模一样的站点,那么你的站点会受到影响,甚至被搜索引擎降权;再次,一些人还会在反代你的网站后挂马,诈骗等,一些用户不明所以可能会上当,维权时去找你,你就说冤不冤;此外,如果被恶意代理的页面,还挂有你的联盟广告(比如Adsense),很容易被Adsense封号。当然,还有很多危害,不再一一列举。

四、怎样防止网站被反代

1、js解决方案

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

如果地址栏中的网址不是 minirizhi.com 和 www.minirizhi.com 中的任何一个,那么就把地址栏转向 https://minirizhi.com 。如果用iframe做了个框架,把我们网站嵌入其中,可加入以下代码:

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

2、php解决方案

$proxy_rs = $this -> proxy_filter();
if( $proxy_rs != 'minirizhi.com' || $proxy_rs != 'www.minirizhi.com' ) 
{
 echo '非法反向代理访问';
 //header('Location: https://minirizhi.com');是否跳转原站
 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'];
}

五、网站已被反代怎么办

如果您的网站已经被恶意反代,那么封对方IP是最直接有效的方式。如果对方没有缓存,封了IP对方网站也就无法访问了。但是有些恶意反代开启了缓存,有些把图片什么的都缓存到对方网站了,那就比较难搞了。除了封IP基本没别的办法了,这样你更新至少它就不会更新了。

一旦网站被恶意反代了,对方把js一旦屏蔽,再使用js那些方法基本么有用,只能是封IP。如果它换IP,换一个禁一个,看它有多少。据我观察,做这些基本都是国外的,如果你国外没有访问量,直接禁止国外ip段更省事了。

六、怎么找对方代理服务器IP地址

首先,在自己服务器上建一个PHP文件,为了方便访问,可以建在根目录上,比如info.php,输入以下代码并保存。

<?php phpinfo();?>

其次,访问对方域名/info.php,会显示PHP环境参数。如果您的网站用到了CDN,搜索REMOTE_ADDR,得到的IP地址即是对方代理服务器IP。如果您的网站未用cdn,域名是直接解析到真实服务器IP,则搜索HTTP_X_FORWARDED_FOR得到的IP地址即是对方代理服务器IP。

最后,直接设置禁止对方代理服务器IP访问就可以了。

文章目录