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

推荐订阅源

WordPress大学
WordPress大学
Cyberwarzone
Cyberwarzone
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
小众软件
小众软件
Recent Announcements
Recent Announcements
博客园 - 三生石上(FineUI控件)
Security Archives - TechRepublic
Security Archives - TechRepublic
W
WeLiveSecurity
Cloudbric
Cloudbric
博客园 - 司徒正美
美团技术团队
N
News and Events Feed by Topic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
PCI Perspectives
PCI Perspectives
宝玉的分享
宝玉的分享
H
Help Net Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
Help Net Security
Help Net Security
Last Week in AI
Last Week in AI
S
Schneier on Security
N
News | PayPal Newsroom
B
Blog RSS Feed
L
LINUX DO - 最新话题
T
Troy Hunt's Blog
S
Secure Thoughts
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
L
Lohrmann on Cybersecurity
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Tenable Blog
S
Securelist
L
LangChain Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
I
InfoQ
H
Heimdal Security Blog
Cisco Talos Blog
Cisco Talos Blog
F
Full Disclosure
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
K
Kaspersky official blog
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
阮一峰的网络日志
阮一峰的网络日志
C
Cisco Blogs

Sehnsucht

记一次博客换图床的过程 观《花束般的恋爱》 读《活过》 东京 旅行篇 亲人逝去 我为什么想养鱼 「monthly 」博客重构 游戏全成就 好看的小说 人生的每一步都不会是浪费-2024年终 「weekly」星期五综合征 「weekly」听播客 杂谈 读《美丽新世界》 「weekly」社交媒体 恶性事件 新世界 「weekly」认知觉醒 美丽新世界 follow 「weekly」独立博客9问题 双十一买书 读《惊呆了!原来这就是社会学》 一次聊天与自我建设 2024-09月记 补番《relife》 树状数组简单理解 lvm简单使用 博客自动发布方案 某公众号废案 fail2ban基本使用 Podman 环境使用 Nginx Proxy Manager 最佳实践 2024-07同学聚会 vps使用podman部署freshrss Gitlab CICD 实践,思考与记录 装备升级:新的PC gitlab局域网搭建流程 FastMail迁移至GMail+Cloudflare Email Routing 读《黑客与画家》 leetcode 第 391 场周赛 Astro添加过渡后DarkModeToggle按钮失效 nuxt3使用echarts5渲染中国地图 人生刻度 又到凤凰花朵开放的时候 2023-05-10 实习结束 2023-04-26 广州博物馆游记 YOASOBI「たぶん」官方音乐视频 风灵玉秀-发如雪 带我的老哥离职了 从p10k转向Starship lunarvim国内安装踩坑记录 什么是对称加密非对称加密、密钥交换、数字签名、证书 强调体验的一种思考时间的方式 ArchLinux使用vscode编写latex报错The font "FontAwesome" cannot be found ArchLinux安装(移动硬盘)流程 yay一个或多个文件没有通过有效性检查! 2022年终 hugo建站伊始 clash设置relay前置代理(校园网破解改进记录) 群青 · YOASOBI · Ayase 华为 matepad pro 11使用体验 Nginx使用acme.sh免费安装ssl证书 永远属于你的安娜 在线 童年趣事 童心,是比野心更难得的梦想 2021年终总结 基于jeeSite的软件测试课程作业 流程记录 Linux不同用户安装不同版本jdk Wifi4更换Wifi6路由器的使用体验 Flask 上传图片并灰度显示 玩客云刷机debain个人记录 jython 简单入门 Jenkins 个人搭建流程记录 集成邮件系统(qq邮箱),gitlab服务器,freestyle风格 在Web项目中配置Log4j --指南-- Codeforces Round 753 (Div. 3) ABCDE 浅谈fork函数 JavaWeb servlet 使用Cookie记录用户访问次数 Codeforces Round Educational Codeforces Round 114 (Rated for Div. 2) ABC 2021牛客多校7 I xay loves or 2021牛客多校9 H Happy Number 2021牛客多校8 D OR 2021牛客多校5 B Boxes 2021牛客多校5 H Holding Two 2021牛客多校2 D Er Ba Game 2021牛客多校1 F Find 3-friendly Integers 2021牛客多校1 B Ball Dropping 记人生第一次投简历和笔试 原型模式 2021-2-20 雨时随记 关于一维差分数组的例子 halo个人建站 关于手机ping电脑和电脑ping手机 泛型类简单理解 CodeForces - 849C From Y to Y 2020牛客国庆集训派对day3 Leftbest 约瑟夫环问题---2020牛客国庆集训派对day2 AKU NEGARAKU mysql 5.7 忘记密码如何更改 CF 1099B Squares and Segments CF 998A Balloons CF 998B Cutting 链表应用之多项式相加 CF 1150A Stock Arbitraging CF 1199A City Day CF 1199B Water Lily CF 982A Row CF 934A A Compatible Pair CF 629B Far Relative’s Problem 651A Joysticks 651B Beautiful Paintings
防止AI爬取你的博客
2025-02-26 · via Sehnsucht

无意中发现一个项目 ai.robots.txt ,它列出了大部分的与 AI 公司和 LLM 培训相关的网络爬虫的开放列表,于是我想着可以集成到博客中,每次构建拉取项目最新的 robots.txt 就行

大概没人会愿意自己的博客被AI训练吧,有人会愿意吗?

稍微思考了一下,有不少的方式可以实现,例如:

  • Github Action 每次提交时自动拉取最新的 robots.txt,或者定时拉取
  • 构建过程中拉取,如果是使用了 Github Page,那么在构建的过程中拉取最新的 robots.txt(同理,我用的是 zeabur 平台部署,那么在 zbpack.json 中修改构建命令就行)
  • package.json 的构建命令中加上拉取文件的指令

Github Action 的话,可能出现大量冗余的commit记录,并且浪费不必要的资源。如果使用 zeabur 的脚本,那这样锁死了平台,迁移不方便。如果在 package.json 中修改,那就方便很多了,也符合单一职责原则,下面是基本示例

// ... existing code ...
"scripts": {
    "dev": "astro dev",
    "prebuild": "DOWNLOAD_URL=$(curl -s https://api.github.com/repos/ai-robots-txt/ai.robots.txt/releases/latest | jq -r '.assets[0].browser_download_url') && wget -O public/robots.txt \"$DOWNLOAD_URL\"",
    "build": "astro build",
    "preview": "astro preview",
  },
// ... existing code ...

prebuild 会自动在 build 之前自动构建。当然,我们可以给加上windows的适配,或者当无法拉取的时候依旧可以继续执行,或者让其更加符合单一职责原则…

// ... existing code ...
"scripts": {
    "dev": "astro dev",
    "pre:fetch:robots": "DOWNLOAD_URL=$(curl -s https://api.github.com/repos/ai-robots-txt/ai.robots.txt/releases/latest | grep 'browser_download_url' | head -n 1 | cut -d '\"' -f 4) && wget -O public/robots.txt \"$DOWNLOAD_URL\"",
    "pre:install:d2": "curl -fsSL https://d2lang.com/install.sh | sh -s --",
    "prebuild": "(npm run pre:fetch:robots; npm run pre:install:d2) || exit 0",
    "build": "astro build",
    "preview": "astro preview",
  },
// ... existing code ...

这里以我实际的博客项目为例,构建之前因为需要拉取 robots.txt 并且下载 d2,所以 prebuild 中执行这两条命令

删除了 jq 排除了不存在该命令的情况,windows下无法使用 true 所以修改成了 exit 0,其他的虽然还有点不够优雅,不过问题不大