Supervision for online contests

A small script that any contest page can include. It asks for full screen, notices when a contestant leaves the page, refuses copy and paste, and keeps a log that shows if it was edited afterwards. No camera, no microphone, no account.

Try a supervised session

Start, then try to cheat: switch tabs, leave full screen, paste some text. Every attempt appears in the log below. Nothing is sent anywhere; the log stays in this page.

What it records

Full screenAsks for full screen at the start and records every exit, with the time.
Leaving the pageTab switches and window changes, with how long the contestant was away.
ClipboardCopy, cut and paste are refused and recorded.
ShortcutsPrint, save, find, view source and developer tools shortcuts are refused.
Second screenReported when the browser can tell that a second display is attached.
Tamper-evident logEach entry carries the hash of the previous one, so edits break the chain.

What it cannot do

Add it to your contest

One file, no dependencies, about 3 KB compressed. Free to use.

<script src="https://vladconstantinescu.com/proctor/proctor.js"></script>
<script>
  var session = Proctor.start({
    requireFullscreen: true,
    onViolation: function (count, event) { console.log(count, event.type); }
  });
  startButton.onclick = function () { session.enterFullscreen(); };

  // when the contest ends
  var report = session.stop();          // events, summary, chain
  Proctor.verify(report) === -1;        // true if the log was not edited
</script>