Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过识别浏览器指纹来防止网络蜘蛛?_Javascript_Security_Web_Web Crawler_Fingerprinting - Fatal编程技术网

Javascript 如何通过识别浏览器指纹来防止网络蜘蛛?

Javascript 如何通过识别浏览器指纹来防止网络蜘蛛?,javascript,security,web,web-crawler,fingerprinting,Javascript,Security,Web,Web Crawler,Fingerprinting,我知道我可以通过excute js脚本(canvas)获得usr的浏览器指纹,但如何防止网络蜘蛛使用随机指纹抓取我的网站。如何识别指纹是真是假??在端点中,我得到的指纹只是一个base64字符串,很容易伪造。简短回答:你不能这么做。这是用户控制的输入,默认情况下,用户控制的输入可以伪造 长答覆: 首先也是最重要的一点是,不能保证网络蜘蛛会运行javascript代码,因此您的指纹请求将永远不会出现在第一位 为了论证,让我们假设它总是这样。然后,攻击者可以在有效的浏览器上运行您的指纹代码,并且使用

我知道我可以通过excute js脚本(canvas)获得usr的浏览器指纹,但如何防止网络蜘蛛使用随机指纹抓取我的网站。如何识别指纹是真是假??在端点中,我得到的指纹只是一个base64字符串,很容易伪造。

简短回答:你不能这么做。这是用户控制的输入,默认情况下,用户控制的输入可以伪造

长答覆:

  • 首先也是最重要的一点是,不能保证网络蜘蛛会运行javascript代码,因此您的指纹请求将永远不会出现在第一位
  • 为了论证,让我们假设它总是这样。然后,攻击者可以在有效的浏览器上运行您的指纹代码,并且使用某种形式的操纵可以强制该脚本产生不同的结果(他想要的结果)。这将是让JS运行的方法,同时仍然伪造指纹

  • 简言之,如果你想过滤掉机器人,你必须依赖reCaptcha,这似乎是市场上最有效的解决方案。

    如果程序员能够成功地重新创建浏览器将发出的请求,你永远无法阻止刮板。谢谢你的回答。但我认为,如果我想识别从请求post数据解析的指纹字符串,攻击者可以使用python脚本直接调用我的API。我怎么做?我不能吗?如果我能识别指纹,我就会知道呼叫者的身份。问题是——如果用户的浏览器能计算指纹点——攻击者也能,而不会有任何问题。例如,他可以启动浏览器,获取有效指纹,并将其连接到python脚本中。这使您只能使用reCaptcha或API速率限制。