Domain stvmps.win
CLOUDFLARENET
Software information

cloudflare cloudflare

tcp/443 tcp/80 tcp/8443

  • Open service 104.21.38.253:80 · stvmps.win

    2026-01-23 07:38

    HTTP/1.1 200 OK
    Date: Fri, 23 Jan 2026 07:38:27 GMT
    Content-Type: text/html
    Transfer-Encoding: chunked
    Connection: close
    Server: cloudflare
    Last-Modified: Mon, 06 Jan 2025 13:20:50 GMT
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=3vu5jMKnqSCCtg%2FAcI9CbYqABZMcZGaDHups5HoWlbH0fvfVQDCeRmPsDhIqEC6MLSroEjYPcLyESwQVKfenshCqLAIRx17TmZM%3D"}]}
    Accept-Ranges: bytes
    cf-cache-status: DYNAMIC
    Server-Timing: cfCacheStatus;desc="DYNAMIC"
    Server-Timing: cfEdge;dur=16,cfOrigin;dur=473
    CF-RAY: 9c25a1b04fb8fd0a-SIN
    alt-svc: h3=":443"; ma=86400
    
    Page title: Basic Snake HTML Game
    
    <!DOCTYPE html>
    <html>
    <head>
      <title>Basic Snake HTML Game</title>
      <meta charset="UTF-8">
      <style>
      html, body {
        height: 100%;
        margin: 0;
      }
    
      body {
        background: black;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      canvas {
        border: 1px solid white;
      }
      </style>
    </head>
    <body>
    <canvas width="400" height="400" id="game"></canvas>
    <script>
    var canvas = document.getElementById('game');
    var context = canvas.getContext('2d');
    
    // the canvas width & height, snake x & y, and the apple x & y, all need to be a multiples of the grid size in order for collision detection to work
    // (e.g. 16 * 25 = 400)
    var grid = 16;
    var count = 0;
    
    var snake = {
      x: 160,
      y: 160,
    
      // snake velocity. moves one grid length every frame in either the x or y direction
      dx: grid,
      dy: 0,
    
      // keep track of all grids the snake body occupies
      cells: [],
    
      // length of the snake. grows when eating an apple
      maxCells: 4
    };
    var apple = {
      x: 320,
      y: 320
    };
    
    // get random whole numbers in a specific range
    // @see https://stackoverflow.com/a/1527820/2124254
    function getRandomInt(min, max) {
      return Math.floor(Math.random() * (max - min)) + min;
    }
    
    // game loop
    function loop() {
      requestAnimationFrame(loop);
    
      // slow game loop to 15 fps instead of 60 (60/15 = 4)
      if (++count < 4) {
        return;
      }
    
      count = 0;
      context.clearRect(0,0,canvas.width,canvas.height);
    
      // move snake by it's velocity
      snake.x += snake.dx;
      snake.y += snake.dy;
    
      // wrap snake position horizontally on edge of screen
      if (snake.x < 0) {
        snake.x = canvas.width - grid;
      }
      else if (snake.x >= canvas.width) {
        snake.x = 0;
      }
    
      // wrap snake position vertically on edge of screen
      if (snake.y < 0) {
        snake.y = canvas.height - grid;
      }
      else if (snake.y >= canvas.height) {
        snake.y = 0;
      }
    
      // keep track of where snake has been. front of the array is always the head
      snake.cells.unshift({x: snake.x, y: snake.y});
    
      // remove cells as we move away from them
      if (snake.cells.length > snake.maxCells) {
        snake.cells.pop();
      }
    
      // draw apple
      context.fillStyle = 'red';
      context.fillRect(apple.x, apple.y, grid-1, grid-1);
    
      // draw snake one cell at a time
      context.fillStyle = 'green';
      snake.cells.forEach(function(cell, index) {
    
        // drawing 1 px smaller than the grid creates a grid effect in the snake body so you can see how long it is
        context.fillRect(cell.x, cell.y, grid-1, grid-1);
    
        // snake ate apple
        if (cell.x === apple.x && cell.y === apple.y) {
          snake.maxCells++;
    
          // canvas is 400x400 which is 25x25 grids
          apple.x = getRandomInt(0, 25) * grid;
          apple.y = getRandomInt(0, 25) * grid;
        }
    
        // check collision with all cells after this one (modified bubble sort)
        for (var i = index + 1; i < snake.cells.length; i++) {
    
          // snake occupies same space as a body part. reset game
          if (cell.x === snake.cells[i].x && cell.y === snake.cells[i].y) {
            snake.x = 160;
            snake.y = 160;
            snake.cells = [];
            snake.maxCells = 4;
            snake.dx = grid;
            snake.dy = 0;
    
            apple.x = getRandomInt(0, 25) * grid;
            apple.y = getRandomInt(0, 25) * grid;
          }
        }
      });
    }
    
    // listen to keyboard events to move the snake
    document.addEventListener('keydown', function(e) {
      // prevent snake from backtracking on itself by checking that it's
      // not already moving on the same axis (pressing left while moving
      // left won't do anything, and pressing right while moving left
      // shouldn't let you collide with your own body)
    
      // left arrow key
      if (e.which === 37 && snake.dx === 0) {
        snake.dx = -grid;
        snake.dy = 0;
      }
      // up arrow key
      else if (e.which === 38 && snake.dy === 0) {
        snake.dy = -grid;
        snake.dx = 0;
      }
      // right arrow key
      else if (e.which === 39 && snake.dx === 0) {
        snake.dx = grid;
        snake.dy = 0;
      }
     
    Found 2026-01-23 by HttpPlugin
    Create report
  • Open service 2606:4700:3037::ac43:8d99:8443 · stvmps.win

    2026-01-23 07:38

    HTTP/1.1 521 <none>
    Date: Fri, 23 Jan 2026 07:38:27 GMT
    Content-Type: text/plain; charset=UTF-8
    Content-Length: 15
    Connection: close
    Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Expires: Thu, 01 Jan 1970 00:00:01 GMT
    Referrer-Policy: same-origin
    Server-Timing: cfEdge;dur=182,cfOrigin;dur=0
    X-Frame-Options: SAMEORIGIN
    Server: cloudflare
    CF-RAY: 9c25a1ae1ee3ce5a-SIN
    alt-svc: h3=":8443"; ma=86400
    
    
    error code: 521
    Found 2026-01-23 by HttpPlugin
    Create report
  • Open service 104.21.38.253:8443 · stvmps.win

    2026-01-23 07:38

    HTTP/1.1 521 <none>
    Date: Fri, 23 Jan 2026 07:38:27 GMT
    Content-Type: text/plain; charset=UTF-8
    Content-Length: 15
    Connection: close
    Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Expires: Thu, 01 Jan 1970 00:00:01 GMT
    Referrer-Policy: same-origin
    Server-Timing: cfEdge;dur=269,cfOrigin;dur=0
    X-Frame-Options: SAMEORIGIN
    Server: cloudflare
    CF-RAY: 9c25a1ad5e704098-SIN
    alt-svc: h3=":8443"; ma=86400
    
    
    error code: 521
    Found 2026-01-23 by HttpPlugin
    Create report
  • Open service 104.21.38.253:443 · stvmps.win

    2026-01-23 07:38

    HTTP/1.1 200 OK
    Date: Fri, 23 Jan 2026 07:38:28 GMT
    Content-Type: text/html
    Transfer-Encoding: chunked
    Connection: close
    Server: cloudflare
    Last-Modified: Mon, 06 Jan 2025 13:20:50 GMT
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=cZ5OKlLexeM2lrcGHbXeYDFbUoAJCtXkz0iqr7rHNghuFGdMHA35J%2FFEYpYfThYJvpIMx4FTXBG64OqRr5A5mUC5H77Iu465Qqs%3D"}]}
    Accept-Ranges: bytes
    cf-cache-status: DYNAMIC
    Server-Timing: cfCacheStatus;desc="DYNAMIC"
    Server-Timing: cfEdge;dur=10,cfOrigin;dur=784
    CF-RAY: 9c25a1b0ad0440d5-BOM
    alt-svc: h3=":443"; ma=86400
    
    Page title: Basic Snake HTML Game
    
    <!DOCTYPE html>
    <html>
    <head>
      <title>Basic Snake HTML Game</title>
      <meta charset="UTF-8">
      <style>
      html, body {
        height: 100%;
        margin: 0;
      }
    
      body {
        background: black;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      canvas {
        border: 1px solid white;
      }
      </style>
    </head>
    <body>
    <canvas width="400" height="400" id="game"></canvas>
    <script>
    var canvas = document.getElementById('game');
    var context = canvas.getContext('2d');
    
    // the canvas width & height, snake x & y, and the apple x & y, all need to be a multiples of the grid size in order for collision detection to work
    // (e.g. 16 * 25 = 400)
    var grid = 16;
    var count = 0;
    
    var snake = {
      x: 160,
      y: 160,
    
      // snake velocity. moves one grid length every frame in either the x or y direction
      dx: grid,
      dy: 0,
    
      // keep track of all grids the snake body occupies
      cells: [],
    
      // length of the snake. grows when eating an apple
      maxCells: 4
    };
    var apple = {
      x: 320,
      y: 320
    };
    
    // get random whole numbers in a specific range
    // @see https://stackoverflow.com/a/1527820/2124254
    function getRandomInt(min, max) {
      return Math.floor(Math.random() * (max - min)) + min;
    }
    
    // game loop
    function loop() {
      requestAnimationFrame(loop);
    
      // slow game loop to 15 fps instead of 60 (60/15 = 4)
      if (++count < 4) {
        return;
      }
    
      count = 0;
      context.clearRect(0,0,canvas.width,canvas.height);
    
      // move snake by it's velocity
      snake.x += snake.dx;
      snake.y += snake.dy;
    
      // wrap snake position horizontally on edge of screen
      if (snake.x < 0) {
        snake.x = canvas.width - grid;
      }
      else if (snake.x >= canvas.width) {
        snake.x = 0;
      }
    
      // wrap snake position vertically on edge of screen
      if (snake.y < 0) {
        snake.y = canvas.height - grid;
      }
      else if (snake.y >= canvas.height) {
        snake.y = 0;
      }
    
      // keep track of where snake has been. front of the array is always the head
      snake.cells.unshift({x: snake.x, y: snake.y});
    
      // remove cells as we move away from them
      if (snake.cells.length > snake.maxCells) {
        snake.cells.pop();
      }
    
      // draw apple
      context.fillStyle = 'red';
      context.fillRect(apple.x, apple.y, grid-1, grid-1);
    
      // draw snake one cell at a time
      context.fillStyle = 'green';
      snake.cells.forEach(function(cell, index) {
    
        // drawing 1 px smaller than the grid creates a grid effect in the snake body so you can see how long it is
        context.fillRect(cell.x, cell.y, grid-1, grid-1);
    
        // snake ate apple
        if (cell.x === apple.x && cell.y === apple.y) {
          snake.maxCells++;
    
          // canvas is 400x400 which is 25x25 grids
          apple.x = getRandomInt(0, 25) * grid;
          apple.y = getRandomInt(0, 25) * grid;
        }
    
        // check collision with all cells after this one (modified bubble sort)
        for (var i = index + 1; i < snake.cells.length; i++) {
    
          // snake occupies same space as a body part. reset game
          if (cell.x === snake.cells[i].x && cell.y === snake.cells[i].y) {
            snake.x = 160;
            snake.y = 160;
            snake.cells = [];
            snake.maxCells = 4;
            snake.dx = grid;
            snake.dy = 0;
    
            apple.x = getRandomInt(0, 25) * grid;
            apple.y = getRandomInt(0, 25) * grid;
          }
        }
      });
    }
    
    // listen to keyboard events to move the snake
    document.addEventListener('keydown', function(e) {
      // prevent snake from backtracking on itself by checking that it's
      // not already moving on the same axis (pressing left while moving
      // left won't do anything, and pressing right while moving left
      // shouldn't let you collide with your own body)
    
      // left arrow key
      if (e.which === 37 && snake.dx === 0) {
        snake.dx = -grid;
        snake.dy = 0;
      }
      // up arrow key
      else if (e.which === 38 && snake.dy === 0) {
        snake.dy = -grid;
        snake.dx = 0;
      }
      // right arrow key
      else if (e.which === 39 && snake.dx === 0) {
        snake.dx = grid;
        snake.dy = 0;
      }
     
    Found 2026-01-23 by HttpPlugin
    Create report
  • Open service 2606:4700:3034::6815:26fd:80 · stvmps.win

    2026-01-23 07:38

    HTTP/1.1 200 OK
    Date: Fri, 23 Jan 2026 07:38:26 GMT
    Content-Type: text/html
    Transfer-Encoding: chunked
    Connection: close
    Server: cloudflare
    Last-Modified: Mon, 06 Jan 2025 13:20:50 GMT
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=6qVS7rEX9FaGKEnoNLx8UowyZMNf2t%2FnBioJbQy0Aet89rdO1ID4cXENHSlmxVadrKUezzq6sQWrSNN3bT%2F5x3VIOji4B9YmZ%2BPTgMecq%2Fczy5yqWkM%3D"}]}
    Accept-Ranges: bytes
    cf-cache-status: DYNAMIC
    Server-Timing: cfCacheStatus;desc="DYNAMIC"
    Server-Timing: cfEdge;dur=19,cfOrigin;dur=193
    CF-RAY: 9c25a1ad0f9236c2-YYZ
    alt-svc: h3=":443"; ma=86400
    
    Page title: Basic Snake HTML Game
    
    <!DOCTYPE html>
    <html>
    <head>
      <title>Basic Snake HTML Game</title>
      <meta charset="UTF-8">
      <style>
      html, body {
        height: 100%;
        margin: 0;
      }
    
      body {
        background: black;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      canvas {
        border: 1px solid white;
      }
      </style>
    </head>
    <body>
    <canvas width="400" height="400" id="game"></canvas>
    <script>
    var canvas = document.getElementById('game');
    var context = canvas.getContext('2d');
    
    // the canvas width & height, snake x & y, and the apple x & y, all need to be a multiples of the grid size in order for collision detection to work
    // (e.g. 16 * 25 = 400)
    var grid = 16;
    var count = 0;
    
    var snake = {
      x: 160,
      y: 160,
    
      // snake velocity. moves one grid length every frame in either the x or y direction
      dx: grid,
      dy: 0,
    
      // keep track of all grids the snake body occupies
      cells: [],
    
      // length of the snake. grows when eating an apple
      maxCells: 4
    };
    var apple = {
      x: 320,
      y: 320
    };
    
    // get random whole numbers in a specific range
    // @see https://stackoverflow.com/a/1527820/2124254
    function getRandomInt(min, max) {
      return Math.floor(Math.random() * (max - min)) + min;
    }
    
    // game loop
    function loop() {
      requestAnimationFrame(loop);
    
      // slow game loop to 15 fps instead of 60 (60/15 = 4)
      if (++count < 4) {
        return;
      }
    
      count = 0;
      context.clearRect(0,0,canvas.width,canvas.height);
    
      // move snake by it's velocity
      snake.x += snake.dx;
      snake.y += snake.dy;
    
      // wrap snake position horizontally on edge of screen
      if (snake.x < 0) {
        snake.x = canvas.width - grid;
      }
      else if (snake.x >= canvas.width) {
        snake.x = 0;
      }
    
      // wrap snake position vertically on edge of screen
      if (snake.y < 0) {
        snake.y = canvas.height - grid;
      }
      else if (snake.y >= canvas.height) {
        snake.y = 0;
      }
    
      // keep track of where snake has been. front of the array is always the head
      snake.cells.unshift({x: snake.x, y: snake.y});
    
      // remove cells as we move away from them
      if (snake.cells.length > snake.maxCells) {
        snake.cells.pop();
      }
    
      // draw apple
      context.fillStyle = 'red';
      context.fillRect(apple.x, apple.y, grid-1, grid-1);
    
      // draw snake one cell at a time
      context.fillStyle = 'green';
      snake.cells.forEach(function(cell, index) {
    
        // drawing 1 px smaller than the grid creates a grid effect in the snake body so you can see how long it is
        context.fillRect(cell.x, cell.y, grid-1, grid-1);
    
        // snake ate apple
        if (cell.x === apple.x && cell.y === apple.y) {
          snake.maxCells++;
    
          // canvas is 400x400 which is 25x25 grids
          apple.x = getRandomInt(0, 25) * grid;
          apple.y = getRandomInt(0, 25) * grid;
        }
    
        // check collision with all cells after this one (modified bubble sort)
        for (var i = index + 1; i < snake.cells.length; i++) {
    
          // snake occupies same space as a body part. reset game
          if (cell.x === snake.cells[i].x && cell.y === snake.cells[i].y) {
            snake.x = 160;
            snake.y = 160;
            snake.cells = [];
            snake.maxCells = 4;
            snake.dx = grid;
            snake.dy = 0;
    
            apple.x = getRandomInt(0, 25) * grid;
            apple.y = getRandomInt(0, 25) * grid;
          }
        }
      });
    }
    
    // listen to keyboard events to move the snake
    document.addEventListener('keydown', function(e) {
      // prevent snake from backtracking on itself by checking that it's
      // not already moving on the same axis (pressing left while moving
      // left won't do anything, and pressing right while moving left
      // shouldn't let you collide with your own body)
    
      // left arrow key
      if (e.which === 37 && snake.dx === 0) {
        snake.dx = -grid;
        snake.dy = 0;
      }
      // up arrow key
      else if (e.which === 38 && snake.dy === 0) {
        snake.dy = -grid;
        snake.dx = 0;
      }
      // right arrow key
      else if (e.which === 39 && snake.dx === 0) {
        snake.dx = grid;
        snake.dy = 0;
      }
     
    Found 2026-01-23 by HttpPlugin
    Create report
  • Open service 2606:4700:3037::ac43:8d99:80 · stvmps.win

    2026-01-23 07:38

    HTTP/1.1 200 OK
    Date: Fri, 23 Jan 2026 07:38:26 GMT
    Content-Type: text/html
    Transfer-Encoding: chunked
    Connection: close
    Server: cloudflare
    Last-Modified: Mon, 06 Jan 2025 13:20:50 GMT
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=EP3Pv93P7L74RmgLRS2kvTXDwFIkcQjY6R4Vcrh2jHWe%2BMIs6OHaXGjLap7u760%2Bgko0%2FI%2Fe6cE%2BSWMcqxq%2FZig1iZaaamEBBH0mFO%2FhUFodhM7irXU%3D"}]}
    Accept-Ranges: bytes
    cf-cache-status: DYNAMIC
    Server-Timing: cfCacheStatus;desc="DYNAMIC"
    Server-Timing: cfEdge;dur=12,cfOrigin;dur=155
    CF-RAY: 9c25a1ac1e763d71-EWR
    alt-svc: h3=":443"; ma=86400
    
    Page title: Basic Snake HTML Game
    
    <!DOCTYPE html>
    <html>
    <head>
      <title>Basic Snake HTML Game</title>
      <meta charset="UTF-8">
      <style>
      html, body {
        height: 100%;
        margin: 0;
      }
    
      body {
        background: black;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      canvas {
        border: 1px solid white;
      }
      </style>
    </head>
    <body>
    <canvas width="400" height="400" id="game"></canvas>
    <script>
    var canvas = document.getElementById('game');
    var context = canvas.getContext('2d');
    
    // the canvas width & height, snake x & y, and the apple x & y, all need to be a multiples of the grid size in order for collision detection to work
    // (e.g. 16 * 25 = 400)
    var grid = 16;
    var count = 0;
    
    var snake = {
      x: 160,
      y: 160,
    
      // snake velocity. moves one grid length every frame in either the x or y direction
      dx: grid,
      dy: 0,
    
      // keep track of all grids the snake body occupies
      cells: [],
    
      // length of the snake. grows when eating an apple
      maxCells: 4
    };
    var apple = {
      x: 320,
      y: 320
    };
    
    // get random whole numbers in a specific range
    // @see https://stackoverflow.com/a/1527820/2124254
    function getRandomInt(min, max) {
      return Math.floor(Math.random() * (max - min)) + min;
    }
    
    // game loop
    function loop() {
      requestAnimationFrame(loop);
    
      // slow game loop to 15 fps instead of 60 (60/15 = 4)
      if (++count < 4) {
        return;
      }
    
      count = 0;
      context.clearRect(0,0,canvas.width,canvas.height);
    
      // move snake by it's velocity
      snake.x += snake.dx;
      snake.y += snake.dy;
    
      // wrap snake position horizontally on edge of screen
      if (snake.x < 0) {
        snake.x = canvas.width - grid;
      }
      else if (snake.x >= canvas.width) {
        snake.x = 0;
      }
    
      // wrap snake position vertically on edge of screen
      if (snake.y < 0) {
        snake.y = canvas.height - grid;
      }
      else if (snake.y >= canvas.height) {
        snake.y = 0;
      }
    
      // keep track of where snake has been. front of the array is always the head
      snake.cells.unshift({x: snake.x, y: snake.y});
    
      // remove cells as we move away from them
      if (snake.cells.length > snake.maxCells) {
        snake.cells.pop();
      }
    
      // draw apple
      context.fillStyle = 'red';
      context.fillRect(apple.x, apple.y, grid-1, grid-1);
    
      // draw snake one cell at a time
      context.fillStyle = 'green';
      snake.cells.forEach(function(cell, index) {
    
        // drawing 1 px smaller than the grid creates a grid effect in the snake body so you can see how long it is
        context.fillRect(cell.x, cell.y, grid-1, grid-1);
    
        // snake ate apple
        if (cell.x === apple.x && cell.y === apple.y) {
          snake.maxCells++;
    
          // canvas is 400x400 which is 25x25 grids
          apple.x = getRandomInt(0, 25) * grid;
          apple.y = getRandomInt(0, 25) * grid;
        }
    
        // check collision with all cells after this one (modified bubble sort)
        for (var i = index + 1; i < snake.cells.length; i++) {
    
          // snake occupies same space as a body part. reset game
          if (cell.x === snake.cells[i].x && cell.y === snake.cells[i].y) {
            snake.x = 160;
            snake.y = 160;
            snake.cells = [];
            snake.maxCells = 4;
            snake.dx = grid;
            snake.dy = 0;
    
            apple.x = getRandomInt(0, 25) * grid;
            apple.y = getRandomInt(0, 25) * grid;
          }
        }
      });
    }
    
    // listen to keyboard events to move the snake
    document.addEventListener('keydown', function(e) {
      // prevent snake from backtracking on itself by checking that it's
      // not already moving on the same axis (pressing left while moving
      // left won't do anything, and pressing right while moving left
      // shouldn't let you collide with your own body)
    
      // left arrow key
      if (e.which === 37 && snake.dx === 0) {
        snake.dx = -grid;
        snake.dy = 0;
      }
      // up arrow key
      else if (e.which === 38 && snake.dy === 0) {
        snake.dy = -grid;
        snake.dx = 0;
      }
      // right arrow key
      else if (e.which === 39 && snake.dx === 0) {
        snake.dx = grid;
        snake.dy = 0;
      }
     
    Found 2026-01-23 by HttpPlugin
    Create report
  • Open service 2606:4700:3037::ac43:8d99:443 · stvmps.win

    2026-01-23 07:38

    HTTP/1.1 200 OK
    Date: Fri, 23 Jan 2026 07:38:26 GMT
    Content-Type: text/html
    Transfer-Encoding: chunked
    Connection: close
    Server: cloudflare
    Last-Modified: Mon, 06 Jan 2025 13:20:50 GMT
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=vKguuGrp4fWZISLhgA3BBSip8k2Ecawb5SJkhmJ8bgKFNV3j6KceRdz4pwdYJoU4%2FHcvOp%2BCaz83FINRqudYLhQtiBW4L66MNze9sKaDkIj6TNWrIfk%3D"}]}
    Accept-Ranges: bytes
    cf-cache-status: DYNAMIC
    CF-RAY: 9c25a1ab297cd2a8-FRA
    alt-svc: h3=":443"; ma=86400
    
    Page title: Basic Snake HTML Game
    
    <!DOCTYPE html>
    <html>
    <head>
      <title>Basic Snake HTML Game</title>
      <meta charset="UTF-8">
      <style>
      html, body {
        height: 100%;
        margin: 0;
      }
    
      body {
        background: black;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      canvas {
        border: 1px solid white;
      }
      </style>
    </head>
    <body>
    <canvas width="400" height="400" id="game"></canvas>
    <script>
    var canvas = document.getElementById('game');
    var context = canvas.getContext('2d');
    
    // the canvas width & height, snake x & y, and the apple x & y, all need to be a multiples of the grid size in order for collision detection to work
    // (e.g. 16 * 25 = 400)
    var grid = 16;
    var count = 0;
    
    var snake = {
      x: 160,
      y: 160,
    
      // snake velocity. moves one grid length every frame in either the x or y direction
      dx: grid,
      dy: 0,
    
      // keep track of all grids the snake body occupies
      cells: [],
    
      // length of the snake. grows when eating an apple
      maxCells: 4
    };
    var apple = {
      x: 320,
      y: 320
    };
    
    // get random whole numbers in a specific range
    // @see https://stackoverflow.com/a/1527820/2124254
    function getRandomInt(min, max) {
      return Math.floor(Math.random() * (max - min)) + min;
    }
    
    // game loop
    function loop() {
      requestAnimationFrame(loop);
    
      // slow game loop to 15 fps instead of 60 (60/15 = 4)
      if (++count < 4) {
        return;
      }
    
      count = 0;
      context.clearRect(0,0,canvas.width,canvas.height);
    
      // move snake by it's velocity
      snake.x += snake.dx;
      snake.y += snake.dy;
    
      // wrap snake position horizontally on edge of screen
      if (snake.x < 0) {
        snake.x = canvas.width - grid;
      }
      else if (snake.x >= canvas.width) {
        snake.x = 0;
      }
    
      // wrap snake position vertically on edge of screen
      if (snake.y < 0) {
        snake.y = canvas.height - grid;
      }
      else if (snake.y >= canvas.height) {
        snake.y = 0;
      }
    
      // keep track of where snake has been. front of the array is always the head
      snake.cells.unshift({x: snake.x, y: snake.y});
    
      // remove cells as we move away from them
      if (snake.cells.length > snake.maxCells) {
        snake.cells.pop();
      }
    
      // draw apple
      context.fillStyle = 'red';
      context.fillRect(apple.x, apple.y, grid-1, grid-1);
    
      // draw snake one cell at a time
      context.fillStyle = 'green';
      snake.cells.forEach(function(cell, index) {
    
        // drawing 1 px smaller than the grid creates a grid effect in the snake body so you can see how long it is
        context.fillRect(cell.x, cell.y, grid-1, grid-1);
    
        // snake ate apple
        if (cell.x === apple.x && cell.y === apple.y) {
          snake.maxCells++;
    
          // canvas is 400x400 which is 25x25 grids
          apple.x = getRandomInt(0, 25) * grid;
          apple.y = getRandomInt(0, 25) * grid;
        }
    
        // check collision with all cells after this one (modified bubble sort)
        for (var i = index + 1; i < snake.cells.length; i++) {
    
          // snake occupies same space as a body part. reset game
          if (cell.x === snake.cells[i].x && cell.y === snake.cells[i].y) {
            snake.x = 160;
            snake.y = 160;
            snake.cells = [];
            snake.maxCells = 4;
            snake.dx = grid;
            snake.dy = 0;
    
            apple.x = getRandomInt(0, 25) * grid;
            apple.y = getRandomInt(0, 25) * grid;
          }
        }
      });
    }
    
    // listen to keyboard events to move the snake
    document.addEventListener('keydown', function(e) {
      // prevent snake from backtracking on itself by checking that it's
      // not already moving on the same axis (pressing left while moving
      // left won't do anything, and pressing right while moving left
      // shouldn't let you collide with your own body)
    
      // left arrow key
      if (e.which === 37 && snake.dx === 0) {
        snake.dx = -grid;
        snake.dy = 0;
      }
      // up arrow key
      else if (e.which === 38 && snake.dy === 0) {
        snake.dy = -grid;
        snake.dx = 0;
      }
      // right arrow key
      else if (e.which === 39 && snake.dx === 0) {
        snake.dx = grid;
        snake.dy = 0;
      }
     
    Found 2026-01-23 by HttpPlugin
    Create report
  • Open service 2606:4700:3034::6815:26fd:8443 · stvmps.win

    2026-01-23 07:38

    HTTP/1.1 521 <none>
    Date: Fri, 23 Jan 2026 07:38:26 GMT
    Content-Type: text/plain; charset=UTF-8
    Content-Length: 15
    Connection: close
    Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Expires: Thu, 01 Jan 1970 00:00:01 GMT
    Referrer-Policy: same-origin
    Server-Timing: cfEdge;dur=103,cfOrigin;dur=0
    X-Frame-Options: SAMEORIGIN
    Server: cloudflare
    CF-RAY: 9c25a1ab9e98ebc0-YYZ
    alt-svc: h3=":8443"; ma=86400
    
    
    error code: 521
    Found 2026-01-23 by HttpPlugin
    Create report
  • Open service 2606:4700:3034::6815:26fd:443 · stvmps.win

    2026-01-23 07:38

    HTTP/1.1 200 OK
    Date: Fri, 23 Jan 2026 07:38:26 GMT
    Content-Type: text/html
    Transfer-Encoding: chunked
    Connection: close
    Server: cloudflare
    Last-Modified: Mon, 06 Jan 2025 13:20:50 GMT
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=gejx16fdCpK9Awj6A6O1r2347YJOuilr8WsZTctLMJxiYBnj3A7DLdVM9Oc%2B6%2FHYlGPqAAZoldKeErPRtx%2F5EeF1prIhLarOK92Q0NDaH%2BlGspq9ww8%3D"}]}
    Accept-Ranges: bytes
    cf-cache-status: DYNAMIC
    CF-RAY: 9c25a1ab0fc3d3a4-FRA
    alt-svc: h3=":443"; ma=86400
    
    Page title: Basic Snake HTML Game
    
    <!DOCTYPE html>
    <html>
    <head>
      <title>Basic Snake HTML Game</title>
      <meta charset="UTF-8">
      <style>
      html, body {
        height: 100%;
        margin: 0;
      }
    
      body {
        background: black;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      canvas {
        border: 1px solid white;
      }
      </style>
    </head>
    <body>
    <canvas width="400" height="400" id="game"></canvas>
    <script>
    var canvas = document.getElementById('game');
    var context = canvas.getContext('2d');
    
    // the canvas width & height, snake x & y, and the apple x & y, all need to be a multiples of the grid size in order for collision detection to work
    // (e.g. 16 * 25 = 400)
    var grid = 16;
    var count = 0;
    
    var snake = {
      x: 160,
      y: 160,
    
      // snake velocity. moves one grid length every frame in either the x or y direction
      dx: grid,
      dy: 0,
    
      // keep track of all grids the snake body occupies
      cells: [],
    
      // length of the snake. grows when eating an apple
      maxCells: 4
    };
    var apple = {
      x: 320,
      y: 320
    };
    
    // get random whole numbers in a specific range
    // @see https://stackoverflow.com/a/1527820/2124254
    function getRandomInt(min, max) {
      return Math.floor(Math.random() * (max - min)) + min;
    }
    
    // game loop
    function loop() {
      requestAnimationFrame(loop);
    
      // slow game loop to 15 fps instead of 60 (60/15 = 4)
      if (++count < 4) {
        return;
      }
    
      count = 0;
      context.clearRect(0,0,canvas.width,canvas.height);
    
      // move snake by it's velocity
      snake.x += snake.dx;
      snake.y += snake.dy;
    
      // wrap snake position horizontally on edge of screen
      if (snake.x < 0) {
        snake.x = canvas.width - grid;
      }
      else if (snake.x >= canvas.width) {
        snake.x = 0;
      }
    
      // wrap snake position vertically on edge of screen
      if (snake.y < 0) {
        snake.y = canvas.height - grid;
      }
      else if (snake.y >= canvas.height) {
        snake.y = 0;
      }
    
      // keep track of where snake has been. front of the array is always the head
      snake.cells.unshift({x: snake.x, y: snake.y});
    
      // remove cells as we move away from them
      if (snake.cells.length > snake.maxCells) {
        snake.cells.pop();
      }
    
      // draw apple
      context.fillStyle = 'red';
      context.fillRect(apple.x, apple.y, grid-1, grid-1);
    
      // draw snake one cell at a time
      context.fillStyle = 'green';
      snake.cells.forEach(function(cell, index) {
    
        // drawing 1 px smaller than the grid creates a grid effect in the snake body so you can see how long it is
        context.fillRect(cell.x, cell.y, grid-1, grid-1);
    
        // snake ate apple
        if (cell.x === apple.x && cell.y === apple.y) {
          snake.maxCells++;
    
          // canvas is 400x400 which is 25x25 grids
          apple.x = getRandomInt(0, 25) * grid;
          apple.y = getRandomInt(0, 25) * grid;
        }
    
        // check collision with all cells after this one (modified bubble sort)
        for (var i = index + 1; i < snake.cells.length; i++) {
    
          // snake occupies same space as a body part. reset game
          if (cell.x === snake.cells[i].x && cell.y === snake.cells[i].y) {
            snake.x = 160;
            snake.y = 160;
            snake.cells = [];
            snake.maxCells = 4;
            snake.dx = grid;
            snake.dy = 0;
    
            apple.x = getRandomInt(0, 25) * grid;
            apple.y = getRandomInt(0, 25) * grid;
          }
        }
      });
    }
    
    // listen to keyboard events to move the snake
    document.addEventListener('keydown', function(e) {
      // prevent snake from backtracking on itself by checking that it's
      // not already moving on the same axis (pressing left while moving
      // left won't do anything, and pressing right while moving left
      // shouldn't let you collide with your own body)
    
      // left arrow key
      if (e.which === 37 && snake.dx === 0) {
        snake.dx = -grid;
        snake.dy = 0;
      }
      // up arrow key
      else if (e.which === 38 && snake.dy === 0) {
        snake.dy = -grid;
        snake.dx = 0;
      }
      // right arrow key
      else if (e.which === 39 && snake.dx === 0) {
        snake.dx = grid;
        snake.dy = 0;
      }
     
    Found 2026-01-23 by HttpPlugin
    Create report
  • Open service 172.67.141.153:80 · stvmps.win

    2026-01-23 07:38

    HTTP/1.1 200 OK
    Date: Fri, 23 Jan 2026 07:38:26 GMT
    Content-Type: text/html
    Transfer-Encoding: chunked
    Connection: close
    Server: cloudflare
    Last-Modified: Mon, 06 Jan 2025 13:20:50 GMT
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=19oMCwRkUPZB0jxB5X%2F%2FMlOV58JTdEsMzg3mMjkLLgjhiv3gURfe%2BSsEVQZNBQBaZwjbWYptnFtX1S1kOi05I2IIaQNoVasoLSc%3D"}]}
    Accept-Ranges: bytes
    cf-cache-status: DYNAMIC
    CF-RAY: 9c25a1ad99ecd179-AMS
    alt-svc: h3=":443"; ma=86400
    
    Page title: Basic Snake HTML Game
    
    <!DOCTYPE html>
    <html>
    <head>
      <title>Basic Snake HTML Game</title>
      <meta charset="UTF-8">
      <style>
      html, body {
        height: 100%;
        margin: 0;
      }
    
      body {
        background: black;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      canvas {
        border: 1px solid white;
      }
      </style>
    </head>
    <body>
    <canvas width="400" height="400" id="game"></canvas>
    <script>
    var canvas = document.getElementById('game');
    var context = canvas.getContext('2d');
    
    // the canvas width & height, snake x & y, and the apple x & y, all need to be a multiples of the grid size in order for collision detection to work
    // (e.g. 16 * 25 = 400)
    var grid = 16;
    var count = 0;
    
    var snake = {
      x: 160,
      y: 160,
    
      // snake velocity. moves one grid length every frame in either the x or y direction
      dx: grid,
      dy: 0,
    
      // keep track of all grids the snake body occupies
      cells: [],
    
      // length of the snake. grows when eating an apple
      maxCells: 4
    };
    var apple = {
      x: 320,
      y: 320
    };
    
    // get random whole numbers in a specific range
    // @see https://stackoverflow.com/a/1527820/2124254
    function getRandomInt(min, max) {
      return Math.floor(Math.random() * (max - min)) + min;
    }
    
    // game loop
    function loop() {
      requestAnimationFrame(loop);
    
      // slow game loop to 15 fps instead of 60 (60/15 = 4)
      if (++count < 4) {
        return;
      }
    
      count = 0;
      context.clearRect(0,0,canvas.width,canvas.height);
    
      // move snake by it's velocity
      snake.x += snake.dx;
      snake.y += snake.dy;
    
      // wrap snake position horizontally on edge of screen
      if (snake.x < 0) {
        snake.x = canvas.width - grid;
      }
      else if (snake.x >= canvas.width) {
        snake.x = 0;
      }
    
      // wrap snake position vertically on edge of screen
      if (snake.y < 0) {
        snake.y = canvas.height - grid;
      }
      else if (snake.y >= canvas.height) {
        snake.y = 0;
      }
    
      // keep track of where snake has been. front of the array is always the head
      snake.cells.unshift({x: snake.x, y: snake.y});
    
      // remove cells as we move away from them
      if (snake.cells.length > snake.maxCells) {
        snake.cells.pop();
      }
    
      // draw apple
      context.fillStyle = 'red';
      context.fillRect(apple.x, apple.y, grid-1, grid-1);
    
      // draw snake one cell at a time
      context.fillStyle = 'green';
      snake.cells.forEach(function(cell, index) {
    
        // drawing 1 px smaller than the grid creates a grid effect in the snake body so you can see how long it is
        context.fillRect(cell.x, cell.y, grid-1, grid-1);
    
        // snake ate apple
        if (cell.x === apple.x && cell.y === apple.y) {
          snake.maxCells++;
    
          // canvas is 400x400 which is 25x25 grids
          apple.x = getRandomInt(0, 25) * grid;
          apple.y = getRandomInt(0, 25) * grid;
        }
    
        // check collision with all cells after this one (modified bubble sort)
        for (var i = index + 1; i < snake.cells.length; i++) {
    
          // snake occupies same space as a body part. reset game
          if (cell.x === snake.cells[i].x && cell.y === snake.cells[i].y) {
            snake.x = 160;
            snake.y = 160;
            snake.cells = [];
            snake.maxCells = 4;
            snake.dx = grid;
            snake.dy = 0;
    
            apple.x = getRandomInt(0, 25) * grid;
            apple.y = getRandomInt(0, 25) * grid;
          }
        }
      });
    }
    
    // listen to keyboard events to move the snake
    document.addEventListener('keydown', function(e) {
      // prevent snake from backtracking on itself by checking that it's
      // not already moving on the same axis (pressing left while moving
      // left won't do anything, and pressing right while moving left
      // shouldn't let you collide with your own body)
    
      // left arrow key
      if (e.which === 37 && snake.dx === 0) {
        snake.dx = -grid;
        snake.dy = 0;
      }
      // up arrow key
      else if (e.which === 38 && snake.dy === 0) {
        snake.dy = -grid;
        snake.dx = 0;
      }
      // right arrow key
      else if (e.which === 39 && snake.dx === 0) {
        snake.dx = grid;
        snake.dy = 0;
      }
     
    Found 2026-01-23 by HttpPlugin
    Create report
  • Open service 172.67.141.153:8443 · stvmps.win

    2026-01-23 07:38

    HTTP/1.1 521 <none>
    Date: Fri, 23 Jan 2026 07:38:26 GMT
    Content-Type: text/plain; charset=UTF-8
    Content-Length: 15
    Connection: close
    Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Expires: Thu, 01 Jan 1970 00:00:01 GMT
    Referrer-Policy: same-origin
    X-Frame-Options: SAMEORIGIN
    Server: cloudflare
    CF-RAY: 9c25a1aaad5e4547-AMS
    alt-svc: h3=":8443"; ma=86400
    
    
    error code: 521
    Found 2026-01-23 by HttpPlugin
    Create report
  • Open service 172.67.141.153:443 · stvmps.win

    2026-01-23 07:38

    HTTP/1.1 200 OK
    Date: Fri, 23 Jan 2026 07:38:26 GMT
    Content-Type: text/html
    Transfer-Encoding: chunked
    Connection: close
    Server: cloudflare
    Last-Modified: Mon, 06 Jan 2025 13:20:50 GMT
    Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
    Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Mcs4iW%2B0Y84SYdL137oO920kzEWKEwvyuOA1ZfpMwQRi7H8xTZsAW9vpXRo%2FCFK%2B2upUwxh6inKvuJ1Tt37rinkF0F1bV07X%2FXo%3D"}]}
    Accept-Ranges: bytes
    cf-cache-status: DYNAMIC
    Server-Timing: cfCacheStatus;desc="DYNAMIC"
    Server-Timing: cfEdge;dur=12,cfOrigin;dur=235
    CF-RAY: 9c25a1ac4b787d13-EWR
    alt-svc: h3=":443"; ma=86400
    
    Page title: Basic Snake HTML Game
    
    <!DOCTYPE html>
    <html>
    <head>
      <title>Basic Snake HTML Game</title>
      <meta charset="UTF-8">
      <style>
      html, body {
        height: 100%;
        margin: 0;
      }
    
      body {
        background: black;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      canvas {
        border: 1px solid white;
      }
      </style>
    </head>
    <body>
    <canvas width="400" height="400" id="game"></canvas>
    <script>
    var canvas = document.getElementById('game');
    var context = canvas.getContext('2d');
    
    // the canvas width & height, snake x & y, and the apple x & y, all need to be a multiples of the grid size in order for collision detection to work
    // (e.g. 16 * 25 = 400)
    var grid = 16;
    var count = 0;
    
    var snake = {
      x: 160,
      y: 160,
    
      // snake velocity. moves one grid length every frame in either the x or y direction
      dx: grid,
      dy: 0,
    
      // keep track of all grids the snake body occupies
      cells: [],
    
      // length of the snake. grows when eating an apple
      maxCells: 4
    };
    var apple = {
      x: 320,
      y: 320
    };
    
    // get random whole numbers in a specific range
    // @see https://stackoverflow.com/a/1527820/2124254
    function getRandomInt(min, max) {
      return Math.floor(Math.random() * (max - min)) + min;
    }
    
    // game loop
    function loop() {
      requestAnimationFrame(loop);
    
      // slow game loop to 15 fps instead of 60 (60/15 = 4)
      if (++count < 4) {
        return;
      }
    
      count = 0;
      context.clearRect(0,0,canvas.width,canvas.height);
    
      // move snake by it's velocity
      snake.x += snake.dx;
      snake.y += snake.dy;
    
      // wrap snake position horizontally on edge of screen
      if (snake.x < 0) {
        snake.x = canvas.width - grid;
      }
      else if (snake.x >= canvas.width) {
        snake.x = 0;
      }
    
      // wrap snake position vertically on edge of screen
      if (snake.y < 0) {
        snake.y = canvas.height - grid;
      }
      else if (snake.y >= canvas.height) {
        snake.y = 0;
      }
    
      // keep track of where snake has been. front of the array is always the head
      snake.cells.unshift({x: snake.x, y: snake.y});
    
      // remove cells as we move away from them
      if (snake.cells.length > snake.maxCells) {
        snake.cells.pop();
      }
    
      // draw apple
      context.fillStyle = 'red';
      context.fillRect(apple.x, apple.y, grid-1, grid-1);
    
      // draw snake one cell at a time
      context.fillStyle = 'green';
      snake.cells.forEach(function(cell, index) {
    
        // drawing 1 px smaller than the grid creates a grid effect in the snake body so you can see how long it is
        context.fillRect(cell.x, cell.y, grid-1, grid-1);
    
        // snake ate apple
        if (cell.x === apple.x && cell.y === apple.y) {
          snake.maxCells++;
    
          // canvas is 400x400 which is 25x25 grids
          apple.x = getRandomInt(0, 25) * grid;
          apple.y = getRandomInt(0, 25) * grid;
        }
    
        // check collision with all cells after this one (modified bubble sort)
        for (var i = index + 1; i < snake.cells.length; i++) {
    
          // snake occupies same space as a body part. reset game
          if (cell.x === snake.cells[i].x && cell.y === snake.cells[i].y) {
            snake.x = 160;
            snake.y = 160;
            snake.cells = [];
            snake.maxCells = 4;
            snake.dx = grid;
            snake.dy = 0;
    
            apple.x = getRandomInt(0, 25) * grid;
            apple.y = getRandomInt(0, 25) * grid;
          }
        }
      });
    }
    
    // listen to keyboard events to move the snake
    document.addEventListener('keydown', function(e) {
      // prevent snake from backtracking on itself by checking that it's
      // not already moving on the same axis (pressing left while moving
      // left won't do anything, and pressing right while moving left
      // shouldn't let you collide with your own body)
    
      // left arrow key
      if (e.which === 37 && snake.dx === 0) {
        snake.dx = -grid;
        snake.dy = 0;
      }
      // up arrow key
      else if (e.which === 38 && snake.dy === 0) {
        snake.dy = -grid;
        snake.dx = 0;
      }
      // right arrow key
      else if (e.which === 39 && snake.dx === 0) {
        snake.dx = grid;
        snake.dy = 0;
      }
     
    Found 2026-01-23 by HttpPlugin
    Create report
stvmps.win*.stvmps.win
CN:
stvmps.win
Key:
ECDSA-256
Issuer:
WE1
Not before:
2025-12-06 14:30
Not after:
2026-03-06 15:26