阻止Google文档进行网站抓取

时间:2017-01-24 14:41:00

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

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

点击次数为每天2,500到10,000次请求。

我认为有人创建了一个或多个Google表格从我的网站上抓取数据(可能使用IMPORTHTML功能或类似功能)。我希望这不会发生(因为我不知道数据是否正确归属)。

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

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

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

作为第二个问题:是否有办法跟踪文档或其帐户所有者?我可以访问他们正在访问的网址,但是当请求看起来很少时通过Google Docs服务器代理(HTTP日志中没有Referer,Cookies或其他此类数据)。

谢谢。

2 个答案:

答案 0 :(得分:5)

阻止User-Agent是一个很好的解决方案,因为似乎没有办法设置不同的用户代理并仍然使用INPUTHTML功能 - 因为你很乐意禁止&#39 ;所有'从文档表中使用,这是完美的。

额外的想法,但如果完全禁止似乎不愉快:

  1. 速率限制:正如您所说,您认识到它主要来自两个IP且始终使用相同的用户代理,只会减慢您的响应速度。只要请求是连续的,您就可以提供数据,但是在通过时可能足以阻止抓取。将您的反应(对于可疑的刮刀)延迟20或30秒。

  2. 重定向到"您已被阻止"屏幕,或屏幕与"默认"数据(即可废弃,但不包含当前数据)。比基本403好,因为它会告诉人类它不是用于刮擦,然后你可以指导他们购买访问权限(或者至少要求你提供密钥。)

答案 1 :(得分:0)

您可以通过在第一次尝试时设置cookie来强制解决问题,并仅在存在cookie时提供响应。这样任何"简单"导入将不会像在第一个请求中那样工作,因为cookie不存在,所以第三方无需阅读。