我有一个页面,允许用户观看YouTube视频,并在视频结束播放后自动收到奖励。这是通过Youtube JS API完成的:
伪代码:
function videoStoppedPlaying() {
requestRewardFromServer(); // currently uses an XMLHttpRequest
}
这种方法的问题是可以打开浏览器控制台并手动调用requestRewardFromServer()
。
我已经对代码进行了混淆,但这就像把绷带放在船上的一个洞里;它没有解决问题。
编辑:到目前为止,唯一接近的解决方案是使用时间戳。尽管这不是理想的解决方案,但我会将建议铭记于心,并尝试进一步模糊JS代码。
有什么建议吗?
答案 0 :(得分:0)
获得奖励时,请存储Youtube视频ID,以便每个视频获得至少一个奖励。当然,你必须跟踪视频ID,否则你可以传递任何字符串。
为了防止用户在不观看视频的情况下获得奖励,您可以构建一些计时器,以便在超过时间后获得奖励。
答案 1 :(得分:0)
以下是我对此的看法 -
我觉得你需要潜入服务器端。
video_length
= some_length。video_started
= some_time。 requestRewardFromServer()
时,请将current time
与video_start
进行比较。它需要greater than or equal to
video_length
。如果满足条件,奖励他们,否则不。您可能会说这并不能保证观看完整的视频。是的,但至少那个试图欺骗的人必须等待那么久。
答案 2 :(得分:0)
控制用户实际观看视频的唯一解决方案,除了检查结束时间 - 开始时间与视频长度之外,还要实际检查用户是否真正在观看视频。我想你有一个功能可以告诉你用户的视频(或百分比)的分钟。因此,您可以通过javascript定期通知服务器:例如,每5秒或每5%的视频,客户端必须向服务器发送xmlhttp请求以通知它。服务器将检查客户端是否按相应的顺序接收了所有请求(或者差不多,也许他重新分配了部分请求,您将不得不找出合适的算法)。
这并不容易,它需要一些工作,并不是100%'防弹'。但是,任何与javascript相关的内容仍然可以在本地操作。