https://bobobet555.com/

ID de exploración:
4c4e6cab-6f9b-4ccd-92e4-accf64e6cc60Finalizado
URL enviada:
https://bobobet555.com/
Informe finalizado:

Enlaces: 0 encontrados

Los enlaces salientes identificados en la página

Variables JavaScript: 16 encontradas

Las variables JavaScript globales cargadas en el objeto de ventana de una página son variables declaradas fuera de las funciones y a las que se puede acceder desde cualquier lugar del código en el ámbito actual

NombreTipo
0object
onbeforetoggleobject
documentPictureInPictureobject
onscrollendobject
checkDomainfunction
selectHaUrlfunction
checkUrlfunction
loadIframefunction
selectAppfunction
loginfunction

Mensajes de registro de la consola: 5 encontrados

Mensajes registrados en la consola web

TipoCategoríaRegistro
warningother
URL
https://bobobet555.com/
Texto
Allow attribute will take precedence over 'allowfullscreen'.
errornetwork
URL
https://bobobet555.com/favicon.ico
Texto
Failed to load resource: the server responded with a status of 404 ()
verbosedom
URL
https://bobobet555.com/front/login/index.html
Texto
[DOM] Password field is not contained in a form: (More info: https://goo.gl/9p2vKq) %o
verbosedom
URL
https://bobobet555.com/front/login/index.html
Texto
[DOM] Password field is not contained in a form: (More info: https://goo.gl/9p2vKq) %o
verbosedom
URL
https://bobobet555.com/front/login/index.html
Texto
[DOM] Password field is not contained in a form: (More info: https://goo.gl/9p2vKq) %o

HTML

El cuerpo HTML sin procesar de la página

<!DOCTYPE html><html lang="en"><head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no viewport-fit=cover">
    <!--    <meta name="theme-color" content="#000" />-->
    <title>...</title>
    <link id="favicon" rel="icon" type="image/x-icon" href="front/face/all/current/z54/favicon.ico">
    <style>
      * {
        box-sizing: border-box;
      }
      html,
      body {
        height: 100%;
        width: 100%;
        margin: 0;
        padding: 0;
        overflow: hidden;
      }
      #app-iframe {
        position: relative;
        width: 100%;
        height: 100%;
        border: 0;
      }
      img {
        display: none;
      }
      body.bodyLandscape {
        padding-top: 10vh !important;
        height: 110vh;
        width: calc(100% - 80px);
        margin: 0 40px;
        padding: 0;
        overflow: auto;
      }
      .bodyScrolled {
        width: 100% !important;
        margin: 0 !important;
      }
      #app-iframe {
        position: relative;
        width: 100%;
        height: 100%;
        border: 0;
      }
      img {
        display: none;
      }
      @keyframes drag_animation {
        0% {
          transform: scale(1);
        }

        25% {
          transform: scale(1.5);
        }

        30% {
          transform: scale(1);
        }

        60% {
          opacity: 1;
        }

        to {
          transform: translateY(-200px);
          opacity: 0;
        }
      }
      .iosfullscreen {
        position: absolute;
        display: block;
        height: 150vh;
        pointer-events: all;
        color: #fff;
        top: 0;
        left: 0;
        width: 100%;
        background-color: #000;
        z-index: 1500;
        overflow: scroll;
      }

      .iosdragFullscreen {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
      }

      .iosscrollarea {
        position: relative;
        top: 0;
        left: 0;
        width: 100%;
        height: 100vh;
      }
      .iosscrollarea .warning {
        position: fixed;
        width: 60vw;
        height: 30vw;
        top: calc(50% - 15vw);
        left: calc(50% - 30vw);
        text-align: center;
      }
      .iosscrollarea .animation {
        position: absolute;
        top: 50vh;
        right: 15px;
        width: 50px;
        height: 50px;
        background-size: 100% 100%;
        background-position: 50%;
        background-repeat: no-repeat;
        background-image: url("./casinohand.webp");
        animation-name: drag_animation;
        animation-duration: 4s;
        animation-iteration-count: infinite;
      }
      #iphoneTest {
        display: none;
      }
    </style>
  <link rel="apple-touch-icon" href="front/face/all/current/z54/favicon.ico"></head>
  <body>
    <div id="iphoneTest" style="overflow: scroll" class="background iosfullscreen">
      <div class="element iosdragFullscreen">
        <div class="element background iosscrollarea">
          <div class="warning">
            <span id="drag-fullscreen-title" class="element title text-title">This game needs to be in fullscreen </span>
            <br>
            <span id="drag-fullscreen-message" class="element body text-title-1"> Use your finger to drag the screen </span>
          </div>
          <div class="animation"></div>
        </div>
      </div>
    </div>
    <script>
      let [domain, supportHa] = checkDomain();
      const haList = ["s1", "s2"];
      const af = /#af=([^#]*)/.exec(window.location.href);
      if (af && af[1]) {
        sessionStorage.afId = af[1];
      }

      function checkDomain() {
        let _domain = window.location.host;
        if (_domain === "localhost" || _domain === "192.168.2.12") return [_domain, false];
        const tempHostArray = window.location.host.split(".");

        if (["s1", "s2", "devel", "intern", "shop", "terminal"].includes(tempHostArray[0])) {
          _domain = tempHostArray.slice(1).join(".");
          return [_domain, false];
        }
        if (tempHostArray[0] === "www") {
          _domain = tempHostArray.slice(1).join(".");
        }
        return [_domain, true];
      }

      async function selectHaUrl(_haList) {
        if (supportHa) {
          const rand = Math.floor(Math.random() * _haList.length);
          if (_haList[rand]) {
            const url = `${window.location.protocol}//${_haList[rand]}.${domain}/`;
            if (!(await checkUrl(url))) {
              _haList.splice(rand, rand + 1);
              if (_haList.length === 1) {
                return `${window.location.protocol}//${_haList[0]}.${domain}/`;
              } else {
                return selectHaUrl(_haList);
              }
            }
            return url;
          } else {
            alert("Can't connect with server");
          }
        } else {
          return "";
        }
      }

      // TODO: remove
      function checkUrl(_url) {
        // TODO: fix cors error
        return true;
        const controller = new AbortController();
        const timeoutId = setTimeout(() => controller.abort(), 5000);
        return fetch(`${_url}index.html`, { signal: controller.signal })
          .then((r) => {
            return true;
          })
          .catch((e) => {
            console.error(e);
            return false;
          });
      }

      function loadIframe(path) {
        if (document.getElementById("app-iframe")) {
          document.getElementById("app-iframe").remove();
        }
        const iframe = document.createElement("iframe");
        iframe.src = selectApp(path);
        iframe.id = "app-iframe";
        iframe.name = "app";
        iframe.scrolling = "yes";
        iframe.allow = "fullscreen";
        iframe.allowFullscreen = true;
        document.body.appendChild(iframe);
      }

      function selectApp(path) {
        let core = +localStorage.core_v === 2 ? "sp/fmcore/current" : "portal";
        // core = "portal";
        if (localStorage.user_type === "manager") {
          const params = window.location.href.split("?")[1] || "";
          if (params.includes("sbooking")) {
            return `${path}front/${core}/index.html`;
          }
          // return `${path}front/${core}/index.html`;
          return `${path}front/mng/index.html`;
        }
        return `${path}front/${core}/index.html`;
      }

      async function login({ username, password, shard, part, haUrl, saveDevice }) {
        haUrl = haUrl || (await selectHaUrl(haList));
        if (typeof haUrl === "undefined") {
          return;
        }
        const headers = {
          "Content-Type": "application/json",
        };
        if (localStorage["Auth-Usr"]) {
          headers["Auth-Usr"] = localStorage["Auth-Usr"];
        }
        fetch(`${haUrl}aaa/login`, {
          method: "POST",
          headers,
          body: JSON.stringify({ username, password, shard, part: part * 1 }),
        })
          .then((response) => {
            if (response.status === 200) {
              return response;
            } else {
              throw new Error(`Can't login!:${response.status}`);
            }
          })
          .then((response) => response.json())
          .then(async (data) => {
            if (data.rToken) {
              try {
                const user = JSON.parse(atob(data.rToken.split(".")[1]));
                if ([10, 11, 12].includes(user.role * 1)) {
                  localStorage.user_type = "manager";
                }
                localStorage.token = data.rToken;
                localStorage.user = JSON.stringify(user);
                localStorage.lastUser = user.id;
                localStorage["Auth-Usr"] = `${shard}${part}:${user.id}`;
                if (saveDevice) {
                  await trustDevice(haUrl, username, password, data.rToken);
                }
                window.location.reload();
              } catch (error) {
                console.log(error);
                alert(error.message);
              }
            }
          })
          .catch((error) => {
            console.log(error);
            alert(error.message);
          });
      }

      function trustDevice(haUrl, username, password, rToken) {
        const headers = {
          "Content-Type": "application/json",
          "x-access-token": rToken,
        };
        if (localStorage["Auth-Usr"]) {
          headers["Auth-Usr"] = localStorage["Auth-Usr"];
        }
        return fetch(`${haUrl}aaa/login_trust`, {
          method: "POST",
          headers,
          body: JSON.stringify({ username, password }),
        })
          .then((response) => {
            if (response.status === 200) {
              return response;
            } else {
              throw new Error(`Device not saved!:${response.status}`);
            }
          })
          .then((response) => response.json())
          .then(async (data) => {
            if (data.rToken) {
              try {
                const user = JSON.parse(atob(data.rToken.split(".")[1]));
                localStorage.token = data.rToken;
                localStorage.user = JSON.stringify(user);
              } catch (error) {
                console.log(error);
                alert(error.message);
              }
            }
          })
          .catch((error) => {
            console.log(error);
            alert(error.message);
          });
      }

      async function logout(haUrl, rToken) {
        haUrl = haUrl || (await selectHaUrl(haList));
        const headers = {
          "Content-Type": "application/json",
          "x-access-token": rToken,
        };
        if (localStorage["Auth-Usr"]) {
          headers["Auth-Usr"] = localStorage["Auth-Usr"];
        }
        return fetch(`${haUrl}aaa/logout`, {
          method: "POST",
          headers,
        }).catch((error) => {
          console.log(error);
          alert(error.message);
        });
      }

      async function u_logout(haUrl, rToken) {
        haUrl = haUrl || (await selectHaUrl(haList));
        const headers = {
          "Content-Type": "application/json",
          "x-access-token": rToken,
        };
        if (localStorage["Auth-Usr"]) {
          headers["Auth-Usr"] = localStorage["Auth-Usr"];
        }
        return fetch(`${haUrl}aaa/u_logout`, {
          method: "POST",
          headers,
        })
          .then((response) => response.json())
          .catch((error) => {
            console.log(error);
            alert(error.message);
          });
      }

      async function bookTicket(dataToSend, haUrl) {
        if (!haUrl) {
          haUrl = await selectHaUrl(haList);
        }
        if (typeof haUrl === "undefined") {
          return;
        }
        const method = "back/.in?action=nologin_call&subaction=set_book_ticket";
        const headers = {};
        if (localStorage["Auth-Usr"]) {
          headers["Auth-Usr"] = localStorage["Auth-Usr"];
        }
        return fetch(haUrl + method, {
          method: "POST",
          body: dataToSend,
          headers,
        }).then((response) => response.json());
      }

      async function searchTicket(data) {
        let { ticketNr, ticketCode, haUrl } = data;
        if (!haUrl) {
          haUrl = await selectHaUrl(haList);
        }
        if (typeof haUrl === "undefined") {
          return { Error: true, Message: "API Url Error!" };
        }
        let method = "back/.in?action=nologin_call&subaction=search_ticket";
        method += "&ticket_code=" + ticketCode;

        if (Number.isNaN(+ticketNr)) {
          method += "&ticket_name=" + ticketNr;
        } else {
          method += "&ticket_id=" + ticketNr;
        }
        const headers = {};
        if (localStorage["Auth-Usr"]) {
          headers["Auth-Usr"] = localStorage["Auth-Usr"];
        }
        return fetch(haUrl + method, {
          method: "POST",
          headers,
        }).then((response) => response.json());
      }

      async function getJackpot(data) {
        let { haUrl, model } = data;
        if (!haUrl) {
          haUrl = await selectHaUrl(haList);
        }
        let method = `back/.in?action=nologin_call&subaction=jackpot&model=${model}`;

        const headers = {};
        if (localStorage["Auth-Usr"]) {
          headers["Auth-Usr"] = localStorage["Auth-Usr"];
        }
        return fetch(haUrl + method, {
          method: "POST",
          headers,
        }).then((response) => response.json());
      }

      // init
      (async () => {
        let path = "";
        if (localStorage.token) {
          path = await selectHaUrl(haList);
        }
        loadIframe(path);
      })();

      window.addEventListener("message", async (event) => {
        switch (event.data.action) {
          case "fmcore-loaded": {
            const out = {
              action: "app-init",
              payload: {
                domain,
                token: localStorage.token,
                user: localStorage.user,
                facePath: "../../../face/",
                appsPath: "../../../",
              },
            };
            if (window.location.href.split("?").length > 1) {
              out.payload.params = window.location.href.split("?")[1];
            }
            window.frames.app.postMessage(out, "*");

            out.action = "fmcore-init";
            window.frames.app.postMessage(out, "*");

            // disable back button
            history.pushState(null, document.title, location.href);
            window.addEventListener("popstate", function () {
              history.pushState(null, document.title, location.href);
            });
            break;
          }
          case "app-init": {
            const out = {
              action: "app-init",
              payload: {
                domain,
                token: localStorage.token,
                user: localStorage.user,
                facePath: "../face/",
              },
            };
            if (window.location.href.split("?").length > 1) {
              out.payload.params = window.location.href.split("?")[1];
            }
            window.frames.app.postMessage(out, "*");

            out.action = "fmcore-init";
            window.frames.app.postMessage(out, "*");

            // disable back button
            history.pushState(null, document.title, location.href);
            window.addEventListener("popstate", function () {
              history.pushState(null, document.title, location.href);
            });
            break;
          }
          case "login": {
            if (event.data.payload.hasOwnProperty("shard") && event.data.payload.hasOwnProperty("part")) {
              await login(event.data.payload);
            } else {
              alert("Missing domain configurations!");
            }
            break;
          }
          case "logout": {
            const { haUrl, shard, part } = event.data.payload || {};
            if (shard && part) {
              await logout(haUrl, localStorage.token);
            }
            delete localStorage.token;
            delete localStorage.user_type;
            window.location.reload();
            break;
          }
          case "u_logout": {
            const { haUrl, rToken } = event.data.payload;
            if (event.data.payload.hasOwnProperty("shard") && event.data.payload.hasOwnProperty("part")) {
              const message = await u_logout(haUrl, rToken);
              const out = {
                action: "u_logout_response",
                payload: {
                  message,
                },
              };
              window.frames.app.postMessage(out, "*");
            }
            break;
          }
          case "delete-cred": {
            delete localStorage.token;
            delete localStorage.user_type;
            break;
          }
          case "reload": {
            window.location.reload();
            break;
          }
          case "book-ticket-api": {
            const { data, haUrl } = event.data.payload;
            let formData = new FormData();
            formData.append("data", JSON.stringify(data));
            const response = await bookTicket(formData, haUrl);
            if (event.ports?.[0]) {
              event.ports[0].postMessage(response);
            } else {
              const out = {
                action: "book-ticket-response",
                payload: { data: response },
              };
              window.frames.app.postMessage(out, "*");
            }
            break;
          }
          case "search-ticket-api": {
            const response = await searchTicket(event.data.payload);
            if (event.ports?.[0]) {
              event.ports[0].postMessage(response);
            } else {
              const out = {
                action: "search-ticket-response",
                payload: response,
              };
              window.frames.app.postMessage(out, "*");
            }
            break;
          }
          case "get-sessionStorage": {
            const { param } = event.data.payload;
            if (event.ports && event.ports[0]) {
              event.ports[0].postMessage(sessionStorage.getItem(param));
            }
            break;
          }
          case "get-localStorage-async": {
            const { param } = event.data.payload;
            if (event.ports && event.ports[0]) {
              event.ports[0].postMessage(localStorage.getItem(param));
            }
            break;
          }
          case "get-localStorage": {
            const { param } = event.data.payload;
            const out = {
              action: "get-localStorage",
              payload: {
                [param]: localStorage[param],
              },
            };

            window.frames.app.postMessage(out, "*");
            break;
          }
          case "set-sessionStorage": {
            const { param, value } = event.data.payload;
            sessionStorage[param] = value;
            break;
          }
          case "del-sessionStorage": {
            const { param } = event.data.payload;
            sessionStorage.removeItem(param);
            break;
          }
          case "del-localStorage": {
            const { param } = event.data.payload;
            localStorage.removeItem(param);
            break;
          }
          case "set-localStorage": {
            const { param, value } = event.data.payload;
            localStorage[param] = value;
            break;
          }
          case "set-title": {
            document.title = event.data.payload.title;
            break;
          }
          case "set-meta": {
            const { name, value } = event.data.payload;
            if (document.querySelector(`meta[name="${name}"]`)) {
              document.querySelector(`meta[name="${name}"]`).content = value;
            } else {
              const meta = document.createElement("meta");
              meta.setAttribute("name", name);
              meta.content = value;
              document.getElementsByTagName("head")[0].appendChild(meta);
            }
            break;
          }
          case "set-favicon": {
            const { path } = event.data.payload;
            document.getElementById("favicon").href = `front/face/${path}`;
            let head = window.parent.document.getElementsByTagName("head")[0];
            let link = window.parent.document.createElement("link");
            link.rel = "apple-touch-icon";
            link.href = `front/face/${path}`;
            head.appendChild(link);
            break;
          }
          case "printPost": {
            window.parent.postMessage(event.data.payload, "*");
            break;
          }
          case "open-sl": {
            const { type } = event.data.payload;
            const url = `${window.location.protocol}://${window.location.host}/?screen&type=${type}`;
            window.open(url);
            break;
          }
          case "open-sl-param": {
            const { param } = event.data.payload;
            const url = `${window.location.protocol}//${window.location.host}/${param}`;
            window.open(url);
            break;
          }
          case "open-window": {
            const { path, setCookie } = event.data.payload;
            if (setCookie) {
              document.cookie = `obs_wa=${localStorage.token};path=/;domain=${domain}`;
            }
            const url = `${await selectHaUrl(haList)}${path}`;
            window.open(url, "_blank", "height=600,width=600");
            // console.log('open-sl')
            break;
          }
          case "redirect": {
            const { path } = event.data.payload;
            window.location.href = path;
            break;
          }
          case "load-chat-smartsupp": {
            const { key, offset = "" } = event.data.payload;

            window._smartsupp = window._smartsupp || {};
            const [x, y] = offset.split(",");
            if (x) window._smartsupp.offsetX = x;
            if (y) window._smartsupp.offsetY = y;
            window._smartsupp.key = key;
            window.smartsupp ||
              (function (d) {
                let smartsupp;
                var s,
                  c,
                  o = (smartsupp = function () {
                    o._.push(arguments);
                  });
                o._ = [];
                s = d.getElementsByTagName("script")[0];
                c = d.createElement("script");
                c.type = "text/javascript";
                c.charset = "utf-8";
                c.async = true;
                c.src = "//www.smartsuppchat.com/loader.js?";
                s.parentNode.insertBefore(c, s);
              })(document);
            break;
          }
          case "load-google-tag-manager": {
            const { key } = event.data.payload;
            (function (w, d, s, l, i) {
              w[l] = w[l] || [];
              w[l].push({ "gtm.start": new Date().getTime(), event: "gtm.js" });
              var f = d.getElementsByTagName(s)[0],
                j = d.createElement(s),
                dl = l !== "dataLayer" ? "&l=" + l : "";
              j.async = true;
              j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl;
              f.parentNode.insertBefore(j, f);
            })(window, document, "script", "dataLayer", key);
            break;
          }
          case "get-jackpot": {
            const response = await getJackpot(event.data.payload);
            if (event.ports?.[0]) {
              event.ports[0].postMessage(response);
            } else {
              const out = {
                action: "get-jackpot-response",
                payload: response,
              };
              window.frames.app.postMessage(out, "*");
            }
            break;
          }
          default:
            break;
        }
      });
    </script><iframe src="front/portal/index.html" id="app-iframe" name="app" scrolling="yes" allow="fullscreen" allowfullscreen=""></iframe>
  

</body></html>