惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

AI
AI
WordPress大学
WordPress大学
博客园 - 聂微东
Hugging Face - Blog
Hugging Face - Blog
小众软件
小众软件
V
V2EX
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google DeepMind News
Google DeepMind News
V
Visual Studio Blog
The GitHub Blog
The GitHub Blog
IT之家
IT之家
D
Docker
M
MIT News - Artificial intelligence
D
DataBreaches.Net
博客园 - 三生石上(FineUI控件)
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
博客园_首页
Y
Y Combinator Blog
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
月光博客
月光博客
C
CXSECURITY Database RSS Feed - CXSecurity.com
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Spread Privacy
Spread Privacy
Know Your Adversary
Know Your Adversary
A
Arctic Wolf
Vercel News
Vercel News
T
Threat Research - Cisco Blogs
T
Threatpost
Apple Machine Learning Research
Apple Machine Learning Research
L
LINUX DO - 热门话题
T
The Exploit Database - CXSecurity.com
N
Netflix TechBlog - Medium
GbyAI
GbyAI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tailwind CSS Blog
J
Java Code Geeks
爱范儿
爱范儿
Cisco Talos Blog
Cisco Talos Blog
博客园 - 叶小钗
Latest news
Latest news
C
Check Point Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky
P
Privacy International News Feed
MyScale Blog
MyScale Blog
Project Zero
Project Zero
Simon Willison's Weblog
Simon Willison's Weblog

流动

对口型视频合成方案对比:Wav2Lip、VideoReTalking 与 MuseTalk 2026 音色克隆方案对比:IndexTTS-2、CosyVoice、GPT-SoVITS、Fish Speech、VoxCPM 部署与实测 AI Agent折腾记(OpenClaw / Hermes Agent) 我的2025年 大连之行 回家收麦 六一儿童节爬长城 Golang database/sql 数据库断线自动重连机制解析 Golang默认Http Client导致的cannot assign requested address错误 清明踏春,爬山看海 购入小牛G400T电动车 北京的三月飞雪 wrenAI本地LLM模型部署 天津一日游 2024年终总结 停止使用staticfile.org服务 使用 ImageMagick 自动添加水印,保护图片版权 如何注册一个.sol域名 奥森公园半日游 昌平42公里骑行绿道打卡 十月一日爬慕田峪长城 当Hugo遇上AVIF,优化图片加载 Github Pages 部署流程解析 搭建个人锻炼页面 你好 Follow 中秋爬山 Google Adsense的审核之旅 让你的IPFS站点持久在线:接入Filebase的Names(IPNS)服务 一次简短的青岛之行 解决 "undeclared name: any (requires version go1.18 or later)" 编译错误 搭建自托管IPFS Gateway服务,替代Cloudflare的IPFS Gateway 302跳转的跨域问题(CORS) GORM增加sqlcommenter特性 源码分析:GORM是如何生成sql的 工银亚洲网银密码重置 加速Cloudflare访问 2023年终总结 2023年12月北京暴雪记录 使用Hugo实现响应式和优化的图片 加速Google Analytics 使用Google Indexing API加速博客收录 在Netlify上部署Twikoo评论系统 利用Github Actions定时抓取微博 北大口腔牙周刮治记录 故乡回忆之旅 解决Golang使用go get安装包后找不到可执行文件的问题 修正Hugo的JSON Feed格式 我的学车之路 将博客部署到星际文件系统(IPFS) 新冠疫情后的第一个春节 第一次清理键盘 2022年终总结 去掉Cloudflare烦人的email-decode.min.js请求 累计布局偏移修复方案改进 —— 自动生成图片宽高 优化博客的累计布局偏移(CLS)问题 将博客部署到Cloudflare Pages 奥林匹克公园向日葵之旅 记第二次洗牙 记录2022年海淀幼升小 Golang解析json的一个问题 疫情下的生活 整理下博客的一些调整 疫情下的五一假期 自己动手,更换thinkpad x1硬盘 二刷百望山 带娃游颐和园 博客架构说明 难得的清明假期 十一年的等待,终于拿到了liudon.com域名 被隔离的一周 mysql中字符串和整型自动转换的问题 一次惊心动魄的Mysql更新操作 如何在北京公积金网站上修改婚姻状况 PHP7.2编译安装后没有php.ini文件的问题 检测网站支持的SSL/TLS协议版本 记一次难忘的手术经历 十一假期经历 Swoft 框架运行分析(五) —— ConsoleProcessor模块分析 Swoft 框架运行分析(四) —— EventProcessor模块分析 一个git submodule update引发的问题 一个Curl的耗时长的问题 Swoft 框架运行分析(三) —— BeanProcessor模块分析 Swoft 框架运行分析(二) —— AnnotationProcessor模块分析 Swoft 框架运行分析(一) BCMath 与 科学计数 Flink Could Not Resolve Resourcemanager Address 解决Sublime Text安装包时"There Are No Packages Available for Installation"的报错 关于本站 2019,新开始
博客被恶意镜像
Liudon · 2024-09-26 · via 流动

起因

9月初的时候,在Google Search Console里发现了一个外链,域名是**.top

随手点过去看了下,发现居然跟我的博客内容一模一样,就是内容变成了繁体。

知道这肯定是被拿来镜像了,不过当时也没在意,就没管。

后来在v2ex上也发现类似的问题,还有其他博主也反馈有被镜像,感觉像是个黑产批量的操作。

这周Google Search Console反馈我的站点有个新问题,点进去一看,嚯。

搜索问题

在谷歌里搜了一下,发现已经有很多这个站点的收录了。

开始影响到我的博客收录了,这怎么能忍呢,必须处理掉它。

分析

测试了一下这个站点,不得不说,这个人是相当的聪明。

国内访问404

海外访问200

使用了Cloudflare服务,隐藏了真实的服务ip。

同时判断了访问ip,如果是国内用户直接返回了404,海外才会正常返回,这样一般国内用户就发现不了。

还重写了robots.txt,只让谷歌收录。

查了一下域名Whois信息,注册在阿里云。

whois

页面上挂的备案号都是我的,搞事情的话后面再扯上我,这就麻烦了。

这就像块牛皮癣,越想越恶心。

我的博客搞了两套部署,一套部署在Cloudflare Pages,一套部署在IPFS

接下来就是搞清楚,他是镜像的哪个站点:

1. IPFS站点

看他的robots.txt内容,我一开始怀疑是镜像的IPFS站点liudon.xyz,感觉像是在我的robots.txt前面加了一段内容。

curl 'https://liudon.xyz/robots.txt'
User-agent: *
Disallow: /

幸好还有一个Robots meta 标记,于是把IPFS部署的站点加上了这个属性。

部署后发现这个镜像站并没有更新,排除了这个可能。

2. Github 静态仓库

我在Github上单独搞了个分支存放生成的静态文件,Cloudflare Pages直接读取这个分支进行部署。

怀疑他是不是监控了这个仓库的提交记录,直接拿这个来部署的镜像站。

我把Cloudflare Pages的自动部署关掉,然后直接修改静态文件。

更新后发现,这个静态站并没有预期的更新。

3. Cloudflare Worker

在分析过程中,发现我的博客更新后,他的站点也会很快就更新。

因为他的网站部署在Cloudflare上,考虑是走的Cloudflare Worker反代,直接请求目标站点,然后进行繁体翻译返回。

这样就完全不需要关心更新的问题,完全自动化处理,太完美了。

反制

其实这里并没有太好的办法反制,robots文件被他重写了,无法控制,使用Robots meta 标记的话会影响到我们自己的收录。

只能是通过加一段JS代码,参考自竹林里有冰,判断访问的域名非法的话,直接跳转到正确地址。

const host = window.location.host
if (host !== 'liudon.com' && ! host.startsWith('localhost') && ! host.startsWith('127.0.0.1')) {
    document.body.innerHTML = [
        '<div style="margin: auto;">',
        '<h1>当前页面并非本文作者的主页,将在五秒后跳转。</h1>',
        '</div>',
    ].join('')
    document.body.style = [
        'background-color: white;',
        'color: black;',
        'text-align: center;',
        'font-size: 50px;',
        'width: 100vw;',
        'height: 100vh;',
        'display: flex;',
    ].join('')
    setTimeout(() => {
        window.location.href = 'https://liudon.com'
    }, 5000)
}

查了一下,搜索Bot爬取的时候会执行js,希望能更新掉已收录的网页信息。