【老鼠讲故事系列 0006】老鼠被锤全记录

前言

这是一个新的系列,小老鼠尝试把各种乱七八糟的技术问题当成故事去讲,不知道会不会有同学爱听。 最后会埋下一个扣子,做个收费,价格一块钱(这次例外),愿者上钩。

本篇末尾有 14% 的内容被隐藏,需付费阅读。

请在阅读前确认你了解并理解了上述内容,以上,防杠

发生了什么

事情很简单。我写了一个脚本 自动展开全文 ,还挺受人欢迎。然后我想进行进一步的优化,这就需要一些数据的支持。比如我很想知道下面两个数据:

  • 大家使用的都是什么脚本管理器。因为不同的脚本管理器提供的支持不同,需要做相应的优化;
  • 大家对于脚本的更新频率是怎样的。如果更新的很频繁,那我每做出一点新功能就立刻发出来。如果更新的不频繁,那我就把功能积攒到一起,尽可能每次发布的都是稳定版本。

所以我为脚本加入了一个统计代码,就是最普通的,几乎每一个网站上都有的第三方统计代码,当然我做了一点点改造,就是带上了上面我需要的两个数据。这里我们先确定两个问题:

  • 几乎所有网站、软件、扩展等,都会带有类似的统计代码,并且很少有向用户说明的,大家也习以为常。
  • 我们发送的每一个网络请求中都必然会包含类似 IP 地址,浏览器 UA 等信息,简单分析,既可获得所在的地域,使用的网络运营商,浏览器版本,操作系统等信息。可以说这些用户信息对于每一个网站都是公开的。

我为了加入这个统计代码,又做了哪些内容呢:

  • 在脚本说明中明确写出,我会加入统计。后来又特地写了一条评论,详细的解释了这件事情,并且将链接也放在了脚本的说明之中。
  • 我为统计代码做了延迟加载,要等页面加载完成三秒之后才尝试加入统计代码。这可能造成统计数据的不准确,但有尽我的能力,去尽量保证了不对用户产生影响。
  • 我一直在对统计代码部分进行优化,因为不需要用户浏览的页面信息。所以后来将统计代码改为了每天只插入一次。
  • 我遵循了用户的 DNT(禁止追踪)的建议,如果设定为禁止追踪,则不会插入统计代码。

我觉得我的做法已经可以算是业界良心了,像延迟加载这类优化基本上可以说是毫无必要的,但我还是去做了。当然这其中有两个小瑕疵:

  • 为什么我没有在脚本最初就加入统计代码。因为我根本没有想到会有这么多用户,而用户少的时候也没有对用户进行相应分析的需求。
  • 加入统计代码之后,为什么没有通过弹窗去明确的通知用户。因为做这个功能需要能够在全局保存一个标记,来记录这个用户已经进行过弹窗通知了,这样才能够控制弹窗的次数。但有一些脚本管理器并不支持这样的全局数据,结果这些用户就会在每次遇到匹配页面时都收到弹窗,那脚本基本就不可以使用了。我很想知道这种情况在用户中的占比,这也是我做统计的原因之一。

好了,情况都介绍完了。然后我就被一些人给中评差评,各种贴标签:

  • 无良作者
  • 收集用户信息
  • 隐私
  • 大量
  • 敏感
  • 恶意
  • 霸权
  • 被戳穿
  • 嘴脸
  • ……

开始我很迷惑,因为加入统计代码这个事情是我主动明示的。在最开始收到相关评价的时候,我还特意写了大量的内容去解释。再看上面这些标签,好多让人感到非常莫名。在我加上统计代码之后,我就说出来了,然后我是被戳穿的……

所以我明白了一个问题,就是他们在发表这些评论的时候,其实根本就没有去阅读我写的解释和说明。所以我也就放弃了任何辩解。

他们尝试举报,但是被驳回了,因为:在脚本说明中已经明确的讲出会加入统计代码。并且 GreasyFork 的帮助中明确的写出:

盈利项目(数据追踪、广告、挖矿脚本等)并非禁止,但是作者必须在脚本描述或额外信息栏明确说明。

所以我并没有违规。

不过后来管理还是对我的脚本提出了一些整改意见,因为我引入 js 的姿势不对,注意不是不可以引入,只是不够规范。我也做出了相应的修改。

但是差评在增加,甚至我一度收到这样的提示:

自动展开全文已连续收到差评,请检查您的脚本和回复评价中提出的问题。

那么做一个非常简单的思考:

  • 我自己对这个脚本几乎没有需求
  • 我做这件事情毫无收益
  • 现在我做的不开心

于是我就停更了。


一些解释

作者任性

大概有人会这么去想吧,批评两句就受不了了,这是多么的玻璃心啊。置那么多用户于不顾,这是多么的不负责任啊。

首先,停更完全是我的权利。很多人都忽视了作者有许多权利这个事实,而只想着作者应该输出,毫无所求的输出。

然后我来解释一下上面的两个小问题。

我有用户吗?

如果从数据上看,脚本的安装量大概有 3 万。当然这中间不乏安装以后删除的用户,所以这个数据水分是比较多的。那么看一下每日检测更新的数据,最高的一天大概有 7000 左右,这是比较有参考价值的,可以认为我有 7000 左右的活跃用户。

但是在事件发生之前,GreasyFork 上的反馈数量为 10,小众论坛这边大概 100 条适配申请。主要就是说哪一个网站失效了,或者希望我去适配哪一个网站。我都是在看到后的第一时间去处理的。和我说过谢谢,或者表达一下这个脚本好用,对自己有用之类意思的人,大概能有 10 个?!

也许我有用户吧,然而我并感受不到他们。当我被人疯狂差评的时候,当我无奈停更在脚本中加入弹窗的时候,也没有几个人出来说话啊。

所以你让我对哪些用户负责任?

我玻璃心吗?

上面也都说了,他们不看我的解释,不看网站的规则,一心一意给我扣帽子。我为什么要独自去承受这份委屈?

甚至,他们说着我无良,同时研究如何回退到以前的版本。以前的版本不是我写的吗,一边骂着我,一边用着我的东西,奇奇怪怪,可可爱爱吧。

然后,研究着如何进行修改来去掉统计代码。因为 GreasyFork 的规则要求代码不可以压缩和混淆,所以我的代码写的很清楚,他们修改很简单。但是我在注释里也写的很清楚,如果用户禁止追踪,则不插入统计代码。他们看的懂代码,却看不懂注释(我还写的中文注释。

然后还喊着,谁出来复制一份。我告诉他们修改我的代码,这是违反用户协议的。然后他们表示我没有任何权利,他们也会无视任何协议……

后来真的就有人完全将我的代码复制了一份,然后重新发布,删掉了统计代码,也删掉了所有我的信息。这里再次强调,我设置的用户协议是禁止二次分发的。所以我对此进行了举报,举报之后两个小时,管理员便删除了这份脚本,并且顺便删除了我脚本中那些无视版权的评论(所以现在在反馈区看不到完整的争议现场了)。

我能怎么样?

这真的很难,油猴权限本身就比较大,如果用来做坏事儿,那是很容易也很可怕的。所以要求代码不能够压缩和混淆,这是非常合理的。当任何人都可以查阅脚本代码的时候,意味着脚本得到了更多的监督,而有可能提升用户的安全性。

但同时,也让那些无视版权的人,可以非常方便的复制和修改这些代码。

为了对用户负责,我肯定不会选择对代码进行压缩和混淆来提高破解难度。那就只能尽可能小范围的去公开这些代码。所以 beta 版,我选择了收费,3 元钱一个用户,付费,然后加群,在群里公开新脚本的地址。现在对于每个用户,我都要确认他的付费信息,这个费用都有点儿不够我做确认这个操作的工钱。但好歹过滤了一些人。

受伤的是谁……

我还行,心态挺好的。但是说不闹心那绝对是假的。

这几天喝着啤酒看着番,无聊了刷一下骂我的评论,感叹他们发的太慢,供不上我看。

我说了,我没需求,没收益,可以做到真的不在乎。

他们骂完了,走了。以前在评论里说着:“作者不会来回答的”,现在别人问他们问题,倒是我在解答着。尘烟散去,空留一片废墟,只有“无良”作者还守在这里。

7000 个从始至终毫无存在感的“用户”,一个每天弹窗提醒一次的停更的脚本。

骂我的人,未必真的对脚本有需求,如果有,大概也不会如此毫无顾忌。毕竟,这个脚本并没什么技术含量,真正让这个脚本有价值的是持续的维护,让脚本成长,并适应变化。

没有了维护,规则总有失效的时候,那时候就真的一片荒芜了吧。那些回退版本并禁止更新的人,不知道想过这一层没。

把海弄干的鱼不在——《三体》刘慈欣

弄坏这一切的人,并不会在乎这一切。真正有需求的人,才是真正的承受者。

在这样的情境之下,我再有有趣的想法,还会用爱发电么?总要多了一层思考吧。

其他看到此事,或者此类事情的作者们,大概也会多了一层思考吧。

为什么现在有趣的小工具越来越少了呢……

技术补充

DNT

“禁止追踪”(Do Not Track),现在大部分浏览器都支持此设置。然后会在发送的网络请求中加入这一标记,告诉服务器用户不希望被追踪。在前端也可以检测到这一标记。

但这只是一个标记,作为给服务器的一个建议。它没有强制性,就像一些朋友说的,这就是一个君子协定。所以有多少网站和服务遵守这个建议也不太好说。

总之很少有人去提起这个东西,说明他的意义可能并不大。

基本信息

浏览器 UA,形式如下:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36

稍微多看两眼,就很容易识别出其中携带的信息。有兴趣的可以自己详细阅读相关资料。UA 可以修改,但是没什么必要,因为有些网站会根据这个信息去优化相应的浏览效果。

IP 地址,其实现在运营商一般都不会给用户独立 IP 了,从某个角度讲,可能用户会变得更加安全,也更难以通过一个 IP 就确定用户了,因为可能一个小区都是在共享某一个 IP。

有人提到使用“呆梨”(原谅我用谐音了)来检查自己的 IP,这是可行的,但并不是你想象中的那么简单。因为大部分“呆梨”都是透明“呆梨”,就是他并不会隐藏你的用户信息,网站依然可以轻松的获取到你的 IP 地址。而且“呆梨”服务有能力获取到通过他的所有数据,这样增加了一个第三方,反倒变得更加不安全了。除非你有能力获取到一个真的值得信任的高匿“呆梨”,然而这依旧没有多大用途,读完下面一小节,你就会理解了。

哪些隐私才是值得我们重视的

【剩余 14% 的内容请至此处阅读: https://mp.weixin.qq.com/s/iMrAbi4PRNQTGVLlNjaXuA (需付费)】

或用微信扫描下方二维码。

image

Append:2020-08-07 19:08:09

我是真的太天真了,以为这事情就尘埃落定了呢,结果还得附加信息,啧啧~

刚才看到脚本被标记:

此脚本已被报告违反 Greasy Fork 守则。

你们自己点链接进去看吧,喵喵喵,真就可可爱爱的,嗯,十分可可爱爱。

Append: 2020-08-09 18:15:44

看看下面的评论,我渐渐的不想讲了……

我必须完美吗?我必须取悦所有人吗?抱歉,我做不到的。你做得到吗?

没人意识到:权利和义务是对等的。当作者不享有任何权利时,他也没有任何义务了。

都以为我设置限制是为了恶心某些人,然而我并不在乎。真正变化的是用来发电的爱在流失。

每一次失望,带来的改变,都在让公开的分享变得更加局限。这堵墙是一些人亲手砌成的,而不是作者们不想分享。

依然,我的选择做完了。剩下的交给用户吧……

Append: 2020-08-27 06:13:45

时隔三周,这事儿还没完。依旧陆续不断的有人追着差评举报。

昨天发现新发布的脚本已经被打造成了全差评,今天早晨原脚本,又因为过多的举报而被隐藏。

在这篇文章发布之前,原脚本就已经开始提示用户自行卸载了,能用到今天还坚持不卸载,然后过来给我差评的,我也是挺佩服他们的毅力的。

新脚本我已经标明收费了,未付费用户我会当做盗版去看待的,就算我是自助付费,也并不等于随便拿,自助超市里的东西也不是可以随便拿出去的,对吧?

反正看后台的数据有 1000 多人在用,前两天我还特别给这个版本做了功能上的升级,因为使用方法上变化比较大,所以做了一个提示,确认之后就不会再弹出来了。结果就这又触发了一轮举报和差评。

反正这种吃了奶还骂娘的行为,我是不太理解。不过我的新脚本终于完成了初步的开发,喵喵喵~

Append: 2020-09-02 10:18:10

又被举报了,说我弹窗,十分烦人。喵喵喵,那就是提示用户卸载此脚本别的弹窗嗷,不肯卸载,还举报我……

你说上面这个戏码很熟悉?!这次的举报人已经不止两次拿着我这个脚本二次发布了(我举报了他两次),还在描述里“喵喵喵”(你们懂的

不过都一个月了,他们继续 high 吧,我不管了。哪天管理员手抖处理错了就……他们就可以开心的拿着我的代码四处招摇了。

2赞

我没有用过你的这个脚本,但是我做过类似功能的东西.针对csdn博客之类的地方(适配的网站很少就是我长用看见心烦的几个),用css直接展开显示全部内容,跳过了点击展开全文的过程. 我觉得很大程度上,可以用css解决的功能,没有必要用js,这可以避免很多权限和安全的顾虑

1赞

真凑巧,我使用的是相同的方法。回避了点击操作,避免触发一些未知的行为,但是这个和外行解释起来就很难了,虽然我认为这才是这个脚本最大的价值所在。

然后样式的话,难以同时兼容所有网站,我用脚本去根据不同的网站插入对应的样式。以及一些特殊的网站会用脚本识别元素,或者进行一些特定的修正。

哪里都是站着说话不腰疼的人。某些情况下独裁真的比民主有效。 插件挺好用,感谢作者的付出。 然而我是铁公鸡,请统治我吧

铁公鸡没啥不好的。

那些铁公鸡,不承认自己铁公鸡,还说别人都欠他的就……可可爱爱的

几乎所有网站、软件、扩展等,都会带有类似的统计代码

就我而言,用到的,虽然不少有统计的,但绝不是“几乎所有”。greasyfork上的脚本我基本都会审查一遍才会安装,也就部分带有统计之类的。

另外像一楼所说,很多都可以通过 CSS 完成,我目前就通过 uBlock 实现的。当时楼主发了那个脚本不久我就看到了,看了下觉得没太大必要用 js,有些浪费系统资源。而且带了统计就带来一个问题,每次更新就需要更仔细的审查调用外部内容的安全性了。

收费我觉得倒没什么问题,毕竟是个人的劳动成果。

我是的是:几乎所有网站、软件、扩展

恰恰没说脚本,我只是在证明这种统计代码的普遍性。这应该没有毛病

但不同网站需要的 CSS 不同,这个判断操作总是要有工具去做的, 我习惯用油猴,于是就用 JS 去做判断了。其他工具也可以,比如 Stylish / Stylus 等,只是把判断过程交给了扩展完成。

既然都要做这个判断,那也就谈不上浪费系统资源了吧。

个别网站,是容易处理的,大量网站就会出现各种情况。比如纯随机类名,这时候怎么写选择器?所以在某些特殊情况下,需要用 JS 来做辅助增强。

这是一个好习惯,也是我坚持不压缩和混淆代码的原因。虽然真正的加密做不到,提高审查门槛还是十分容易的。

是的,所以 GreasyFork 也要求按照规范引入外部内容。我的脚本被要求整改也是因为资源引入的姿势不正确。

非常喜欢这个插件,感谢你的付出。但你不要每天给反复给老插件用户弹通知提醒了,非常烦,这些用户绝大多数都没有网暴你。

1赞

你说的没有错。

  • 每天弹窗很烦
  • 绝大多数人没有网暴我

但这仅仅是从这些人的角度看吧。我的角度呢?

  • 我被人打了,很痛的,我叫唤了,有人说我的叫声扰民,毕竟被打扰的人并没有都动手打我。
  • 我被打趴下了,不能再为大家服务了,我贴个告示,告诉大家,然后被人举报我乱贴广告了。
  • 我被打的时候没人说话,被打完了问我为什么不继续提供免费的午餐……我读书少,不知道该怎么回答。

弹窗确实有点玻璃心啊

有点像“白宫惹了金正恩,于是一个核弹把华盛顿从官员到平民都炸了”

那用了免费服务还要求作者受了委屈也应该继续提供服务的呢?

一点都不像,这只不过是一个免费早点摊,被人砸了,就不提供早餐了而已。

我弹窗的内容是

【自动展开全文】脚本停更,会自动跳转到详细说明页。大家可自行卸载脚本,或更换到 Beta 版

我停更,提示卸载了都,还继续使用,然后埋怨弹窗,然后是我玻璃心?

而且我还提供替代方案了,不更换,过来说我弹窗……

恕我愚钝,理解不了

你把弹窗的那两行代码注释掉不就完了。这类事情我一贯都是能自己动手就不麻烦作者的。

具体来说,打开你的脚本编辑器,把代码底端的以下两行给注释掉。

598  ;alert('【自动展开全文】脚本停更,会自动跳转到详细说明页。大家可自行卸载脚本,或更换到 Beta 版')
599  ;GM_openInTab('https://greasyfork.org/zh-CN/scripts/397476')

(当然如果 @dms 觉得这样不妥我会尽快删除)

1赞

我并不介意,油猴明文代码就是为了方便用户审查和修改的。

只是按照用户协议不能二次分发,就是自用随意,但是不能传播。

我真的想把事情做绝了完全可以隐藏或者删除脚本,还放在市场上就是给用户留了余地。事情都这样了还跑来说我的不是那种,就……可可爱爱吧

何况我提供了更好用的替代方案,这几天爆更(完全计划外的工作),在某些程度上已经比原脚本好用了。这样的情况下还能指责我,真就是……铁石心肠都得落泪吧。

1赞

感谢。

本来想了许多劝慰的话,但思来想去还是不说了,毕竟我嘴拙,说到最后变成火上浇油就不妙了。总之吧,我觉得不顺心的事情如果薅不顺,那尽快忘掉倒也是个法子。

老鼠确实比较委屈,停更和下架也是作者的权利。但是花这么大的精力报复一小波杠精也确实不太理智,尤其用的还是这种“杀敌一百自损一千”的招数。

杠精有什么损失吗?有的杠精可能是一边用着你一边杠着你,没得用是他们的损失,也有的杠精纯粹就是来凑热闹的,可能连你的用户都不是,热闹散了人就走了,老鼠停更、弹窗,人家可是一点损失都没有,还白得了“热闹”。

无差别弹窗对沉默的用户和潜在用户、以及老鼠自己的路人缘的伤害可是实打实的。像我只是因为没有需求而没用过这个脚本,应该算老鼠的潜在用户吧。但如果老鼠以后做什么收费脚本对上了我的需求,我可能也得犹豫一下了,“作者好像有点玻璃心,保不齐哪天在杠精刺激下做出什么来,这样的脚本用起来可没什么安全感,再看看有没有其他的实现方法吧”

收到,已经修改了,谢谢。 :heart:

1赞

是哒,确实有一些不妥当。但既然停更了,也没有改回来的打算。

其实我没啥损失。上面也说过了,没需求,没收益,没啥可在乎的。

真正受到影响的人,从始至终没说话,大概他们也不在乎吧。

  • 沉默用户,抱歉,免费软件,我没有任何承诺。毕竟他们也没去为挽留这个软件做一点什么。
  • 潜在用户,已经转付费了,三元钱的门槛真好用,现在大家都很奈斯~
  • 路人缘,我有我的个性,喜欢我个性的有缘人啊,我们做盆友吧。(反正我总也没办法取悦所有人

弹窗不友好,但我做了说明,并提供了解决方案。我对免费用户尚且如此负责。(这也木有看出来的……过滤掉也罢,否则闹心的还是我。


以及你看,当我不打算去除弹窗之后,楼上已经不理我了,当面改掉我的代码,并一言不发。完全忘记了这些代码是我写的。

其实这个事情是有发展过程的。

  • 连续差评,我写了停更 公告
  • 遭到举报,我设置了一次性弹窗
  • 被差评刷满界面,我设置了每天一次的弹窗

一个靠爱发电的事情,做的不开心,就算啦~

现在我的心情,会影响到的是对外公开版本(自助付费)的更新频率。但是付费群里完全不受影响。

所以,我的选择做完了,接下来做选择的是用户啦~

你的关注点是事情本身,而杠精的关注点永远是攻击你本人,根本不在一个频道上,所以交流是不可能交流的,别尝试用讲道理的方式说服杠精

这种时候可以从当事人的角度“跳出来”,简单地解释到明眼路人能看清是怎么一回事的程度就可以了,别那么认真地浪费生命给他们做多余的回应。像这次,一两次百十来字的回应,可能比陆陆续续几千个字的回应效果更好。抬杠的人就是这样,你反应越激烈他们越开心,只要让打了很多字的杠精产生一种碰了一鼻子灰的感觉,他们自讨没趣就走了(这样可能都不会有后来恶意刷举报刷差评什么的

1赞

发现问题后我就不和他们掰扯了,这边是自己的事后总结,也写给关注这事儿的朋友们,叫大家放心。

最开始我是放了几百字说明问题,然后被刷了一堆差评(差评比以前五个月的评论多),复制我代码重新发布……所以并不只是挨骂而已。我不挣扎怕是现在都死挺了。

最近有几个用户在举报脚本,反正就是各种无法说明违规详细的恶意举报

包括我的脚本也被举报了……用爱发电,又没任何恰饭行为!

我的第一感受就是,这人发布的恰饭脚本,被人举报了,所以开着小号到处恶意报复吧