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

推荐订阅源

B
Blog
V
Vulnerabilities – Threatpost
Apple Machine Learning Research
Apple Machine Learning Research
V
V2EX
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
人人都是产品经理
人人都是产品经理
Latest news
Latest news
博客园 - 三生石上(FineUI控件)
美团技术团队
aimingoo的专栏
aimingoo的专栏
Google Online Security Blog
Google Online Security Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Threatpost
Y
Y Combinator Blog
T
Tailwind CSS Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
A
Arctic Wolf
C
Cyber Attacks, Cyber Crime and Cyber Security
小众软件
小众软件
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
Tenable Blog
W
WeLiveSecurity
L
LINUX DO - 热门话题
D
Docker
Cyberwarzone
Cyberwarzone
量子位
A
About on SuperTechFans
The Last Watchdog
The Last Watchdog
雷峰网
雷峰网
C
CERT Recently Published Vulnerability Notes
P
Palo Alto Networks Blog
The Hacker News
The Hacker News
Blog — PlanetScale
Blog — PlanetScale
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Full Disclosure
The Cloudflare Blog
T
The Blog of Author Tim Ferriss
T
The Exploit Database - CXSecurity.com
Engineering at Meta
Engineering at Meta
O
OpenAI News
Hacker News - Newest:
Hacker News - Newest: "LLM"
Scott Helme
Scott Helme
IT之家
IT之家
S
Secure Thoughts
MongoDB | Blog
MongoDB | Blog
L
Lohrmann on Cybersecurity
博客园 - 司徒正美
Google DeepMind News
Google DeepMind News

极客兔兔

Go sync.Cond | Go 语言高性能编程 Go 死码消除与调试(debug)模式 | Go 语言高性能编程 Go sync.Once | Go 语言高性能编程 Go 逃逸分析 | Go 语言高性能编程 2020 年终总结 | 极客兔兔 Go struct 内存对齐 | Go 语言高性能编程 Go 空结构体 struct{} 的使用 | Go 语言高性能编程 控制协程(goroutine)的并发数量 | Go 语言高性能编程 | 极客兔兔 如何退出协程 goroutine (其他场景) | Go 语言高性能编程 如何退出协程 goroutine (超时场景) | Go 语言高性能编程 Go 语言陷阱 - 数组和切片 | Go 语言高性能编程 减小 Go 代码编译后的二进制体积 | Go 语言高性能编程 Go Reflect 提高反射性能 | Go 语言高性能编程 读写锁和互斥锁的性能比较 | Go 语言高性能编程 | 极客兔兔 for 和 range 的性能比较 | Go 语言高性能编程 切片(slice)性能及陷阱 | Go 语言高性能编程 | 极客兔兔 字符串拼接性能及原理 | Go 语言高性能编程 | 极客兔兔 pprof 性能分析 | Go 语言高性能编程 benchmark 基准测试 | Go 语言高性能编程 Go 语言高性能编程 | 极客兔兔 Go 接口型函数的使用场景 | 极客兔兔 Python 简明教程 | 快速入门 | 极客兔兔 Go 语言笔试面试题(代码输出) | 极客面试 | 极客兔兔 动手写RPC框架 - GeeRPC第七天 服务发现与注册中心(registry) | 极客兔兔 动手写RPC框架 - GeeRPC第六天 负载均衡(load balance) 动手写RPC框架 - GeeRPC第五天 支持HTTP协议 | 极客兔兔 动手写RPC框架 - GeeRPC第四天 超时处理(timeout) | 极客兔兔 动手写RPC框架 - GeeRPC第三天 服务注册(service register) 动手写RPC框架 - GeeRPC第二天 支持并发与异步的客户端 | 极客兔兔 动手写RPC框架 - GeeRPC第一天 服务端与消息编码 | 极客兔兔 7天用Go从零实现RPC框架GeeRPC | 极客兔兔 Go 语言笔试面试题(并发编程) | 极客面试 | 极客兔兔 Go 语言笔试面试题(基础语法) | 极客面试 | 极客兔兔 Go 语言笔试面试题汇总 | 极客面试 | 极客兔兔 Go Context 并发编程简明教程 | 快速入门 Go Mmap 文件内存映射简明教程 | 快速入门 动手写ORM框架 - GeeORM第七天 数据库迁移(Migrate) | 极客兔兔 动手写ORM框架 - GeeORM第六天 支持事务(Transaction) | 极客兔兔 动手写ORM框架 - GeeORM第五天 实现钩子(Hooks) | 极客兔兔 动手写ORM框架 - GeeORM第四天 链式操作与更新删除 | 极客兔兔 动手写ORM框架 - GeeORM第三天 记录新增和查询 | 极客兔兔 动手写ORM框架 - GeeORM第二天 对象表结构映射 | 极客兔兔 动手写ORM框架 - GeeORM第一天 database/sql 基础 SQLite 常用命令 | 速查表(Cheat Sheet) 7天用Go从零实现ORM框架GeeORM | 极客兔兔 动手写分布式缓存 - GeeCache第七天 使用 Protobuf 通信 动手写分布式缓存 - GeeCache第六天 防止缓存击穿 | 极客兔兔 动手写分布式缓存 - GeeCache第五天 分布式节点 | 极客兔兔 动手写分布式缓存 - GeeCache第四天 一致性哈希(hash) | 极客兔兔 Go Mock (gomock)简明教程 | 快速入门 动手写分布式缓存 - GeeCache第三天 HTTP 服务端 动手写分布式缓存 - GeeCache第二天 单机并发缓存 | 极客兔兔 Go Test 单元测试简明教程 | 快速入门 7天用Go从零实现分布式缓存GeeCache | 极客兔兔 Go WebAssembly (Wasm) 简明教程 | 快速入门 Go RPC & TLS 鉴权简明教程 | 快速入门 Go Protobuf 简明教程 | 快速入门 Go语言动手写Web框架 - Gee第七天 错误恢复(Panic Recover) WSL, Git, Mircosoft Terminal 等常用工具配置 Rust 简明教程 | 快速入门 | 极客兔兔 Go语言动手写Web框架 - Gee第六天 模板(HTML Template) 百宝箱 - 值得收藏的工具网站 | 极客兔兔 Go语言动手写Web框架 - Gee第五天 中间件Middleware | 极客兔兔 Go语言动手写Web框架 - Gee第四天 分组控制Group | 极客兔兔 Go语言动手写Web框架 - Gee第三天 前缀树路由Router | 极客兔兔 博客折腾记(七) - Gitalk Plus | 极客兔兔 Go语言动手写Web框架 - Gee第二天 上下文Context | 极客兔兔 Go2 新特性简明教程 | 快速入门 | 极客兔兔 博客折腾记(六) - 不要为了流量忘记了初心 | 极客兔兔 Go语言动手写Web框架 - Gee第一天 http.Handler | 极客兔兔 7天用Go从零实现Web框架Gee教程 | 极客兔兔 Go Gin 简明教程 | 快速入门 Go 语言简明教程 | 快速入门 | 极客兔兔 机器学习笔试面试题 11-20 | 极客面试 | 极客兔兔 机器学习笔试面试题 1-10 | 极客面试 | 极客兔兔 机器学习笔试面试题汇总 | 极客面试 | 极客兔兔 TensorFlow 2 中文文档 - RNN LSTM 文本分类 TensorFlow 2 中文文档 - TFHub 迁移学习 TensorFlow 2 中文文档 - 卷积神经网络分类 CIFAR-10 TensorFlow 2 中文文档 - 保存与加载模型 TensorFlow 2 中文文档 - 过拟合与欠拟合 TensorFlow 2 中文文档 - 回归预测燃油效率 TensorFlow 2 中文文档 - 特征工程结构化数据分类 TensorFlow 2 中文文档 - IMDB 文本分类 TensorFlow 2 中文文档 - MNIST 图像分类 TensorFlow 2 / 2.0 中文文档 TensorFlow 2.0 (九) - 强化学习 70行代码实战 Policy Gradient 博客折腾记(五) - 友链这件事,没那么简单 | 极客兔兔 TensorFlow 2.0 (八) - 强化学习 DQN 玩转 gym Mountain Car TensorFlow 2.0 (七) - 强化学习 Q-Learning 玩转 OpenAI gym 博客折腾记(三) - 主题设计、彩蛋与阅读量翻倍 | 极客兔兔 TensorFlow 2.0 (六) - 监督学习玩转 OpenAI gym game 博客折腾记(二) - 对搜索引擎的理解 | 极客兔兔 博客折腾记(一) - 极致性能的尝试 | 极客兔兔 Pandas 数据处理(三) - Cheat Sheet 中文版 TensorFlow 2.0 (五) - mnist手写数字识别(CNN卷积神经网络) TensorFlow入门(四) - mnist手写数字识别(制作h5py训练集) | 极客兔兔 TensorFlow入门(三) - mnist手写数字识别(可视化训练) | 极客兔兔 Pandas 数据处理(二) - 筛选数据 | 极客兔兔 Pandas 数据处理(一) - DataFrame 与 Series
博客折腾记(四) - 原创资格是争取来的 | 极客兔兔
2019-06-30 · via 极客兔兔

博客折腾记(四) - 原创资格是争取来的

V2EX 的帖子火了

昨天在V2EX发了一贴,独立博客被各种聚合网站爬,好心累,一天之内有上百个评论,五百左右的收藏,成了6月29日V2最热的帖子,这个话题的火爆程度远远超过了我的想象。而且昨天和今天,竟然给我的博客带来了接近1万的 PV。V2EX 的能量实在是太高了,贴图纪念一下。本站的数据是公开的,页面最下面的站长统计可以点进去看每日 PV/UV/IP 等数据。

GEEKTUTU CNZZ 29-30 TRAFFIC

重拾荒废一年的站点

这个站点,我差不多运营了一年半。今年五月前写了大概30+篇文章,每一篇都是一行一行码出来的,安装了站点统计代码,每天的 PV 在50左右徘徊,搜索引擎也不收录。大部分文章都是在刚建站半年内完成的,中间荒废了一年也没管。流量也几乎没什么变化,网站之前托管在腾讯云,还挂了好几次。

六月份的时候,一个同事偶然间提到了我的网站,突然觉得惭愧。我做事总喜欢半途而废,这个站是不是也会这样呢?前几天网站挂了,我竟然五天后才发现。我告诉自己,这一次再试一次!好好地运营,如果这次失败就永远放弃吧。为了专注于内容创作,我将 Koa+React 的组合换成了静态渲染框架 hexo,背景在第一篇文章中写得比较清楚:博客折腾记(一) - 极致性能的尝试。舍不得原来辛辛苦苦设计的页面,因此6月6日和7日,花了两天时间,按照原来的样式从头撸了一个hexo主题:hexo-theme-geektutu,顺手给hexojs/site主干提了个Pull Request,Hexo themes列表里也有我的身影了。

花了一个周的时间整体迁移完成,那天偶然看到一篇文章,一个博主申请了Google Adsense30次之后,终于通过了。被拒的理由几乎都是Valuable Inventory Scraped Content, 即内容抄袭,他的博客有几百篇文章,每天的流量也挺大的,而且看得出也是原创博客。我的个人小站,写写总结从没想过这些。看评论的时候,大家都抱怨Google Adsense很难申请,技术博客都是相似的,哪有那么多原创。但是有个博主评论说,他的站点十篇文章不到,也申请通过了,关键是原创。我心想,我的站点也是呀,纯原创纯手工,因此我也提交了申请。Google 的效率是真高,晚上提交的申请,第二天一早就给我发了拒信,理由是抄袭内容过多。我看到邮件的时候,简直不敢相信自己的眼睛!!!就好比毕业论文,没有任何参考资料的前提下,写了几万字,然后查重发现,已经有人写了和你一模一样的内容。

别把原创资格拱手送人

Google Adsense的拒信让我对原创这两个字陷入了深深的沉思,这两周的努力,也几乎围绕着这两个字。

我做的第一件事,把原来的30+文章,按照标题中的关键字逐篇在 Google 上搜索了一遍,想看一看究竟和别人的有多大的相似程度。这一搜又把我吓了一跳。我的一篇关于 Git 的入门文章,已经被转载得面目全非了。在 CSDN 的转载排到了第一个,而我的翻了20页没找到。把所有文章都按照这种方式搜索完,我才知道,为什么被 Google 判定抄袭了。别人一字不落地转载了,由于权重高,更容易被收录,被认定原创,而我就被认定为抄袭了。

还有一些文章是我自己亲手把自己给卖了的。因为想吸引更多的人关注我的博客,每次一写完就分享链接到掘金Segmentfault的头条版块,本以为,分享链接能给自己引流,现在才发现,当你分享链接的时候,全文也被爬取了。Segmentfault有个所谓的阅读模式,默认折叠起来,但是查看网页源代码的时候,可以发现,阅读模式里的原文不是动态加载的,是直接渲染成html中的,这意味着搜索引擎先爬到这个链接,就会认为这篇文章是Segmentfault原创的。而我能得到的,仅仅是在Segmentfault首页展示的那两天的流量,并永远地将搜索引擎的流量拱手送人了。掘金等其他平台也是如此。

另外,根本不能指望这些大平台里放了你的链接,能给你带来点外链权重,我分析了大部分的平台,结果很失望。

  • SegmentfaultCSDN等大部分平台的原文链接,以及文章中的链接,都被加上了rel=nofollow属性,这个属性的含义是告诉搜索引擎,这个链接可以忽略掉,所以不能起到外链的效果。
  • 掘金和一些采集站的做法是服务器重定向,链接类似这样https://link点juejin点im/?target=origin_url,意味着你的链接需要通过掘金来重定向。这种做法比第一种还糟糕,这种链接是链到了平台自己,与你完全无关了。
  • 第三种做法,很多无良转载者常用,将你的链接变为文本,象征性地放在文章末尾,这样不可点击。很少有人会专门复制这个链接,访问原站的。

在所有的大平台中,我唯一发现不加nofollow属性的平台是博客园。而且博客园允许定制页首HTML代码,如果你博客园的文章搜索量还不错,在博客园里发一个新博客链接,绝对有效。

就这样,80% 的文章相当于是给别人做了嫁衣。无奈之下,只能删除。最后删了只剩下6篇,tensorflow 相关的4篇和 pandas 相关的2篇。忍痛删掉20多篇文章,一个朋友知道后,觉得很不理解,原来的就放着呗,新写的注意别干蠢事就好了。如果不删除,在 Google 永远会有一个抄袭的标签,如果这个站要做下去,长痛不如短痛。

这两周,又爆肝写了几篇,好几篇文章的更新时间都是凌晨,到今天为止,加上原来的已经有14篇了。想安安静静地将原来没写完的专题继续写完,每次写完文章,都主动去Google Search Console手工更新sitemap.xml。Google 的效率很高,一般手工更新完站点地图后,5分钟就爬完了。当然,没有站点地图也可以测试单个网址,如果显示没有编入索引,点击请求编入索引,很快 Google 就会爬取相关页面,编入索引了。第一个提交,原创资格自然容易保证了。

Geektutu Google Search Console

积极举报抄袭网页

对于无良的转载者,我一开始没怎么注意,觉得既然都第一个提交了,他们转载不影响我的搜索排名,也不浪费精力了。但是上个周发生的一件事简直毁三观

我凌晨2点更新完文章,提交到 Google 后就睡了。第二天一早无意识地搜了下相关关键字,发现一个垃圾聚合站居然排到了第一个,我的根本搜不到。然后我点进去看,发现所有指向我站点的链接全部被删除,而且他的文章在我发布10分钟后就有了。只有一个可能,这个垃圾站,将我的博客列入了爬虫名单,发现博客更新就爬取。

我用文章标题直接搜索,而且点击了 Google 搜索页面最下面的显示全部相似的结果,短短半天,就有4个聚合站采集了我的文章,均将我的链接移除了,只有一个站在文章最后面一个很不起眼的位置,加了查看原文,指向了我。而且这些站点的 Google 收录时间与我的只差了一个小时,如果权重比我高,容易认定高权重的网站为原创。我只能尽可能地联系聚合站的站长,希望他们能够删除我的文章,有1个通过微信联系,有2个通过留言,均删除了。并且告知我的文章禁止转载,口头答应,发下一篇的时候,又被无耻地采集了。还有另一个站长,网站上没有留任何的联系方式,根本找不到人。无奈之下,我发现了这个网站Google Spam Report可以举报垃圾网页。抱着试一试的心态,举报了抄袭我文章的地址。两小时后再去搜索,居然发现我的文章排到了首页,被举报的网址搜不到了。举报是真有效!后来找到了Google Spam Report的浏览器插件,举报起来更是得心应手。这个周,持续不断地与无良聚合站作斗争,每天坚持举报5个以上的地址。如果第二天搜索结果还没消失,继续举报。

blog-experience-4

博客自身的改进

当然,博客本身也在改进。

  • 每张图片加域名提示。我喜欢做一些动图,推荐用Giphy Capture录制 gif 动画,支持直接设置文本提示。这样即使被爬取,也能提醒读者原创的站点在哪。
  • 文章中的每个代码片段注释前两行,加上域名。一般爬虫是不处理代码片段的。
  • 文章最末尾,自动加上本站域名 xxx,也可以通过搜索 xxx 找到我,这位这段话在<article>标签中,一般也会被爬取。
  • 服务器站点加黑名单,我用的是对象存储服务,支持设置黑名单,使用DNS Checker查到对方域名的IP地址,然后加入黑名单。但有些大的采集站,爬虫有IP池,这种方法也无能为力了。

昨天,我在V2EX上发了关于我这段经历的帖子,热度之高超乎我的想象。很多V友也在积极地建言献策,声讨聚合站、采集站,分享反爬措施,SEO 优化等。默默收藏的童鞋更是评论人数的N倍。做技术的人,很多都有写博客的习惯,被判抄袭,没有搜索流量,被无良转载等等,很容易产生共鸣。

也有童鞋回复我,说之前看了我的文章,对他写PJ有很大帮助,特来感谢。我回复说,对你有帮助,我感到非常开心。

对于写博客的人来说,还有什么比让读者觉得有价值更重要的事情呢?

这个帖子也让我认识了好几位坚持耕耘的独立博主,还添加了建站以来的第一条友链。独立博主是个小圈子,在V2EX发的帖子,以及写的这篇文章,都是希望能够用自己的经验帮助小圈子里面的博主们少走弯路。如果一年多前,能有人告诉我不要去Segmentfault掘金分享链接,发文章后要第一时间提交给搜索引擎,以及发现垃圾网页及时举报等等,我想我的小站内容会比今天更丰富,说不定已经有了点权重。国内的原创环境很糟糕,稍不注意,创新的勇气会被慢慢消磨。

谷歌为我的小站加了导航

从重拾博客到今天,三周加一个周末,23天。博客访问量从50慢慢稳定在300左右,一个帖子,让2天有接近1万的阅读量,这些都是预料之外的。还有更意想不到的事情是,Google 竟然为我的小站添加了导航栏,受宠若惊。

Google Geektutu

昨晚,第二次提交Google Adsense申请,也通过了。

希望这篇文章能够帮助同为原创博主的你,不被恶化的原创环境磨平创新的棱角。


专题: 建站经历

本文发表于 2019-06-30,最后修改于 2026-02-23。

本站永久域名「 geektutu.com 」,也可搜索「 极客兔兔 」找到我。


上一篇 « TensorFlow 2.0 (八) - 强化学习 DQN 玩转 gym Mountain Car 下一篇 » 博客折腾记(五) - 友链这件事,没那么简单