写了两个实用的知乎油猴脚本(用 AI 两分钟搞定!)

经常逛知乎,遇到好的回答/文章也会保存下来,但发现知乎有两个功能不是很喜欢,用油猴脚本解决了。

接下来介绍下这两个问题,以及原理,开发过程,开源地址等。

背景

作为一只数据仓鼠,我经常会保存互联网上的内容,其中就包括知乎上的回答。

但很多时候,这些回答会神秘地消失,只留下空荡荡的收藏夹......

内容被删除了,但还是计数了(7 个),应该算 Bug?

所以,我会尽快将回答保存到自己的笔记软件。

但保存时,就经常遇到两个问题:一个是图片水印,一个是自动关键字链接。

由于没搜到类似的脚本,因此自己动手写了两个脚本,解决上述问题。

获取无水印原图

现象

在知乎,默认情况下,用户上传的图片都是自动在右下角添加水印的(可以在设置—偏好设置里取消):

原理

如果你查看网页源代码(F12),定位到图片,你会发现代码长这样,有很多的属性:

src 属性的值是图片链接(带用户水印的)。而 data-original-token​ 属性的值,和 src 里的图片文件名很相似,尝试用其替换掉 src 属性里的文件名,得到了无水印的原图:

zhihu-picture-without-watermark

PS:这个特性不是我发现的,而是看博主「致以无暇之人」的文章发现的:知乎图片去水印下载的方法,在此表示感谢。

老实说,我虽然也是程序员,但我都没怎么看过网页的源代码,更别说定位到图片、发现其关联之处了,汗 😓

解决思路

所以,开发思路就是,遍历网页上的所有图片,用 data-original-token​ 属性的值替换掉 src 属性值的文件名。

注意事项

当然,如果用户上传的图片本身就带有水印,那么获取到的原图自然也是带水印的,但也不是没其他办法:

2025-4-13 更新

目前发现一个问题,即使替换为无水印版本的图片后,当用户选中网页内容并复制时,仍然会复制带水印的图片,而非替换后的图片:

当然,如果直接在图片上右键 → 复制图片,得到的就是无水印的图片:

那为什么会这样呢?问了下 DeepSeek,回答是因为知乎用了图片懒加载技术,图片代码中有 data-original​ 属性,里面的值存放图片地址。而 src 里的值只是占位符。当图片滚动到可视区域时,JavaScript 才会将 data-original 的值赋给 src 属性。

而用浏览器或剪贴板工具在复制内容时,可能会直接抓取 data-original(因为它被视为“真实地址”),而忽略当前 src 的值。

所以我的解决思路也简单粗暴:直接去除 data-original​ 的值。目前测试了下,确实没问题。

相关测试页面:我们为什么要禁止刑讯逼供? - 济东杂谈的回答 - 知乎

移除自动关键字链接

很多平台,都会自动将用户内容中的关键字,替换为超链接。

例如知乎:

B 站:

点击这些超链接,就会在平台内搜索该关键字,某种程度上算方便了用户,但也影响了美观以及保存。

开发思路:用正则匹配超链接,然后替换为纯文本。

由于我不怎么保存其他平台的内容,所以该脚本仅针对知乎。

开发过程

首先,看了几个教程:

然后看了开头几个文章,了解大概的编写过程,试着写了个 Hello World

然后直接问 DeepSeek,几分钟就写完了... (好像不用看教程也行?🙃)

只恨自己没早点写,老是手动去获取无水印原图(或者裁剪掉)、移除自动关键字链接,怪麻烦的 🤣。

开源和安装地址

代码都很简单,就不贴在文中了。

开源地址:https://github.com/Peter-JXL/UserScript

GreasyFork 地址:

测试案例:

目前已在 Chrome、Edge、FireFox 上通过测试。

最后

自从我写《最全面的浏览器教程》以来,有不少人咨询过我,能否帮忙代写扩展/脚本之类的。

其实在 AI 时代,写脚本的门槛并不高,稍微看看教程,了解下开发过程,然后让 AI 给出代码即可。倒是写文档、发布脚本花了不少时间...

此外,即使你没有保存知乎回答的需求,这两个脚本也能美化下页面,水印和那些无用的超链接,很多时候没啥用。

最后欢迎试用脚本~ 有帮到你的话欢迎点赞

‍‍原文:写了两个实用的知乎油猴脚本(用 AI 两分钟搞定!)

posted @ 2025-04-23 10:36  peterjxl  阅读(620)  评论(0)    收藏  举报