检测 fake-user-agent(又名抓取器)请求 GET 我的网络服务器?

Detecting fake-user-agent(aka scraper) requesting GET my webserver?

我有一个 Nginx 服务器为两个网站提供服务。我的问题是是否有一种方法可以检测并阻止所有在 header 上修改了 user-agent 的 Get 请求!然后我可以确定没有人可以抓取我的帖子。我很想在此方法中使用 Net-Filter,但我不确定它是否如此强大!

简单回答:没有。

您可以查看用户代理 headers,这取决于爬虫可能会揭示它并使其显而易见,但是,没有什么能阻止我(或其他任何人)制作与普通浏览器。客户端,不管是浏览器还是程序员写的脚本。

您可以尝试使用白名单,阻止所有不在白名单上的内容,但是您很快就会阻止任何 non-mainstream 浏览器,更不用说您还可以轻松地开始阻止主流浏览器的新版本。需要不断的更新和维护,而且还是很容易绕过的。

黑名单根本行不通,因为您无法预测开发人员可以 "tell" 使用哪种用户代理。

现在,理论上,您可以分析用户行为并据此做出决策。然而,这将需要大量的工作,并且很容易开始对合法流量造成滋扰,而它可能不适用于像样的抓取工具。