随着学习,相信各位也会(或者已经)具备制作比较复杂的捷径的能力。到了这个阶段大家就会发现,其实很多需求都是只有我们自己有,所以网上找不到什么现成的捷径来让我们直接下载来用。这时候我们就得自己钻研,动手解决问题。

当你有了一个 idea,查了 API 文档,自己思考出巧妙的思路克服了捷径里的一些困难,摆弄了好几个小时,终于制成一个捷径,兴高采烈地把它在社交网站上分享出来。随后却发现来自于伸手党的感谢寥寥无几不说,没过几天还发现有另一个人拿着你的捷径充大神,甚至高挂在他的平台或者小程序里,你一定会产生想要讨回公道的冲动。

这种事从 Workflow 到捷径时代都时有发生。归根结底是捷径的本质形式就是「开源」的,所有的思路和细节都体现在了捷径之中,让剽窃抄袭的人可以肆无忌惮。链接防伪是不可能的,每个捷径在被分享时都会再生成新的链接;从时间上只能证明先做的人没有剽窃抄袭,但在证明后做的人剽窃抄袭上不能构成有力证据,因为我们无法证明对方是抄袭了我们的而不是独立制作的……

但也不必过于绝望,因为在细节和步骤上,我们还有一些可以采取的措施,它们可以在大多数情况下,让你有理有据地证明捷径确实出自你手。

这些措施,从实现的简单到困难,我总共想到了 5 个:

  1. 在捷径的标题、图标和颜色上下功夫
  2. 在捷径操作里添加个人信息
  3. 在捷径的导入问题里添加个人信息
  4. 在捷径操作里添加无效操作
  5. 在捷径操作中使用特殊的逻辑

这些方法并不能百分百地阻止我们所担心的事情发生,但是如果剽窃你的人没有意识到这些点,他将很难完全做到消除你的版权痕迹。同时,综合其中多个手段,可以增加对方消除版权痕迹的难度和复杂度。

在捷径的标题、图标和颜色上下功夫

在标题、图标和颜色上下功夫

这是最基础步骤,但是也可以玩一些小心机。最基本的思路当然是做一些有个人特色的标题、图标和颜色。而且不能只针对某一个捷径做,而是要把自己的标题颜色等等都统一起来,这样才能在出现版权纠纷时,说明自己一直以来就是这种样式,形式是整体的,信服力就会更强一些:

整体效果

另外,如果把标题里加一些特别的字符,或者拼写的时候刻意拼错,会增加一些洗版权的难度。特别是拼写拼错的话,对方如果不注意,那就相当于把错误的答案都抄过去了,抄袭的痕迹就很明显。

在捷径操作里添加个人信息

在「注释」和「文本」操作里添加个人信息

在捷径操作里放个人信息是另一个比较简单粗暴的方式,也是很容易被洗。因为对方只要删掉这个操作,或者在操作里放上他自己的信息即可。

在操作里添加个人信息有两种方式,第一种是直接放「文本」操作,后来捷径加入了「注释」之后更多人开始使用注释来添加个人信息,这样不会导致错误。用「文本」操作容易导致的问题是,如果没有把它放到和前后两个操作都无关的位置,那就可能导致这一段文本传输到下一个操作。

在捷径的导入问题里添加个人信息

导入捷径时必然看到个人信息

通过捷径的导入问题添加个人信息相对于前面两种方法,算是比较高级一点的防伪措施。因为它存在的必要性比较高,而且知道这个功能的人肯定不如知道前两个的多。

在这套教程里我们还没有正式介绍捷径的导入问题,但是在《25–2 用 Toggl 的 API 在捷径中创建计时器》里这篇文章里有过应用,如果你下载了那一节里的示例捷径,就会发现在第一次运行时要求你回答一些问题:

教程中的捷径要求填入邮箱密码

这些问题随后会被填入到捷径中对应的位置,因此这是一种在分享捷径给别人时非常有效的,让对方注意到哪些信息需要自己填写的告知方式。

有很多捷径都不是直接下载下来就能用的,我们可能会需要填写自己的账户密码、地理位置、或是 API 的 key 之类的独特信息。如果下载的人不知道要填这些东西,运行之后会发现捷径不能使用,老手打开捷径找也会发现里面乱七八糟,不知道有哪些要填,自己是不是把该填的都填了。为了解决这个问题,捷径使用了「导入问题」这个功能,让我们能够把所有需要填的问题在对方下载捷径时全部展示出来,并予以提示。

如果你也做了一个复杂的捷径,需要为这个捷径设置「导入问题」,需要按照以下步骤来操作:

  1. 预留能够自定义其内容的操作,比如说「文本」操作:

    第一步:准备能够自定义内容的操作
  2. 在设置中选择「导入问题」,并选择「添加新问题」:

    第二步:设置中选择导入问题和添加新问题
  3. 选择刚才预留的能够自定义内容的操作(「文本」操作),这时就会让你填入「问题文本」和「默认答案」:

    第三步:在预留的操作里填入个人信息

这样一来,对方只要下载你的捷径,初次打开时就必然会看到你的个人信息。

在捷径操作里添加无效操作

总的来说,前三个方法添加的个人信息都比较容易被有心人替换或者移除。这主要还是因为目标过于明显,甚至可以说在提示对方我在这里留下了个人信息,所以只要对方检查了该检查的位置,就能轻松地移除你留下的信息。

所以接下来,我们要用一些悄咪咪的办法,把我们的信息隐藏在捷径里,为我们的捷径留下独特的「签名」,以便在想要讨个说法的时候留下证据。

留证据的方法有两个,第一条就是这部分要讲的「在捷径操作里添加无效操作」。

程序员界有个梗叫做「祖传代码」。所谓祖传代码,(大致)是指某个公司正在使用的代码是公司创始之初就由最初的程序员写下的代码,随后经历代程序员的维护、增加功能,沿用至今。因为程序员的习惯、水平,以及对代码的理解不同,导致新的程序员很难完全理解过去的人写下的代码,即便是高手,也很少有人愿意下手修复祖传代码,生怕「动一行,修半年」。

捷径近似于程序,越长、逻辑越复杂,就越难理解,别人也就越不愿意读。而这时候,我们可以利用人们的这种心理,做两种签名:

  1. 加上无关紧要的操作:比如在本来就没有关联的两个操作里加上「无」或者一段乱码一样的「文本」:

    在操作中加入「无」
  2. 使用特色变量名:你可以把变量名写得有个人特色一些,使用一些对你有独特意义的缩写:

    使用特殊变量名

这样一来,对方就需要仔细看你的捷径,还要有足够的能力,才能够检查并剔除出这些细节。

在捷径操作中使用特殊的逻辑

在上一个方法中,我们设计了两种方案来在捷径中留下签名。一种是添加无意义的步骤,一种是修改变量名。这些方法应该已经足够防范一些有心人,但是它们的问题是过于表面,修改起来仍然容易。而接下来我们要介绍的方法则更加深层,破坏起来的难度也更大。它的原理近似于你在做一道很难的题的时候用了一套独辟蹊径的方法,抄你的人很难把你这套方法讲清楚。

一个比较典型的例子是套壳截图。这个捷径的独特之处在于,它的内在逻辑是和壳的素材需要严格配套。所以你可以故意把你用的素材,比如说壳的图片的右边多做 3 个像素的空白。这时候你的捷径也必须得针对这 3 个像素的空白,添加一个做位移的操作。这就很难遇到巧合。

而且,套壳截图的逻辑本来就不止一种,我在教程里用的逻辑就比较独特,用了汉堡包的方法,两张中间透明的壳图夹住了屏幕截图,原因是下面的壳图用来做做底,确定整体图片大小,上面的壳图用来把长方形的截图编程刘海图。但我见过更独特的逻辑,是 @Minja 做的套壳截图捷径的逻辑。他利用「蒙版图像」这个操作先把 iPhone 的截图给抠成带刘海的样子,然后再把它放在不透明的壳图的上面。

不过,制作独特逻辑的捷径有时候不必过于独辟蹊径,那样毕竟太伤脑。只要自己能讲清楚自己的逻辑,就起码不会被认为是抄别人的。如果非要做防伪,那么比较省力的办法,是扩充一下现有的操作步骤,比如说把本来可以一步做到的事改为两步。你可能会想,这不是很蠢吗?其实蠢的逻辑也是一种特别的逻辑,而且一般是别人不愿意承认的逻辑。这是什么道理?之前正好干了一件类似事可以拿来讲讲。

我有个需求是把 Markdown 格式的链接 [title](link) 改为普通样式的链接 title: link。解决这个问题的正常思路都是用正则表达式来匹配组,来把 title 和 link 抓出来,再在中间夹一个冒号(:)。我就故意用了文本替换的方法,连用 3 个文本替换,先把左边的中括号 [ 替换为空白,再把右边的小括号 )替换成空白,再把中间剩下的俩符号 ]( 改为冒号 ,做到了同样的事。

但这种事正常人正常思路是不会做的,一个会正则表达式的人真这么做是要被笑话的,所以如果不是刻意为之,就没办法解释这些步骤,更没办法解释自己为什么要用这样的方法。因为没有人愿意显示出自己很蠢。

总之,只要制作捷径时的逻辑你动了一些手脚,并且你能够讲清楚制作它时的思路,就能够更有力地证明这个捷径是由你原创。同时,对方轻易也不敢修改会影响结果的步骤,而且应该也不会有你这个原创者对整体逻辑理解得更加清楚。

结语

我个人其实从最开始就没有那么在乎捷径的版权问题,在教程里使用的也都是第二种方法来简单地标注一下出处,而且那主要是怕使用者出问题不知道找谁解决。写这篇文章是因为 @Minja 被指控抄袭由感而发产生的冲动。

@Minja 被指控让我感到确实有一些人非常有保护版权的欲望,但却没有很好的判断方式,所以不仅可能无法保护自己的权益,还有可能伤害到不应该被伤害的人。捷径被剽窃并不是太大的问题,这个市场太小,捷径还起点高限制大,所以一个人剽了所有的捷径也不会真的为他带来多大的收益。但是,这个小圈子就这么几个原创者,如果还互相攻击,实在太冷。

最后,如在文首就提过的,这些方法不能百分百地阻止我们所担心的事情发生。但是如果剽窃捷径的人没有意识到这些点,他将很难完全做到消除你的版权痕迹。同时,综合其中多个手段,可以增加对方消除版权痕迹的难度和复杂度。