什么是阻止屏幕抓取工具从我的网站上抓取特定内容的好方法?

StackOverflow https://stackoverflow.com/questions/139482

  •  02-07-2019
  •  | 
  •  

非常肯定这个问题对于大多数Web 2.0支持者来说都是亵渎神灵,但我认为有时候你可能希望你的网站中的某些部分很容易被扯到别人的网络聚合器中。如果他们真的想要的话,至少足以让他们自己动手做。

我的想法是制作一个脚本,按照它们在各自段落中正常出现的顺序,按绝对坐标定位文本节点,然后在DOM中以随机,混乱的顺序存储这些文本节点。当然,让这样的系统正常工作(正确的文本换行,对齐,样式等)似乎几乎类似于从头开始编写我自己的文档渲染器。

我还想把它与类似CAPTCHA的东西结合起来,以微妙的方式混淆文本,以阻止可以简单地查看快照和识别字母或诸如此类的屏幕刮刀。但这可能是在过度思考它。

嗯。有没有人设计过这样做的好方法?

有帮助吗?

解决方案

我见过电视指南使用javascript解密客户方。它不会阻止一个坚定的刮刀,但会停止大多数随意的脚本。

所有文本电视条目都类似 ps10825('4VUknMERbnt0OAP3klgpmjs .... abd26')其中ps10825只是一个用ps10825键调用其解密函数的函数。显然关键是每次生成。

在这种情况下,我认为让99%的人使用Greasemonkey甚至wget脚本来下载电视指南而不会看到他们的所有广告就足够了。

其他提示

考虑到刮刀无法读取的所有内容,搜索引擎也无法读取。话虽如此,您可以在页面加载后通过Javascript将内容注入到您的文档中。

请不要使用绝对定位来重新组合乱码页面。这不适用于移动设备,视障人士的屏幕阅读器和搜索引擎。

请不要添加验证码。它会在人们看到您的网站之前将其带走。

您提出的任何解决方案都将是反网络的。互联网是关于分享的,你必须把坏事带走。

如果你必须做某事,你可能只想使用Flash。我还没有看到链接农民抓住Flash内容。但是出于第一段所述的所有原因,Flash是反网络的。

您的想法可能会破坏任何屏幕阅读器,因此您应该在搞乱订购之前检查可访问性要求/法规。

要理解这一点,最好尝试刮几个网站。我抓住了一些非常具有挑战性的网站,比如银行网站。我已经看到许多尝试使抓取困难(例如加密,cookie等)。在一天结束时,最好的防御是不可预测的标记。铲运机最依赖于能够使用“模式”。在标记中。模式改变的那一刻,刮擦逻辑失败。刮板是众所周知的脆弱,经常容易分解。

我的建议是,在代码中随机注入不可见的标记。特别是围绕可能有趣的内容。做任何你能想到的事情,让每次调用时你的标记看起来与刮刀不同。

使用类似 SVG 中渲染所有文字/www.imagemagick.org/script/index.php"rel =“nofollow noreferrer”> ImageMagick

Alexa.com做了一些古怪的事情来防止刮擦。转到此处查看流量排名 http://www.alexa.com/data/details/traffic_details/teenormous。 COM

这些技术中很少有人能够阻止这种技术。 Alexa风格的垃圾-HTML / CSS-masking很容易解决(只需解析CSS); AJAX / Javascript-DOM-insertion也很容易解决,虽然形式真实性令牌使这更难。

我发现提供官方API是最好的威慑力量:)。

除此之外,将文字渲染成图像是阻止随意刮刀的好方法(但仍然可行)

YouTube还使用javascript混淆,使AJAX逆向工程更加困难

只需通过AJAX调用加载所有HTML,HTML就不会“出现”。在大多数屏幕刮刀的DOM中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top