【问题标题】:How can a website detect automated extraction?网站如何检测自动提取?
【发布时间】:2012-02-08 20:58:48
【问题描述】:

我正在开发一个简单的应用程序以从网站中提取一些货币转换,这时我收到一条错误消息(如下),指出他们没有自动提取政策。

禁止自动提取
禁止自动提取我们的内容。见http://www.xe.com/errors/noautoextract.htm

我并没有真正打算违反他们的政策,但我很好奇他们是如何判断的。谁能赐教?

【问题讨论】:

    标签: java url iostream


    【解决方案1】:

    1) 用户代理

    2) 引入 Javascript 弹出窗口。类似于Click OK to enter

    3) 如果您不在 NAT 之后,则计算来自特定 IP 地址的请求/小时数。

    如需了解更多详情,请查看 asheesh laroia 的 Pycon 演讲 web-strategies-for-programming-websites-that-don-t-expected-it

    也可以看看A Standard for Robot Exclusion

    一些网站也使用

    4) 验证码和重新验证码

    5) 重定向,这意味着您需要添加 HTTP Referrer 才能获取数据。

    【讨论】:

      【解决方案2】:

      通过实现Robot Exclusion protocol,在 HTTP 服务器级别完成。

      来自Robots exclusion standard

      机器人排除标准,也称为机器人排除标准 协议或 robots.txt 协议,是防止 合作网络爬虫和其他网络机器人访问所有或 以其他方式可公开查看的网站的一部分。机器人是 经常被搜索引擎用来对网站进行分类和存档,或者 由网站管理员校对源代码。

      【讨论】:

      • 这并不能阻止那些简单地选择忽略 robots.txt 文件的坏机器人。
      【解决方案3】:

      我认为他们至少观察两个参数:

      • 一段时间内来自同一 IP 的查询次数
      • HTTP 查询中的 User-Agent 标头。如果它是空的,或者看起来不像 Web 浏览器的 User-Agent 标头,特别是如果它指示“Java”或类似的东西;),他们可以认为这不是“合理使用”。

      【讨论】:

      • 嗯,我以为他们会计算查询,但我只做了一个。不过,我不熟悉用户代理。
      【解决方案4】:

      基本上,如果您请求一个 URL 并返回 HTML 页面,那么网站几乎无能为力 - 嗯,这正是网络服务器的用途。

      但是有几个techniques 可以阻止机器人,而不是人类请求页面。其中一些是对“行为”的机器人的提示,另一些则试图检测机器人并阻止它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-17
        • 2019-07-19
        • 1970-01-01
        • 2018-06-05
        • 2015-04-23
        • 1970-01-01
        相关资源
        最近更新 更多