近期大量个人博客被自动化繁体镜像搬运

浏览: 973 次浏览 作者: 去年夏天 分类: 技术文章,资讯 发布时间: 2024-09-24 11:32

最近陆陆续续很多个人博客被自动化繁体搬运 镜像 ,对方用多个域名,使用 CloudFlare Worker 作为基础设施,伪装为谷歌爬虫 UA ,实时反代并繁体翻译大量个人博客,积累域名 SEO 权重。
博客被恶意 镜像 不仅会影响站点的在搜索引擎的收录,排名,权重,更可能会被搜索引擎屏蔽!


如何发现自己博客被镜像了?

  1. 直接谷歌搜一下自己热门文章的标题,自己博客的简介,自己博客的标题,看看有没有奇怪的繁体版结果。
  2. 检查访问日志,找到所有自称是 Google bot PC的流量(UA显示为Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)),将其与 Google 公布的爬虫 IP 段进行对比。(后期不排除他仿冒其他UA访问,比如谷歌移动UA,百度UA,必应UAE等)

博客被镜像了怎么办?

网友们大致的处理措施是这样的

一、在网站页面中添加防镜像跳转代码

(function () {
    var validDomain = 'tjsky.net'; // 你的域名
    var redirectUrl = 'https://www.tjsky.net'; // 重定向链接
    var hostname = document.location.hostname;

    function createWatermark(text) {
        var watermarkDiv = document.createElement('div');
        watermarkDiv.style.pointerEvents = 'none';
        watermarkDiv.style.position = 'fixed';
        watermarkDiv.style.top = '0';
        watermarkDiv.style.left = '0';
        watermarkDiv.style.width = '100%';
        watermarkDiv.style.height = '100%';
        watermarkDiv.style.zIndex = '9999';
        watermarkDiv.style.opacity = '0.1';
        watermarkDiv.style.background = 'transparent';
        watermarkDiv.style.overflow = 'hidden';
        watermarkDiv.style.display = 'flex';
        watermarkDiv.style.justifyContent = 'center';
        watermarkDiv.style.alignItems = 'center';
        watermarkDiv.style.flexWrap = 'wrap';

        var watermarkText = document.createElement('div');
        watermarkText.innerText = text;
        watermarkText.style.color = 'black';
        watermarkText.style.fontSize = '30px';
        watermarkText.style.transform = 'rotate(-30deg)';
        watermarkText.style.whiteSpace = 'nowrap';
        watermarkText.style.margin = '20px';

        for (var i = 0; i < 100; i++) {
            watermarkDiv.appendChild(watermarkText.cloneNode(true));
        }

        document.body.appendChild(watermarkDiv);
    }

    if (hostname !== validDomain) {
        createWatermark(validDomain); // 给页面加上前边设置的域名为水印
        var userResponse = confirm("警告:您当前浏览的页面非官方页面,可能存在有害信息!建议您跳转至官方页面进行浏览!");
        if (userResponse) {
            window.location.replace(redirectUrl);
        }
    }
})();

这个代码的目的是,利用对方会无脑反代一切内容的机制,在所有页面内都插入检测 JS 代码,在网友访问时,检测当前域名是否为所设定自己博客的域名,如果不是所设定的博客域名则在网站背景中嵌入带域名水印并使用 confirm() 打断页面渲染,并弹出弹窗警示用户跳转回源站。
并且使用 JavaScript 动态插入水印 div 并不设置 id,class 等标识,防止对方通过u正则表达式匹配删除特定 div 元素。

反镜像代码触发时的效果示意

但是这里有几个问题
1. 域名和跳转链接为明文,对方可以自动化匹配
2. JS代码也为明文,对方可以检测到发生跳转自动化打断跳转执行。

解决办法很简单:使用 JavaScript 混淆,并将这段JS拼接到站点关键JS块内
让对方无法匹配到代码,而对方如果完全阻止JS,则会导致页面出现严重的渲染(比如部分样式通过JS来动态引入,而不是直接写在CSS里)问题。
至于怎么混淆这个工具就很多了,简单谷歌一下就有很多工具可用,比如这个那个

这里注意三个点
1. 记得勾选 Unicode 转义,不然后面的中文提示还是原文
2. 字符串加密方式可以选RC4这个相对base64不太常见的编码方式,加密密度选1(既所有都加密混淆)
3. 混淆会拖累执行性能,在保证加密混淆的前提下,尽可能混淆程度低一点。

二、阻止非验证的谷歌爬虫访问

有些安全插件,防火墙具有验证谷歌爬虫的选项,会对声明为谷歌爬虫的访问做 DNS 反查,确定爬虫访问 DNS 掩码符合谷歌公布的掩码,并且归属为谷歌公布的爬虫 IP 段才会允许爬取。

三、向域名注册商报告滥用

镜像他人网站是明显的恶意滥用行为,可以向对方的域名注册商投诉。

四、向CloudFlare报告滥用

对方时用的域名托管商和代码执行基础设置都是CloudFlare:举报页面

五、向域名的注册局报告滥用

一些被滥用比较多的域名比如.top是有滥用举报的,举报页面

六、向谷歌申请移除镜像站的搜索结果

因为它会原样照搬反代网页,那其实你可以通过HTML 标记验证方式在 Google Search Console 里把他的反代域名也认证到你自己名下,然后在Google Search Console 向谷歌申请移除搜索结果

七、在后端反制一下?

评论区给了我一个很好的提醒,既然他是通过特定IP和非谷歌归属IP的特定UA来抓取反代的,
其实你可以通过 nginx.conf 实现一些好玩的效果,比如只要 UA 显示为谷歌 PC bot,但 IP 段不在谷歌公布的 IP 段内,或者某指定 IP 访问时,就301跳走,返回特定页面,反代其他网站页面,在原始网页中加mu料ma。

以下仅为抛砖引玉,各位大佬可以开发更有意思的方式。

  1. 当抓取服务器154.39.149.128 (这是目前他的抓取服务器 IP )访问时,自动跳转到百度首页(百度首页只是个例子,你可改成其他奇 wei 怪 gui 的网站。实现让他的域名被降权或出现违规而被禁止)
server
{
    listen 80 XXXXXXXXXXX;
    listen 443 XXXXXXXXXX;
    server_name XXXXXXXXXXX;
    index XXXXXXXXXXX;
    root XXXXXXX;
#一般将下方代码按自己需求修改后,插入在你网站上边这一坨配置的后面就行

   #指定IP访问自动反代百度网页
    if ($remote_addr = 154.39.149.128) {
            proxy_pass http://www.baidu.com;
        }
   #指定IP访问自动反代百度网页结束

#你网站的其他配置
}
  1. 当UA显示为谷歌PC爬虫,但访问IP不在谷歌公布的IP段时,反代其他网页给他。
  • 首先在谷歌获取json格式的IP段列表:爬虫 IP 段
  • 然后将其转化为类似这样的格式(可以让 AI 帮你搞)
    34.165.18.176/28 1;
    192.178.5.0/27 1;
    34.126.178.96/28 1;
    
  • 放在nginx可以访问的地方,比如/usr/local/nginx/conf/firewall.conf

  • 修改nginx.conf

# 加载 IP 白名单文件
geo blocked_ip {
    default 0;
    include /usr/local/nginx/conf/firewall.conf;
}

# 检查特定 User-Agent 的访问
maphttp_user_agent is_special_ua {
    default 0;                    # 0,表示不匹配
    "~*Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 1;      # 指定爬虫UA
}

#将上方代码按自己需求修改后,插入在你网站下边这一坨配置的前面就行

server
{
    listen 80 XXXXXXXXXXX;
    listen 443 XXXXXXXXXX;
    server_name XXXXXXXXXXX;
    index XXXXXXXXXXX;
    root XXXXXXX;

#将下方代码按自己需求修改后,插入在你网站上边这一坨配置的后面就行

   #符合UA但不符合IP段时自动反代指定网页
        if (is_special_ua = 1) {
            if ($blocked_ip = 0) {
                proxy_pass http://www.baidu.com;
            }
        }
   #符合UA但不符合IP段时自动反代指定网页结束

#你网站的其他配置
}

吐槽

为啥我的这个主站没有被搬运,我另一个访问量很低的(日均PV只有几十),内容也比较无聊的在国内的站反而被他搬走了。

  1. 可能原因一:貌似对方不会镜像使用境外服务器的非备案站点。

  2. 可能原因二:他的访问因为没通过谷歌爬虫检查,被拦住了。

他的访问直接就被拦住了

  1. 对方只搬运流量相对小一点的站,以免被发现。

事态更新

  • 2024-07-18:第一次知道有人网站被镜像
  • 2024-08-20:服务器后端被拦截中出现镜像者所使用的IP:154.39.149.128,php 探针都没删。
  • 2024-08-28:镜像服务器迁移到:103.233.9.190,这次学精了,隐藏 PHP 控制台,设置了 IP 区域限制,只有非中国大陆IP访问才会正常显示内容。
  • 2024-09-05:他的服务器一度被人打到宕机
  • 2024-09-24:看到被镜像的人越来越多固有此文
  • 2024-10-09:增加两种基于 nginx 的反制措施思路

参考资料
网站被恶意镜像了该怎么办
我的个人博客网站再次被恶意镜像,这次手段高明了许多
网站被恶意镜像——如何保护博客流量及预防
保护您的博客不被恶意镜像
我的博客也有一天会被反代?
我的博客被完整地反向代理,并自动翻译成了繁体中文

35 条评论
  • leeorz

    2024-10-28 01:27

    好像是那种做黑帽SEO的,先养站群,然后给自己的站做反链,提高自己站的权重。

    这种方式有蛮多其实都是国内的人在玩.

    因为简中流量在广告网络不值钱,同时有可能因为肉身在国内,怕站内的某些内容惹麻烦,所以他们专门屏蔽简中的流量,专做繁中的流量,他们甚至屏蔽了国人常见的翻墙落地ip,比如香港阿里云。

    典型的两个内容农场看起来像这种手法,一个是 kknews点cc,另外一个是read01点com

    这俩站典型的垃圾站,之前还看到有人专门向google举报,但这俩站就是一直不倒,流量来源大部分也是google

    1. 去年夏天

      2024-10-28 09:23

      google基本是放弃对简中的黑SEO防御的(不过其实繁体也做的不怎么样)

  • 石樱灯笼

    2024-10-09 17:26

    随便搜了一下,在谷歌搜到一个镜像结果,直接点进去是404,但是如果用国外IP访问的话,是一个繁体版本的我的博客。
    盯了一下access.log,同样是103.233.9.190,看来是同一个人。
    检查了一下域名,是2023年被谷歌收录的域名,用wayback看了下,只有去年11月至今年4月份的记录,域名看起来像个垃圾站。
    我现在在考虑用一点好玩的办法搞他。

    1. 去年夏天

      2024-10-09 18:10

      比如,来点只有他能抓取到的违规内容让他域名降权,或者既然是繁体版就来点针对性的有害内容等待台湾警方抓他。能折腾他的方式还是挺多的

      1. 石樱灯笼

        2024-10-09 19:11

        我搜了一下,这个人是惯犯了,常年镜像他人网站,103.233.9.190只是今年启用的一个IP而已。这人手底下的域名数量很庞大,可以推断出Cloudflare举报和DMCA举报都没啥用。
        主要还是谷歌现在是废物了。2008年那阵,垃圾站和镜像站也是门赚钱的大生意,但是谷歌改进算法之后,垃圾站和镜像站基本全灭了,安心了十多年,现在谷歌竟然识别不出来是镜像站,不仅收录了,有些还比源站排名还高。谷歌是完犊子了。

        1. 去年夏天

          2024-10-09 20:04

          谷歌看起来已经基本放弃简体中文搜索了…他用了一些同义词和本地化替换洗稿,所以有可能他替换词反而导致排名更高。

        2. 去年夏天

          2024-10-09 22:28

          可以通过 HTML 标记验证方式在 Google Search Console 里把他的反代域名也认证到自己名下,然后就好办了。

          1. 石樱灯笼

            2024-10-09 22:30

            不行,那样容易被反杀。

          2. 石樱灯笼

            2024-10-10 10:15

            仔细想了一下也不是不可以,用麻烦一点的小办法就没有风险了。我用的文件验证,除了这个Google Search Console 认证文件之外,其他的请求我都直接在cloudflare那一层把请求重定向到有趣的网站上去了。
            Google Search Console 认证之后要等一天才能看结果,也是蛮慢的。也没啥用,Google 的抓取结果,至少首页已经变成重定向之后的网站了。

          3. 去年夏天

            2024-10-10 10:17

            谷歌的抓取频率比较不好说。感觉这样可以申请更新索引,能快一点变化?

          4. 石樱灯笼

            2024-10-10 10:30

            放着不管就好了。我现在写的文章,谷歌都不太愿意收录。就算收录了也没啥效果,文章内容经济价值一般,没有什么引流的关键字,搜不到。
            现在浏览量基本全是靠RSS订阅或者评论回访来的(我猜的,我没有做浏览统计),而且这几年老读者也全都去沉迷短视频了,80%的老读者(包括他们的博客)都消失了,算是中文互联网末期了,爱咋咋地吧。

          5. 去年夏天

            2024-10-10 23:28

            我这博客百度完全不收录(严格说是抓了,但是搜索结果里不展示),必应和谷歌的自然搜索占了一半以上来源,RSS订阅+评论回访+被引用来的也就占了十分之一吧。

          6. 石樱灯笼

            2024-10-11 15:07

            都一样。百度扫了,也抓了,但是老文章按关键字搜索的话,是不显示的,必须全标题才能搜索,这就没意义了。最近几年的新文章则是完全不收录。偶尔还会出现百度把整站都删了的情况(用site:搜不到)。
            必应的不知道。
            谷歌来源的话看Search Console的「效果」可以说惨不忍睹。
            很早之前我就把统计功能删了。最早期用CNZZ后来发现数据非常的不准确(因为百度和谷歌都改了跳转方式),然后CNZZ还不停的要手机号。删了之后也再没找过其他统计功能,看着烦。所以统计数据什么来源什么都是凭感觉,基本都是靠评论量估计出来的。新人评论基本没有,老人也很少有主动评论的(所以RSS订阅不好),多数评论都是评论回访(你不理他他不理你这种)。
            爱咋咋地吧。

          7. 去年夏天

            2024-10-11 15:12

            我就是百度用site:tjsky.net都搜不到任何文章的那个 :laughing:

          8. 石樱灯笼

            2024-10-23 18:35

            你试试我我的域名(不带www,或者搜blog的二级域名)在谷歌上用site搜。我人都傻了。

          9. 去年夏天

            2024-10-23 18:50

            我也傻了……这啥子个情况……

  • Teacher Du

    2024-10-04 22:09

    我也写了一篇解决教程,不过没有你的这个详细!

    1. 去年夏天

      2024-10-06 19:40

      看到啦,写的简略但是措施很全呀

  • klcdm

    2024-10-02 16:42

    忘记了,收藏一下,虽然不太懂实现的方法不过有空可以去打一针预防针

  • 网友小宋

    2024-09-26 11:15

    或许上因为你那个站点内容比较真实,更新稳定。

    1. 去年夏天

      2024-10-09 21:46

      我怀疑只是单纯因为站点的IP在国内

    2. 去年夏天

      2024-10-09 21:59

      经过一番研究,可以确定是因为:他的伪装为谷歌爬虫的访问没通过安全插件的谷歌爬虫检查,被拦住了。

  • Limour

    2024-09-26 09:19

    通过 shynet 追踪 Referrer,发现我也是受害者😂

  • Liudon

    2024-09-25 12:03

    我的也被镜像了 😅

  • 竹林里有冰

    2024-09-25 01:10

    受害者前来报到

    1. 去年夏天

      2024-09-25 08:44

      你应该是我最早看到涉及这个事件的人了,开始我还以为是少数个例,结果最近被镜像翻译洗稿的越来越多

  • ACEVS

    2024-09-24 17:59

    网友小宋就中招了。

  • 白熊阿丸

    2024-09-24 17:02

    简直了,博客都有人惦记,防不胜防

    1. 去年夏天

      2024-09-24 17:18

      而且看起来特意选比较小的博客做搬运

  • 诺多

    2024-09-24 14:24

    我的站也是,前段时间被直接镜像,不知道它到底这么干是为啥。

    1. 去年夏天

      2024-09-24 14:35

      应该是为了快速积累域名SEO权重。已经有大佬扒出来,核心代码应该是个搞内容农场的人开发的。

  • 老张博客

    2024-09-24 14:03

    自己小破站,目前安全。

    1. 去年夏天

      2024-09-24 14:18

      所以我怀疑他就设计的不镜像国外的站点。

  • 涛叔

    2024-09-24 12:19

    要我说没有必要管,也管不过来。

    多输出内容,形成自己的风格,表达自己的观点,让人看到内容就联想到原作者。
    如果能达到这样的效果,被「转载」也不一定是坏事。

    技术手段封禁只能算猫鼠游戏,不完没了~

    1. 去年夏天

      2024-09-24 14:17

      1. 首先,这种镜像反代翻译,与被「转载」到CSDN,知乎,微信公众号等平台有比较大的差别,被搬运到上述平台,对方在里面加任何私货,都不会传递到被搬运的站点,而这种镜像站有违规内容有可能会被搜索引擎连坐原站
      2. 其次,大部分博客都是遵循的《知识共享署名-非商业性使用-相同方式共享协议》既然违反协议那自然要关,不然要协议干啥?大家都随便「转载」就好了。
      3. 最后,这种技术手段就类似给自行车和家门加锁,不能说因为任何锁都无法地坑技术开锁和液压钳,就直接弃疗,完全不装锁了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据