我开发了这个简单的应用程序,只需一个按钮即可触发不同的文本更改。我的目标是区分人类用户和潜在的机器人。如果点击发生得太快,则可能是机器人,这时我就想展示 ReCaptcha。
我的方法包括在 5 分钟窗口内监控第一次按钮单击和后续按钮单击的时间间隔。如果点击速度保持极其一致,例如每 10 毫秒点击一次,则这是潜在机器人活动的危险信号。人类通常无法维持这样的机器人精度,无论间隔是 10 毫秒、1 秒还是 2 秒。
现在我很困惑的是,这个方法正确吗?如果是这样,可以做什么(在代码中)?
这是一个屏幕截图。 https://imgur.com/a/CK1ETWO
frameLayoutBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.startAnimation(animation);
ClickCounter++;
catStr = getCatTextFromDatabase(ClickCounter);
if (ClickCounter > 1000){
CountText.setText("Count:" + ClickCounter);
}
if (catStr != null && !catStr.isEmpty()) {
CatText.setText(catStr);
}
}
private String getCatTextFromDatabase(long counter) {
DatabaseHelper dbHelper = new DatabaseHelper(getApplicationContext());
return dbHelper.getTextForCounter(counter);
}
});
我从未在生产环境中实际使用过这样的东西,但我建议两件事:
n
或辅助类中记录最后一次 Collection
单击时间(或单击之间的时间),在添加时自动处理旧的、现在不相关的条目。我喜欢 java.util.Stack
具有类似目的的帮助类。