如何保护我网页上某些数据的抓取?

时间:2009-02-27 00:26:41

标签: security screen-scraping

我想只保护每次请求后显示的某些数字。大约有30个这样的数字。我计划在这些数字的位置生成图像,但如果图像没有像验证码那样扭曲,那么脚本是否能够破译数字呢?此外,加载图像的性能与文本相比有多大?

15 个答案:

答案 0 :(得分:9)

确保坏人无法获取数据的唯一方法是不与任何人分享。任何其他解决方案基本上都是使用筛网刮刀进行军备竞赛。在某种程度上,你们中的一个人会发现军备竞赛成本太高而无法继续。如果您共享的数据具有任何可感知的值,那么屏幕抓取器可能会非常确定。

答案 1 :(得分:7)

这是不可能的。

  • 您使用javascript并加密页面,在解密后使用document.write()调用。我要么从浏览器的显示屏中抓取,要么通过JS引擎提供页面以获得输出。
  • 您使用Flash。我可以查看flash文件并获取值。你在闪存中对它们进行加密,然后我可以运行它,然后从解释器的显示器中获取输出作为一系列图像。
  • 您使用图像,我可以通过OCR提供它们。

你正在进行军备竞赛。您需要做的是使您的信息变得如此有用,并且您的页面易于使用,从而成为您的权威来源。定期更改输出格式以保持同步也很方便,但屏幕抓取工具可以处理这种情况,除非您进行相当彻底的更改。激进的变化会驱使用户离开,因为页面对他们来说一直不熟悉。

您的图像解决方案不会有太多帮助,而且图像效率低得多。 HTML编码中的数字通常只有几个字节长。图像从几百个字节开始,并根据您想要的大小扩展到1k或更多。图像也不会以用户为其浏览器窗口选择的字体呈现,对使用辅助计算设备的人(视障人士)无用。

答案 2 :(得分:5)

除了图像,您可以使用JavaScript或flash显示数字。

您还可以使用CSS使用绝对或相对位置的各种组合来定位各个数字。 您还可以使用JavaScript来帮助您创建这些DIV。 关键在于足够模糊,变得非常困难。

另一种解决方案是使用分段或单个点的图像,并使用CSS重新构建数字图像,有点像点阵显示。 您可以使用这些绝对定位的DIV乱丢页面源,并再次通过动态创建它们来使重建变得更加困难。

无论如何,您无法阻止确定的剪贴板获取数据:自动化Web浏览器并获取可以提供给OCR的屏幕截图并不需要太多。 无论如何,没有人付钱给别人手动获取数据。

重点是:你的对手(用户?)的确定程度如何 这有点像软件保护业务:让事情变得足够困难,以至于你会阻止随意的“盗版”并不是太难,而且这是一个相当不错的方法。

但是,如果您提供的数据有很多价值,那么您无法真正做到保护它 所有你能做的就是让它变得足够困难,以便随便的“小偷”更愿意继续为你的服务付费而不是绕过它。

答案 3 :(得分:2)

Javascript可能是最容易实现的,但你可以变得非常有创意,并且可以通过在无效数字的顶部放置图层,将错误的数字混合到背景中或制作它们来使用大块数字来查看某些数字通过css和半随机生成的类名不可见。

答案 4 :(得分:1)

生成包含这些数字的图像并显示图像。 : - )

答案 5 :(得分:1)

我无法相信我正在推广一种常见的恶意软件脚本策略,但是......

您可以将数字编码为在运行时呈现的编码Javascript。

答案 6 :(得分:1)

我认为你们对这些解决方案反应过度。 Javascript,Capcha,甚至诉讼和DMCA流程都没有解决网络抓取和数据窃取的复杂适应性问题。您是否认为防止恶意机器人和网站抓取的“理想”解决方案可以在实时主动缓解策略中发挥作用?与内容保护网络非常相似。只是说'n。

示例:

IBM - IBM ISS Data Security Services

DISTIL - www.distil.it

答案 7 :(得分:0)

你能提供一些关于你正在做什么的更多细节吗?当然,创建图像而不是倾销数字文本会有性能影响,但是你每天多久会这样做?

使用JavaScript与使用文本相同。逆向工程是微不足道的。

答案 8 :(得分:0)

使用flash使用动画数字。它可能不是万无一失的,但它会使它更难破解。

答案 9 :(得分:0)

如何发布大量虚拟数字并使用外部CSS显示正确的数字?同样,刮刀也没有开始解析外部CSS。

答案 10 :(得分:0)

不输出数字,即前缀

echo $secretNumber;

//

答案 11 :(得分:0)

对于那些建议使用Javascript或CSS来混淆数字的人来说,很可能还有一种解决方法。 Firefox有一个名为abduction的插件。基本上它的作用是将页面作为图像保存到文件中。您可以修改此插件以保存图像,然后分析图像以找出试图隐藏的密码。

基本上,如果从页面中抓取这些数字背后有足够的动力,那么它就会完成。否则,只需发布​​一个常规号码,并使用户更容易,这样他们就不必担心无法复制和粘贴号码,或其他此类问题是由此诡计造成的。

答案 12 :(得分:0)

只需做一些意想不到的事情(每次都不一样)和CSS盒子模型。强制他们实际使用浏览器支持的screenscraper。

答案 13 :(得分:0)

我不认为这是可能的,你可以让他们的工作更加努力(使用这里建议的图像),但这就是你能做的一切,你不能阻止一个坚定的人获取数据,如果你不不希望他们刮掉你的数据,不要发布它,就像那样简单......

答案 14 :(得分:0)

假设这些数字经常更新(如果它们不是保护它们完全没有意义,因为人类可以手动转录它们),您可以通过限制来限制自动抓取。如果您可以限制赢得这些检查,则自动脚本必须经常访问您的网站以检查更新。

有关限制的指示,请参阅this question