【问题标题】:Block Website Scraping by Google Docs通过 Google Docs 阻止网站抓取
【发布时间】:2017-01-24 14:40:59
【问题描述】:

我经营一个网站,以图表/表格格式提供各种数据供人们阅读。最近我注意到来自 Google Docs 的网站请求有所增加。查看 IP 和用户代理,它似乎确实来自 Google 服务器 - example IP lookup here

点击次数在每天 2,500 到 10,000 个请求之间。

我假设有人创建了一个或多个从我的网站抓取数据的 Google 表格(可能使用 IMPORTHTML 函数或类似函数)。我宁愿这没有发生(因为我不知道数据是否被正确归因)。

是否有一种首选的方式来阻止 Google 支持/批准的这种流量?

我宁愿不根据 IP 地址进行屏蔽,因为屏蔽 Google 服务器感觉不对,可能会导致未来出现问题,或者 IP 可能会发生变化。目前我正在阻止(返回 403 状态)基于包含 GoogleDocsdocs.google.com 的用户代理。

目前流量主要来自 66.249.89.221 和 66.249.89.223,始终使用用户代理Mozilla/5.0 (compatible; GoogleDocs; apps-spreadsheets; http://docs.google.com)

作为第二个问题:有没有办法跟踪文档或其帐户所有者?我可以访问他们正在访问的 URL,但由于请求似乎是通过 Google Docs 服务器代理(HTTP 日志中没有Referer、Cookie 或其他此类数据)。

谢谢。

【问题讨论】:

    标签: web-scraping google-sheets google-docs google-sheets-importxml


    【解决方案1】:

    阻止用户代理是一个很好的解决方案,因为似乎没有一种方法可以设置不同的用户代理并仍然使用 INPUTHTML 功能——而且因为你很高兴从文档中禁止“所有”使用——床单,太完美了。

    额外的想法,虽然如果完全禁止看起来不愉快:

    1. 速率限制:正如您所说,您认识到它主要来自两个 IP 并且始终使用相同的用户代理,只是减慢您的响应速度。只要请求是串行的,您就可以提供数据,但一次就足以阻止抓取。将您的响应(对可疑的抓取工具)延迟 20 或 30 秒。

    2. 重定向到“您被阻止”屏幕,或带有“默认”数据的屏幕(即,可抓取,但不包含当前数据)。比基本的 403 更好,因为它会告诉人们它不是用来抓取的,然后您可以引导他们购买访问权限(或至少向您请求密钥。)

    【讨论】:

      【解决方案2】:

      您可以通过在第一次尝试时设置 cookie 来强制解决问题,并仅在 cookie 存在时才提供响应。这样,任何“简单”导入都将不起作用,因为在第一个请求中 cookie 不存在,因此第三方将无法读取任何内容。

      【讨论】:

        猜你喜欢
        • 2015-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-17
        • 2020-07-28
        • 1970-01-01
        • 1970-01-01
        • 2012-02-24
        相关资源
        最近更新 更多