我注意到 facebook 对每个元素都有随机元素 ID - 包括没有唯一元素 ID 的元素。
<div id="__w2_YvdN1r2_loading">blah</div>
有什么想法为什么他们在每个元素上都这样做以及他们是如何做到的?
我注意到 facebook 对每个元素都有随机元素 ID - 包括没有唯一元素 ID 的元素。
<div id="__w2_YvdN1r2_loading">blah</div>
有什么想法为什么他们在每个元素上都这样做以及他们是如何做到的?
我能想到的“为什么”的一个原因是防止或至少减少屏幕抓取的发生率——如果 ID 确实是随机的。至于如何生成伪随机值,有无数种方法,其中任何一种都可以强制生成类似于__w2_YvdN1r2
.
鉴于 Facebook 的 Javascript 繁重程度,如果 ID 与您想象的一样随机,我会感到非常惊讶,除非这些值也输出到 javascript 数组/对象/存储中,以供页面 javascript 使用。
给每个元素一个唯一的 id 保证 FB 可以使用脚本引用一个特定的元素。例如,FB 可能有一个将页面滚动到更新元素的脚本,并且他们希望脚本适用于所有元素。此外,这样每个元素都可以用作 URL 中的片段标识符。它还允许您永久链接到页面中的任何元素。因此,例如,如果我想将您链接到维基百科片段标识符页面的“示例”部分,那么我将使用该元素的 id 作为锚点#
:
<a href="http://en.wikipedia.org/wiki/Fragment_identifier#examples">my link text</a>
哇。元。
至于如何,我们不知道,因为它是闭源的。但是 FB 是用 PHP 编写的,所以他们可能会使用类似uniqid的东西。
所以更难有意义地刮,可能只是一串随机字符。
我假设这是引用它们可能关联的 base64 编码的 UUID——可能代表用户或令牌。