在问题How do I uniquely identify computers visiting my web site?上阅读了这篇文章后:
一种可能是使用闪存cookies:
无处不在的可用性(95%的访问者可能会有
flash)
对于跨浏览器共享的每个cookie (最多100 KB),您可以存储更多数据,因此更有可能唯一标识计算机清除浏览器cookie不会删除flash cookie。
你需要创建一个小的(隐藏的) flash电影来读写它们。
我试着找出是否有人已经做了这样的事情,这样我就不需要重新发明轮子了。到目前为止,除了code in the flash side之外,我还没有找到合适的搜索条件
我对此的使用是为了防止用户多次回答测验,但未来的使用可能会禁止巨魔。
有没有人知道有一个开源库可以做到这一点,并允许我通过javascript访问?
注意:我不知道flash,我也没有许可证。
编辑:您可以使用 进行编辑。这是一种邪恶的做法,但很管用。
发布于 2009-01-27 15:11:51
我很犹豫要不要回答你的问题,因为这听起来像是在危险地接近邪恶……而且,它注定要失败。如果你真的想阻止用户多次回答测验,你可以做的最好的事情是让他们注册一个用户帐户。如果你想阻止他们注册多个用户帐户,你可以让他们通过信用卡或蜗牛邮件进行验证,这两种解决方案通常都是站不住脚的。简而言之,互联网是匿名的。
无论如何,如果你真的想继续这个计划,你可以用Flex (Flash的一种变体)构建你的应用程序。Adobe网站上有大量的文档。其中一些是相当稀疏和恼人的,特别是集合API,但它足以满足您的目的。ActionScript ( Flash和Flex的底层编程语言)与JavaScript非常相似,也很容易学习。Flex有一个免费的SDK (通常在页面上的一个小链接中,它告诉你可以获得昂贵的Flex Builder;Flex Builder主要是一个GUI工具,而你将在没有IDE的情况下直接编写代码,只有SDK),所以许可证应该不是问题。JavaScript到闪存的桥也有很好的文档记录。
发布于 2016-07-05 05:21:38
BakedGoods似乎正是你需要的(或者更确切地说,是你确实需要的);它是一个Javascript库,它建立了一个统一的接口,可以用来在所有本机和一些非本机存储设施中执行常见的存储操作,包括闪存本地共享对象(您所说的“cookie”)。
有了它,创建LSO就可以通过如下代码来完成:
bakedGoods.set({
data: [{key: "key", value: "value"}],
storageTypes: ["flash"],
complete: function(byStorageTypeRemovedItemKeysObj, byStorageTypeErrorObj){/*code*/}
});
检索和删除数据也同样简单。相信我,我会知道的;我是它的维护者:)
如果出于任何原因,您希望推出自己的解决方案,rmeador和ForYourOwnGood已经为您提供了足够的信息来帮助您入门。
然而,他们忘了告诉你如何做一件非常重要的事情:如何使用Javascript访问将处理共享对象的Actionscript代码。
首先,您需要将ActionScript代码封装在一个方法中,然后将该方法注册为其父应用程序的ExternalInterface的一部分:
function handleObjects(/*param1, param2, ... */):void {/*code*/}
ExternalInterface.addCallback("handleObjects");
其次,您需要编译Actionscript应用程序(代码),并在HTML中创建一个引用生成的.swf文件的元素。
然后,假设前面提到的HTML元素表示为一个名为flashDOMElement
的DOMElement,您可以使用DOMElement调用您的方法:
flashDOMElement.handleSharedObjects(/*arg1, arg2, ... */);
就是这样!有几件事我们没有提到或略过,但总而言之,推出自己的解决方案并不难。然而,推出您自己的可靠解决方案则是另一回事,这也是我建议您使用BakedGoods的部分原因。
发布于 2010-11-22 06:40:26
对于现在正在搜索它的人,请务必查看evercookie。
https://stackoverflow.com/questions/483678
复制相似问题