我正在开发一个网站,并且对人们屏幕刮擦我的数据很敏感。我不担心刮擦一两个页 - 我更担心有人刮擦数千页,因为该数据的总和比一小部分的数据更有价值。

我可以想象,基于单个IP地址的流量繁忙而阻止用户的策略,但是 Tor网络 设置许多电路,这实际上意味着一个用户的流量似乎来自不同的IP地址。

我知道可以像安装时那样检测到TOR流量 Vidalia Google.com凭借其Firefox扩展名,向我赠送了验证码。

那么,如何检测到此类请求?

(我的网站位于ASP.NET MVC 2中,但我认为这里使用的任何方法都是独立的)

有帮助吗?

解决方案

我正在开发一个网站,并且对人们屏幕刮擦我的数据很敏感

忘掉它。如果它在网上并且有人想要它,那将是 不可能的 阻止他们得到它。您的限制越多,您就会越来越有可能破坏合法用户的用户体验,他们希望成为您的大多数受众。这也使代码更难维护。

我将对未来答案提出的任何想法发表对策。

其他提示

您可以根据列表检查他们的IP地址 Tor出口节点. 。我知道这一点甚至不会放慢一个有兴趣刮擦您的网站的人。 TOR太慢,大多数刮板甚至都不考虑。有成千上万个开放式代理服务器可以轻松扫描或可以购买列表。代理服务器很不错,因为您可以将请求帽敲打,可以将它们螺纹或旋转。

Google被TOR用户滥用,大多数出口节点都在Google Black列表上,这就是为什么您要获得验证码的原因。

让我非常清楚: 您无能为力阻止某人刮擦您的网站。

通过设计TOR网络组件的设计,接收者无法确定请求者是否是原始源,或者只是中继请求。

您在Google看到的行为可能是由不同的安全措施引起的。 Google检测到登录的用户是否更改其IP并显示验证码,以防止有害拦截,并且如果身份验证的用户真正更改了其IP(通过将其重新登录到ISP等),也允许会话继续。

我知道这很旧,但是我是从Google搜索到这里的,所以我认为我在这里的问题中得到了问题。我开发了Web应用程序,但我也进行了大量滥用和利用其他人。我可能是您要保持外面的人。

检测到TOR流量确实不是您想去这里的路线。您可以通过解析请求标题来检测大量的开放代理服务器,但是您拥有TOR,高匿名代理,袜子代理,廉价的VPN,直接向垃圾邮件发送者,僵尸网络和无数其他方式销售,以打破利率限制。你也

如果您的主要关注点是DDOS效应,请不要担心。真正的DDOS攻击会带来肌肉或某些脆弱性,使您的服务器受到压力。无论您拥有哪种类型的网站,您都会被蜘蛛的命中以及坏人扫描漏洞的洪水泛滥。只是生活的事实。实际上,服务器上的这种逻辑几乎永远不会很好地扩展,并且可能是您对真正的DDOS攻击打开的单点故障。

对于您的最终用户(包括友好的机器人),这也可能是单一的故障点。如果合法的用户或客户被阻止,您已经有一场客户服务的噩梦,如果错误的爬网被封锁,则您向搜索流量说再见。

如果您真的不希望有人抓住您的数据,那么您可以做一些事情。如果是博客内容之类的内容,我通常会说如果您完全需要饲料,我要么不担心它,要么只有摘要RSS提要。刮擦博客内容的危险在于,实际上很容易获得文章的精确副本,垃圾邮件链接到它并将其排名,同时将原始结果从搜索结果中删除。同时,因为人们可以批量刮擦RSS饲料时,不愿意为针对特定站点而付出努力。

如果您的网站更多地是一项具有动态内容的服务,那么这是另一个故事。实际上,我刮擦了许多这样的网站,以“窃取”大量的结构化专有数据,但是有一些选择使其更难。您可以限制每个IP的请求,但是可以很容易地使用代理。对于某些真正的保护,相对简单的混淆已经很长一段路。如果您尝试执行诸如刮擦Google结果或从YouTube下载视频之类的事情,您会发现有很多可以进行反向工程师。我都这样做,但是有99%的人尝试失败,因为他们缺乏这样做的知识。他们可以刮擦代理以绕过IP限制,但不会破坏任何加密。

例如,据我记得,Google结果页面带有混淆的Javscript,该页面被注入页面加载的DOM,然后设置了某种令牌,因此您必须将它们解析出来。然后,有一个ajax请求,其中那些代币返回了混淆的JS或JSON,该请求已解码以构建结果,等等。作为开发人员,这并不难,但是绝大多数潜在的盗贼无法应付。大多数不会付出的努力。我这样做是为了包装Google真正有价值的服务,但是对于大多数其他服务,我只是在不同提供商的一些较低的悬挂水果中。

希望这对遇到它的人很有用。

我认为,关注“不可能”防止确定且精通技术的用户刮擦网站的重点过多。 @Drew Noakes指出,该网站包含汇总时具有“价值”的信息。如果网站的汇总数据很容易被不受约束的匿名用户访问,则可以防止刮擦接近“不可能”。

我建议要解决的问题不是如何防止用户刮擦聚合数据,而是可以使用哪些方法来从公共访问中删除汇总数据;从而消除了刮刀的目标,而无需执行“不可能”,以防止报废。

总数据应被视为专有公司信息。一般而言,专有公司的信息通常不向以汇总或原始形式公开提供匿名用户。我认为,防止获取有价值数据的解决方案是限制和限制对数据的访问,而不是在向用户呈现时阻止数据取消。

1]用户帐户/访问 - 在给定时间段(数据/域特定于数据)之内,没有人可以访问所有数据。用户应该能够访问与他们相关的数据,但是从问题上可以明显看出,没有用户有合法的目的来查询所有汇总数据。在不了解网站的细节的情况下,我怀疑合法的用户可能在一段时间内只需要一小部分数据子集即可。要求大大超过典型的用户需求,应阻止或限制,以使刮擦过时的耗时,并可能建立了废弃的数据。

2]操作团队通常监视指标,以确保大型分布式和复杂的系统健康。不幸的是,很难确定零星和间歇性问题的原因,而且通常很难确定存在问题而不是正常的操作波动。运营团队经常处理从许多众多指标中获取的统计分析的历史数据,并将其与当前价值进行比较,以帮助确定系统健康的重大偏差,无论是系统的时间,负载,加载,CPU利用率等。

同样,用户向数据的请求明显大于规范可以帮助识别可能正在取消数据的个人;这种方法甚至可以自动化,甚至可以进一步扩展,以查看多个帐户,以了解指示报废的模式。用户1刮擦10%,用户2刮擦下一个10%,用户3刮擦下一个10%等...像这样的模式(和其他)可以通过使用单个个人或组来提供强烈的恶意使用系统的指标。多个帐户

3]不要使最终用户可以直接访问原始的汇总数据。这里的细节很重要,但简单地说,数据应驻留在后端服务器上,并利用某些域特定的API检索。同样,我假设您不仅提供原始数据,还可以响应对某些数据子集的用户请求。例如,如果您拥有的数据是特定区域的详细人口人口统计,则合法的最终用户将仅对该数据的一部分感兴趣。例如,最终用户可能想知道与少年的家庭地址,与父母居住在多单元住房或特定城市或县的数据中。这样的请求将需要处理聚合数据,以生成最终用户感兴趣的结果数据集。从输入查询的众多潜在排列中检索到的所有结果数据集并将其完整重建总计数据将非常困难。考虑到请求#/时间,所得数据集的总数据大小以及其他潜在标记,也将受到网站安全性的约束。合并特定领域知识的良好发达的API对于确保API足够全面以实现其目的而不是过于笼统,以返回大型原始数据转储至关重要。

将用户帐户合并到网站,为用户建立使用基准,用户(或其他缓解方法)的识别和节流,这些用户(或其他缓解方法)显着偏离典型的用法模式以及创建用于请求处理/消化结果的界面集合(vs原始汇总数据)将为故意窃取您的数据而产生重大复杂性。可能不可能防止对网站数据进行报废,但是“不可能”是基于刮板易于访问的总数据。你不能刮擦看不到的东西。因此,除非您的汇总数据是未加工的文本(例如库电子书),最终用户不应访问原始的汇总数据。即使在图书馆的电子书示例中,也应阻止或限制可接受的用法模式,例如要求大量书籍。

您可以使用tordnsel检测用户 - https://www.torproject.org/projects/tordnsel.html.en.

您可以只使用此命令行/库 - https://github.com/assafmo/istorexit.

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