解决博客网站被克隆或恶意反向代理解析的问题

类别:技术 日期:2020-02-20 评论:1

昨天晚上打开自己博客站点的百度统计后台看数据,发现有个来源域名的流量比其他来源大很多,我以为是使用我制作的Z-Blog主题的网友的博客站点链接过来的。好奇之下,我打开了那个域名。

当我打开这个站点后,我还以为我看花眼了,这个站和我的站点一模一样?

我的第一反应是网站被别人恶意地镜像复制了,很多站长都遇到这类的问题。

经过一段时间的搜索学习,我得知发生这种情况,还不一定是被镜像复制了,别人的域名能看到和我的网站一模一样内容的这种现象,一般可能是以下几种原因造成:

1.整个站点被别人用采集器复制过去了;

2.别人用域名解析到网站的服务器上,从而实现用别人的域名打开了源站点;

3.别人的域名设置了针对域名的跳转(反向代理)。

第一种情况是内容被人家复制了一份,网络上存在两台服务器中存放同样的网页内容,第二和第三种情况是内容没有被复制,只是那些山寨的域名自己指向源网站了。

要判断是不是直接被域名指向的也很简单,在自己的网站上做一个小修改,然后立刻用山寨域名访问,也实时修改了,基本上就可以判定是了。

1.网站被镜像复制

网站被复制克隆是我的第一反应,这种情况一般是有采集软件(爬虫)过来读数据。

针对这种情况,站长需要设法找到过来爬取内容的IP,然后在服务器上将其列出不允许访问的黑名单。

这类软件一般周期性地过来读取内容,而且读取的页面较多,可以通过这种思路找出问题IP。

我在自己的网站上更新一点信息,然后马上去看山寨域名站点,结果山寨的域名下也是秒更新,我基本上就排除了网站被采集软件复制的可能性,推测是山寨域名直接指向了我的网站了。

2.域名恶意解析到服务器IP

解决山寨域名恶意指向网站的问题的思路就是在服务器上限定只允许本站的域名接入,禁止通过IP方式访问网站即可。一般这类域名恶意指向的情况,都是山寨域名直接指向了网站的IP地址。

我的网站用的是Nginx做的服务,我在网上找了一下,基本上就是在配置文件中新增一个server节点,将合法域名之外的访问全部返回404,或者用nginx自己的一个444错误码,代码如下:

server
{
  listen 80 default_server;
  server_name _;
  return 444;
}

如果是用的宝塔面板,可以通过可视化界面新增一个网站,将其设置为默认网站,并在这个默认网站的配置文件上新加上面的配置,这样,没有通过指定域名的访问,都将去访问这个返回444的“默认网站”。

需要注意的是,有时候配置了上述信息,可能还不生效,这时要注意系统中多个Nginx配置文件的执行顺序。

一般系统中会在多处有配置文件,比如我们用的宝塔面板,系统安装了Nginx后,先有一个默认的配置文件:/www/server/nginx/conf/nginx.conf,随着我们在界面上新增网站,每个网站还会有以网站名命名的配置文件,在/www/server/panel/vhost/nginx/网站名.conf这个路径,默认配置文件通过一个include命令将这些配置文件连接起来。

其他的诸如Apache或者IIS服务器均有相应的配置方法。

我在配置上述信息后,还是没能阻止山寨域名的访问,于是我也排除了它IP访问的可能性。

3.山寨域名通过反向代理指向源域名

这类的山寨域名一般是通过配置反向代理的方式指向源域名,这样在浏览器中输入源域名的时候,浏览器显示的内容是源网站的内容,域名却是山寨域名。

要检测这种情况,只需把自己的域名停止解析,或暂时指向一个其他地址,然后去看山寨域名的指向情况即可,如果山寨域名也跟着指向其他地址,那就可以确定是山寨域名指向本域名了。

这类情况一般还会通过cdn来伪装,很难查到域名的来源,像是这次我遇到的中国山寨域名,就是通过国外免费的cdn服务cloudflare来中转的。

针对这种情况的解决方法是通过代码来判断域名,如不是本站域名则跳转回本网站。

JavaScript代码如下:

<script type="text/javascript">
  var hostname=top.location.href;
  if(hostname.indexOf('feidaoboke.com')<0)
  {
    window.location.href='https://www.feidaoboke.com'; 
  }
</script>

为避免对方替换我们域名,可以考虑将域名拆封成字符串拼接的方式:

<script type="text/javascript">
  var hostname=top.location.href;
  var s1 = 'feidao';
  var s2 = 'boke.com';
  if(hostname.indexOf(s1+s2)<0)
  {
    window.location.href='https://www.+s1+s2;
  }

4. 禁止恶意反向代理IP访问

有些恶意反向代理的人会在他们的反向代理的时候把我们的域名替换掉,这样的情况下,第3中方法就会掉进一个死循环,虽然也能阻止恶意域名的访问,但是可能会对我们网站的资源进行请求,会影响我们服务器流量的使用。

这种情况下,考虑直接禁止反向代理的IP,获取IP的方法是在服务器的网站根目录上新建一个php文件,名称随意,比如abc.php,内容如下:

<?php 
echo ($_SERVER['REMOTE_ADDR']);
?>

随后用山寨域名shanzai/abc.php的方式访问,页面中就看到了恶意IP,在服务器的安全组件中禁止这个ip的访问即可。

我在用这个方法的时候还发现了恶意反代人的“狡猾”的地方,可能是恶意反代的人看到了网上的一些教程,对某些常见的文件名进行了处理,比如一般人喜欢用ip.php这样文件名来输出它的IP,他对这样的文件名进行了单独处理,如果发现无法输出IP,可以考虑修改文件名。

至此,问题得以解决。

留言评论

  1. json @ 2021-03-08 17:59:47 回复
    现在好好写原创的,刚写完就被爬走了,而且搜索引擎可能还不收录你的文章,收录的是镜像站,太糟心了

天上的神明和星辰,人间的艺术与真纯,
我们所敬畏和景仰的,莫过于此。

推荐文章
软件作品
微信公号
  • 足球Plus微信公众号
最新留言
友情链接
推荐文章

天上的神明和星辰,人间的艺术与真纯,
我们所敬畏和景仰的,莫过于此。

软件作品
最新留言