我不得不为我们的网站编写一个页面点击计数器。(仅限客户)我知道我的柜台被一些客户滥用,他们编写了一个应用程序,白天多次点击该页面。
例如,是否可以通过使用 .Net WebClient 请求页面来影响命中计数器?我试图找出方法以及如何对抗它。
谢谢
例如,是否可以通过使用 .Net WebClient 请求页面来影响命中计数器?
绝对地。如果客户在正确获取 cookie、用户代理字符串和辅助请求(例如请求页面引用的 JavaScript 和 CSS 资源)方面投入了足够多的工作,那么服务器就不可能判断请求是来自 .NETWebClient
还是来自一个真正的网络浏览器。
但是还有另一个问题:客户甚至不需要花费大量精力来编写程序来自动加载您的站点并采取一些行动。使用Selenium等工具,他们可以编写实际加载 Web 浏览器的脚本,然后执行与真实用户可能执行的相同操作。因此,即使您修改您的命中计数器以包括对来自真实 Web 浏览器的请求的一些神话般的超级复杂检查,您仍然会被启动真实 Web 浏览器以向您的站点发出自动请求的用户所阻挠。
我试图找出方法以及如何对抗它。
如果没有这个命中计数器的代码,我就不能提出太多的改进来限制客户通过编写程序来增加命中计数器的能力。您可以使用验证码,但这对于诚实的客户来说是一个非常大的不便。
您说您知道某些客户正在滥用该网站。大概,您知道这些客户是谁,并且有一些通常有用的技巧可以使不诚实行为不付钱。您可以将这些客户踢出网站,因为他们不诚实。在一个稍微不那么激烈的措施中,您可以包含一个您的命中计数器忽略的客户用户名黑名单,然后这些客户的程序实际上不会影响命中计数器。在这些客户几乎看不到的更温和的措施中,您可以使这些客户的页面加载速度变慢,这将限制他们的恶意行为的影响。
您可以通过使用 cookie、服务器端会话或记录 IP 地址来跟踪人类和自动访问者来防止滥用,并禁止每次重复访问的计数。