将每个来宾用户的操作限制为一次(无需登录)
Limiting an action to once per guest user (without log in)
为了提高参与度,最好允许未登录网站的用户对某个主题进行投票。显然,每个主题每个用户只能投一票。我很清楚理想的解决方案实际上是强制用户登录或创建帐户,但(部分作为挑战)我想避免这种情况。
到目前为止,我的研究指出了以下的一些组合:
- 记录 IP 地址,并根据此信息进行速率限制。这会给具有公共地址的环境中的用户带来问题。
- 设置普通cookie。这很容易被欺骗/删除。
- 使用指纹识别方法,例如fingerprintjs2。这对于普通用户来说更难欺骗,但不会阻止机器人。我还可以想象同一个工作场所的用户可能共享相同的指纹 - 我说得对吗?
- 设置某种难以删除且难以欺骗的 supercookie。
我错过了什么?我知道这并不理想,但是否有任何类型的协议?
没有身份验证,就无法以排除机器人的方式进行验证。
但我相信有一个可行的中间立场。
由于他们将是匿名投票,请尝试得出以下两个数字:
- 每分钟来自 IP 的匿名投票率,无论是人还是机器人,您都愿意让它发生。
和
- 特定 topic/pool 可以获得的每分钟匿名投票率。这可能是一个更高的数字,但它有助于控制使用多个 IP 进行投票的机器人。
如果满足其中任何一个比率,您只需通知用户已达到每分钟匿名投票的限制,他们必须稍等片刻或注册。
这样一来,您仍然可以从这些用户那里获得参与度,而不必太担心机器人。
为了提高参与度,最好允许未登录网站的用户对某个主题进行投票。显然,每个主题每个用户只能投一票。我很清楚理想的解决方案实际上是强制用户登录或创建帐户,但(部分作为挑战)我想避免这种情况。
到目前为止,我的研究指出了以下的一些组合:
- 记录 IP 地址,并根据此信息进行速率限制。这会给具有公共地址的环境中的用户带来问题。
- 设置普通cookie。这很容易被欺骗/删除。
- 使用指纹识别方法,例如fingerprintjs2。这对于普通用户来说更难欺骗,但不会阻止机器人。我还可以想象同一个工作场所的用户可能共享相同的指纹 - 我说得对吗?
- 设置某种难以删除且难以欺骗的 supercookie。
我错过了什么?我知道这并不理想,但是否有任何类型的协议?
没有身份验证,就无法以排除机器人的方式进行验证。
但我相信有一个可行的中间立场。
由于他们将是匿名投票,请尝试得出以下两个数字:
- 每分钟来自 IP 的匿名投票率,无论是人还是机器人,您都愿意让它发生。
和
- 特定 topic/pool 可以获得的每分钟匿名投票率。这可能是一个更高的数字,但它有助于控制使用多个 IP 进行投票的机器人。
如果满足其中任何一个比率,您只需通知用户已达到每分钟匿名投票的限制,他们必须稍等片刻或注册。
这样一来,您仍然可以从这些用户那里获得参与度,而不必太担心机器人。