我如何知道用户是否生成了点击事件? (他用鼠标)。
相反的是由一段javascript触发的点击事件。
在显示广告的javascript库中思考。你不希望任何使用图书馆的人欺骗你。
您需要确保该事件不是伪造的。
答案 0 :(得分:2)
服务器永远不会信任客户端代码。任何人都可以打开浏览器控制台并完全更改代码。
您可能会做出不同的事情来混淆机器人或自动脚本,但如果您试图阻止专门针对您网站的伪造,那么您将无能为力。
答案 1 :(得分:1)
说实话,除非你遵循这些非常简单的建议, ANY 尝试使这种防篡改失败将会失败:
也就是说,最简单的用例(广告)是嵌入图像中的浮动按钮,随机改变位置。单击时,您将发送坐标和使用服务器端的代码来重建按钮的位置,从而确定坐标是否位于按钮边界内。
一台机器会向代码和服务器端发送错误的(随机)坐标,你会区分它,因为点击不在边界内。
这个解决方案显然可以增强:
您所要做的就是去任何有广告的网站,看看他们做了什么:带有微型游戏的SWF插件,诱使您点击它。
顺便说一句:我不喜欢网页上的广告,所以也许你甚至没有实现那些东西......答案 2 :(得分:0)
您可以检查是否在e.toString()
的字符串表示中找到字符串'Mouse':
document.addEventListener('click', function(e){
console.log(e.toString().indexOf('Mouse') !== -1)
});
如果事件是由代码生成的,那么e.toString()
会返回[object Event]
,但如果它是真正的鼠标事件,它将返回[object MouseEvent]
。我所做的就是检查“鼠标”是否在该字符串中以确定它是否确实是真正的鼠标点击。
答案 3 :(得分:0)
您可能想尝试这样:
document.addEventListener('click', function(e){
var w=[]["filter"]["constructor"]("return this")();//returns window, thanks to JSFuck
console.log(e instanceOf MouseEvent && e.view==w && e.srcElement && e.srcElement.ownerDocument.parentWindow==w && e.target && e.target.ownerDocument.parentWindow==w);
});
它检查它是否是MouseEvent
对象的实例,然后检查window
是否相同,e.srcElement
是否存在以及它是否在同一个window
如果e.target
存在且位于同一window
。