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

推荐订阅源

博客园 - 叶小钗
爱范儿
爱范儿
WordPress大学
WordPress大学
Last Week in AI
Last Week in AI
博客园 - 聂微东
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
宝玉的分享
宝玉的分享
罗磊的独立博客
Jina AI
Jina AI

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
一日一技 | 如何分享一个体面的购物链接 - 少数派
2022-12-10 · via 少数派

如果让你「分享一个淘宝链接」,你脑海中首先浮现的格式是什么样的?

如果你经常跟微信好友分享,熟悉的格式也许是这样的:

椱ァ製这句话¢Abc123Xyz¢后咑閞👉淘宀┡ē👈

如果你习惯淘宝客户端里选择复制链接,也许看到的大多是这样的:

https://m.tb.cn/h.A1B2C3D4?tk=1a2b3c4d5A6

如果你足够老派,仍然坚持在电脑上访问淘宝,地址栏显示的链接应该类似这样:

https://item.taobao.com/item.htm
    ?ut_sk=1.X55/YjLY%2BlADADdx1FfSKE2K_12345678_1234567890123.Copy.1
    &id=123456789012
    &suid=A433CF27-ABCD-1234-DCBA-33D239D70323
    &shareUniqueId=12345678901
    &spm=a2159r.12345678.0.0
    &sp_abtk=gray_1_code_simpleios2
    &tbSocialPopKey=shareItem
    &sp_tk=A12bCdDEFGHiJ3
    &short_name=h.AB1CDE2
    . . .

(以上例子为方便阅览已做简化和改写处理,并替换为虚构数据。)

我的一般原则是非必要不用梗,但面对这几种「链接」,我愿意破例一次:在座的各位都是_____。

第一种格式的问题在于它根本不是链接,而是淘宝为了躲避微信的屏蔽发明出来的「火星文」、官方起的粉饰名称是「淘口令」。第二种虽然看起来比较正经,但仍然是一个「短网址」,性质上是不完整和临时的,访问后会被服务器跳转到一个「完全体」地址——通常就类似于第三种格式。

但第三种格式也不是一个好的网址,它的问题在于废话太多了。复习一下,在 URL 中,从问号 ? 开始,之后每一段形如 key=value、中间用 & 分开的键值对,都被称为「参数」(parameter)。规范意义上,参数的作用并不是定位网上的资源——那是问号 ? 之前的路径(path)所做的事——而只是用来向服务器提供显示具体内容的补充信息。

full URL
URL 的结构(来源:MDN Web Docs)

而在上面的那段长链接中,绝大多数参数都和商品本身没有任何关系,只是为了推广和追踪目的服务的:有的标记了广告主的身份(以便广告归因和分成);有的记录了分享者、也就是你本人的身份、设备类型、分享场景;有的用来控制接收者点击后,客户端显示怎样的界面。你以为自己分享的是字字珠玑,实际上却是在隐私地狱里替人推磨。

这不是淘宝一个平台的问题。如今在大多数电商平台,简洁、可读、易懂的链接都已经绝迹了。对此,当然可以选择睁一只眼闭一只眼,复制出来什么链接,就保存和分享什么链接;大多数不了解其中区别的人可能也是这么做的。

但我非常反对接受这样的链接。作为用户,我反对这种在链接里夹带私货的行为;返利和推广没问题,但需要披露。作为中文使用者,我反对各种「口令」对于文字的轻浮滥用。作为作者,我无法接受文章里出现这些审美上破产的格式。

所以问题来了:怎么得到一个体面的链接用来保存和分享?

为此,首先需要定义什么样的链接才是「体面」的。我的标准是,能够稳定、持续地重新定位到商品,而只包含最小、必要信息的链接。

什么样的信息对于定位商品是必要的呢?尽管不同电商平台的识别方法不同,但共同点是都会给每个型号的商品编配一个唯一编号;这就像是相应型号商品的「身份证号码」一样。例如,淘宝、拼多多一般用 12 位数字来编号,京东用 12 或 14 位数字(早年曾经用过较少位数);亚马逊则使用更为严谨的 ASIN 机制,格式为 10 位大写字母和数字组合。

将这些商品编号与各自平台的规范链接模板拼接在一起,就得到了最干净的链接形态。如下表所示:

平台规范链接模板商品编号格式(正则表达式)规范链接示例
淘宝https://item.taobao.com/item.htm?id=$ID
https://detail.tmall.com/item.htm?id=$ID
一般为 12 位数字(\d{12}https://item.taobao.com/item.htm?id=123456789012
京东https://item.jd.com/$ID.html一般为 12 或 14 位数字(\d{12,14}https://item.jd.com/12345678901234.html
亚马逊https://www.amazon.com/dp/$ID
https://www.amazon.cn/dp/$ID
(顶级域名对应不同地区分站)
10 位大写字母和数字组合([0-9A-Z]{10}https://www.amazon.com/dp/B0001ZY2XW
拼多多https://mobile.pinduoduo.com/goods.html?goods_id=$ID
https://mobile.yangkeduo.com/goods.html?goods_id=$ID
一般为 12 位数字(\d{12}https://mobile.yangkeduo.com/goods.html?goods_id=123456789012

于是,剩下的问题就是如何得到商品编号。这并不困难:

  • 京东、拼多多等客户端分享的链接中,本身就包含了商品编号参数,只要按照上表从链接里找出来即可。
  • 淘宝略微麻烦一点,它的客户端默认分享的是 m.tb.cn 域名的短链接,但只要粘贴到浏览器里访问一次,等待被跳转到完整版的页面,跳转后的链接里就能看到记录商品编号的 id 参数(也可以直接从短链接的 HTML 源码里看到目标地址;淘宝团队在那里非常贴心地用中文加了醒目注释)。
听我说

iOS 用户可以使用我做好的这个快捷指令;从客户端复制后运行即可得到规范链接。你也可以自行参考上面给出的正则表达式,用其他自动化工具实现类似效果。

另一个干扰因素在于,电商平台普遍都有五花八门的域名。例如,淘宝有短域名 tb.cn、隔壁的天猫 tmall.com 和国际版 world.taobao.com;京东有短域名 3.cn 和国际版 jd.hk;拼多多有替身域名 yangkeduo.com(羊可多?养客多?这甚至不能反映它全部的想象力);等等。

但这些域名本质上都是马甲,大多数情况下可以与主域名互换使用。唯一特殊的是亚马逊,对于同一个 ASIN,使用 amazon.cn 和其他全球分站的域名,将会分别打开中区海外购的页面和相应商品在海外区的原始页面。

实际上,电商网站也以一种隐蔽的形式透露了链接的「标准答案」。在电脑版商品页面(可能需要登录)的空白处点击右键,选择「查看源码」,就能在 HTML 源码的头部找到这样的内容:

<html>
    <head>
        . . .
        <link rel="canonical" href="https://item.taobao.com/item.htm?id=123456789012" />
        . . .

这里,<link rel=canonical> 元素的作用就是提供「当前页面的规范(canonical)链接」。这是一个主要给搜索引擎看的信息,其目的正是在页面有多种「马甲」或带参数版本的情况下,自我坦白哪一个才是本尊,以免因为分散访问影响搜索排名。(拼多多没有这个元素,但也许它的词典里就没有 canonical 这个词。)

你可以用我做好的一个小书签来提取网页的规范链接。将其拖拽到浏览器书签栏后,在浏览网页版电商页面时点击「ExtractCanonical」链接即可显示当前页面源码中的规范链接。

当然,也许你看完这些解释,并没有自己实践的动力,觉得还是太麻烦了;这完全可以理解。写下这些的目的,更多是作为一种提示:作为用户,有权利知道自己的每步操作意味着什么,让谁获得利益。即使一定的商业行为是必要的,也应该以更透明的方式说明,并且给出选择机制,而不是把一切都藏在短链接和「火星文」后面。

2011 年,一名 Facebook 早期员工 Jeff Hammerbacher 在接受《彭博商业周刊》采访时,说过一句著名的话:「我们这一代最聪明的人都在思考如何让人们点击广告;太糟糕了。」 (The best minds of my generation are thinking about how to make people click ads. That sucks.) 十年过去,聪明的人变得更聪明了,糟糕的东西变得更糟糕了。我们也许不能阻止,但能做的就是用笨办法对付聪明,用顽固对抗糟糕。