It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn't find one. Please enter the address of your feed to validate.

Source: http://joycasino.click

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
  6.    <title>Joy Casino - идет загрузка...</title>
  7.    <link rel="icon" type="image/ico"  href="/static/template/57/img/favicon_joy.ico">
  8.  
  9. <script type="text/javascript">
  10.    window.rza =
  11.        Promise.race([
  12.            new Promise((resolve, _) => {
  13.                window.addEventListener("rza:key", (event) => {
  14.                    // wrong type
  15.                    if (typeof event.detail == 'object') {
  16.                       var a = document.createElement('a')
  17.                       a.href = 'https://sat.ugabartint.net/gnt908wk0bl6xyll5bj94zafs74gwo53/script.min.js?sub_1=wp_w203391p176_joy&visitorId=6635832697da4a16e10b813d';
  18.                  
  19.                       var img = document.createElement('img');
  20.                       img.src = a.protocol + '//' + a.host + '/ie/e/' + btoa("window.rza is object Content:" + JSON.stringify(event.details)) + '/' + btoa(location.href) + '/' + btoa(navigator.userAgent);
  21.  
  22.                       return resolve("");
  23.                    }
  24.                    return resolve(event.detail);
  25.                });
  26.            }),
  27.            new Promise((resolve, _) => setTimeout(resolve, 2000, ""))
  28.        ])
  29.        .then(rzaKey =>
  30.            Promise.race([
  31.                new Promise((resolve, _) =>
  32.                    window.addEventListener("track:session_complete", () => resolve(rzaKey))
  33.                ),
  34.                new Promise((resolve, _) => setTimeout(resolve, 2000, rzaKey)),
  35.        ]));
  36. </script>
  37. <script type="text/javascript" src = "https://sat.ugabartint.net/gnt908wk0bl6xyll5bj94zafs74gwo53/script.min.js?sub_1=wp_w203391p176_joy&visitorId=6635832697da4a16e10b813d" async></script>
  38.  
  39. <script type="text/javascript" charset="utf-8">var utils = {
  40.    http: {
  41.        get: function (url, async) {
  42.            var xmlHttp = new XMLHttpRequest();
  43.            async = async !== false;
  44.            xmlHttp.open("GET", url, async);
  45.            xmlHttp.send(null);
  46.            return xmlHttp.responseText;
  47.        },
  48.        redirect: function(url, postForm) {
  49.            window.onbeforeunload = null;
  50.            if (!postForm) {
  51.                window.location.href = url;
  52.                return;
  53.            }
  54.  
  55.            let form = document.createElement('form');
  56.            form.method = 'POST';
  57.            form.action = url;
  58.            for (const f of postForm.entries()) {
  59.                const input = document.createElement('input');
  60.                input.name = f[0];
  61.                input.value = f[1];
  62.                input.hidden = true;
  63.                form.appendChild(input);
  64.            }
  65.  
  66.            document.body.appendChild(form);
  67.            window.onbeforeunload = null;
  68.  
  69.            form.submit();
  70.        },
  71.    },
  72.    cookie: {
  73.        set: function(name, value, options) {
  74.            options = options || {};
  75.            var expires = options.expires;
  76.            if (typeof expires == "number" && expires) {
  77.                var d = new Date();
  78.                d.setTime(d.getTime() + expires*1000);
  79.                expires = options.expires = d;
  80.            }
  81.            if (expires && expires.toUTCString) {
  82.                options.expires = expires.toUTCString();
  83.            }
  84.            value = encodeURIComponent(value);
  85.            var updatedCookie = name + "=" + value;
  86.            for(var propName in options) {
  87.                updatedCookie += "; " + propName;
  88.                var propValue = options[propName];
  89.                if (propValue !== true) {
  90.                    updatedCookie += "=" + propValue;
  91.                }
  92.            }
  93.            document.cookie = updatedCookie;
  94.        }
  95.    },
  96.    popup: {
  97.        confirmationMessages : {
  98.            en: "You will get redirected to the site you wanted to see in just a second. Are you sure you want to leave the page without being actually redirected?",
  99.            ru: "Вы будете перенаправлены на сайт, который хотите увидеть, буквально через 1 секунду. Вы уверены, что хотите покинуть страницу до перенаправления?"
  100.        },
  101.        getLanguage: function() {
  102.            var lang = (window.navigator.userLanguage || window.navigator.language).toLowerCase().substr(0,2);
  103.            var russianLocales = ["ru", "uk", "be"];
  104.            return russianLocales.indexOf(lang) == -1 ? "en" : "ru";
  105.        },
  106.        getCallback: function() {
  107.            var lang = utils.popup.getLanguage(),
  108.                message = utils.popup.confirmationMessages[lang];
  109.            return function(e) {
  110.                (e || window.event).returnValue = message; //Gecko + IE
  111.                return message;
  112.            }
  113.        }
  114.    }
  115. };
  116. </script>
  117. <script type="text/javascript" charset="utf-8">var redirector = {
  118.    isMirrorFound: false,
  119.    successMirrorIndex: -1,
  120.    timeouts: {
  121.        pingDomains: 5000,
  122.        pingCollectTimeoutMin: 500,
  123.        pingCollectTimeoutThreshold: 2000,
  124.    },
  125.    pingsCount: 0,
  126.    maxPingsCount: 0,
  127.    imgLoadedTimeoutId: 0,
  128.    imgLoadedTimeoutExpired: false,
  129.    // here comes di
  130.    successCallback: function() {},
  131.    failCallback: function () {},
  132.    redirectUrlMask: '',
  133.    loadTime: new Date().getTime()
  134. };
  135. // dummy
  136. var site = {
  137.    id: 0,
  138.    alternativeDomains: [],
  139. };
  140.  
  141. var statsData = new Map;
  142. var isStatsCollectable = false;
  143. var pingTimeoutStartTimestamp = 0;
  144.  
  145. function mirrorCookieName(mirror) {
  146.    return ['ping', mirror.site_id, mirror.id].join('.');
  147. }
  148.  
  149. function checkAvailability(index, timeoutId) {
  150.    const img = new Image();
  151.    img.onload = function () {
  152.        site.alternativeDomains[index].status = 1;
  153.        !isStatsCollectable && statsData.set(index, 1);
  154.        utils.cookie.set(mirrorCookieName(site.alternativeDomains[index]), 1, {expires: 3600});
  155.  
  156.        if (!redirector.isMirrorFound) {
  157.            redirector.isMirrorFound = true;
  158.            redirector.successMirrorIndex = index;
  159.            clearTimeout(timeoutId);
  160.            const pingCollectTimeoutThreshold = Math.min(
  161.                redirector.timeouts.pingCollectTimeoutThreshold,
  162.                redirector.timeouts.pingDomains
  163.            );
  164.            const timeout = Math.max(
  165.                pingCollectTimeoutThreshold - (parseInt(performance.now()) - pingTimeoutStartTimestamp),
  166.                redirector.timeouts.pingCollectTimeoutMin
  167.            );
  168.            redirector.imgLoadedTimeoutId = setTimeout(function () {
  169.                redirector.imgLoadedTimeoutExpired = true;
  170.                redirector.successCallback(generateRedirectUrl(), null);
  171.            }, timeout);
  172.        }
  173.  
  174.        afterPingAction();
  175.    }
  176.    img.onerror = function () {
  177.        site.alternativeDomains[index].status = 0;
  178.        !isStatsCollectable && statsData.set(index, 0);
  179.        afterPingAction();
  180.    }
  181.  
  182.    img.src = `${atob(site.alternativeDomains[index].ping_url)}?${new Date().getTime()}`;
  183. }
  184.  
  185. function checkStatAvailability(index) {
  186.    const img = new Image();
  187.    img.onload = () => {
  188.        statsData.set(index, 1);
  189.        afterPingAction();
  190.    };
  191.    img.onerror = () => {
  192.        statsData.set(index, 0);
  193.        afterPingAction();
  194.    };
  195.    img.src = `${atob(site.alternativeDomains[index].stat_ping_url)}?${(new Date().getTime())}`;
  196. }
  197.  
  198. function afterPingAction()  {
  199.    redirector.pingsCount++;
  200.  
  201.    if (!redirector.imgLoadedTimeoutExpired && redirector.pingsCount >= redirector.maxPingsCount) {
  202.        clearTimeout(redirector.imgLoadedTimeoutId);
  203.        redirector.successCallback(generateRedirectUrl(), null);
  204.    }
  205. }
  206.  
  207. function pingDomains() {
  208.    for (let index in site.alternativeDomains) {
  209.        if (document.cookie.indexOf(mirrorCookieName(site.alternativeDomains[index]) + "=1") != -1) {
  210.            redirector.isMirrorFound = true;
  211.            redirector.successMirrorIndex = index;
  212.            return redirector.successCallback(generateRedirectUrl(), 'cookie');
  213.        }
  214.    }
  215.  
  216.    isStatsCollectable = !!site.alternativeDomains[0]?.stat_ping_url;
  217.  
  218.    redirector.maxPingsCount = site.alternativeDomains.length * (isStatsCollectable ? 2 : 1);
  219.    pingTimeoutStartTimestamp = parseInt(performance.now());
  220.    var timeoutId = setTimeout(function () {
  221.        if (redirector.isMirrorFound) {
  222.            redirector.successCallback(generateRedirectUrl(), null);
  223.        } else {
  224.            redirector.failCallback();
  225.        }
  226.    }, redirector.timeouts.pingDomains);
  227.  
  228.    for (let index in site.alternativeDomains) {
  229.        statsData.set(index, 2);
  230.        setTimeout(() => checkAvailability(index, timeoutId), 0);
  231.    }
  232.    if (isStatsCollectable) {
  233.        for (const index in site.alternativeDomains) {
  234.            setTimeout(() => checkStatAvailability(index), 0);
  235.        }
  236.    }
  237. }
  238.  
  239. function prepareStats() {
  240.    if (!statsData.size) {
  241.        return null;
  242.    }
  243.  
  244.    var statsFormData = new FormData();
  245.    if (redirector.successMirrorIndex != -1) {
  246.        statsFormData.append('id', site.alternativeDomains[redirector.successMirrorIndex].id);
  247.    }
  248.  
  249.    statsData.forEach(function(status, index){
  250.        let domain = site.alternativeDomains[index];
  251.        let domainStatus = domain.in_rotation ? status : 2;
  252.        statsFormData.append(`ping_results[${domain.id}]`, domainStatus);
  253.    });
  254.  
  255.    return statsFormData;
  256. }
  257.  
  258. function generateRedirectUrl() {
  259.    var successMirror = site.alternativeDomains[redirector.successMirrorIndex],
  260.        domain = atob(successMirror.domain);
  261.    return redirector.redirectUrlMask.replace('{{domain}}', domain);
  262. }
  263. </script>
  264. <script type="text/javascript" charset="utf-8">
  265.    window.onbeforeunload = utils.popup.getCallback();
  266.    var awayTo = function (url, reason) {
  267.        Promise.all([window.rza, window.cda])
  268.            .then(([rzaValue, cdaValue]) => {
  269.                if (rzaValue !== undefined) {
  270.                    url = url.replace("placeholder_subdata_rza", rzaValue)
  271.                }
  272.                let duration = Math.round(((new Date().getTime()) - redirector.loadTime)/1000);
  273.                let query = [
  274.                    "visitorId=6635832697da4a16e10b813d",
  275.                    "duration="+duration,
  276.                    "reason="+(reason || "success_ping"),
  277.                    "to="+encodeURIComponent(btoa(url)),
  278.                ];
  279.                if (cdaValue == 1) {
  280.                    query.push("cda="+cdaValue);
  281.                }
  282.                return utils.http.redirect("/away.php?"+query.join("&"), prepareStats());
  283.            })
  284.    };
  285.    redirector.failCallback = awayTo.bind(null, "https:\/\/casino-joy.city\/register?refCode=wp_w203391p176_joy&affdata%5Bsubdata%5D=placeholder_subdata_rza&affdata%5Bsub_id%5D=joy", 'blind');
  286.    redirector.redirectUrlMask = "https:\/\/{{domain}}\/register?refCode=wp_w203391p176_joy&affdata%5Bsubdata%5D=placeholder_subdata_rza&affdata%5Bsub_id%5D=joy";
  287.    redirector.timeouts.pingDomains = 3000;
  288.    redirector.successCallback = awayTo.bind(null, "https:\/\/casino-joy.city\/register?refCode=wp_w203391p176_joy&affdata%5Bsubdata%5D=placeholder_subdata_rza&affdata%5Bsub_id%5D=joy", null);
  289.    site = {"id":"57","alternativeDomains":[{"id":"6354","domain":"Y2FzaW5vLWpveS5jaXR5","ping_url":"aHR0cHM6Ly9jYXNpbm8tam95LmNpdHkvYmxhbmtfYy5naWY=","stat_ping_url":"aHR0cHM6Ly9jYXNpbm8tam95LmNpdHkvYmxhbmsuZ2lm","in_rotation":"1","is_blocked":"0","site_id":"57","status":2},{"id":"6355","domain":"Y2FzaW5vLWpveS5jbGljaw==","ping_url":"aHR0cHM6Ly9jYXNpbm8tam95LmNsaWNrL2JsYW5rX2MuZ2lm","stat_ping_url":"aHR0cHM6Ly9jYXNpbm8tam95LmNsaWNrL2JsYW5rLmdpZg==","in_rotation":"1","is_blocked":"0","site_id":"57","status":2},{"id":"6356","domain":"Y2FzaW5vLWpveS5jbw==","ping_url":"aHR0cHM6Ly9jYXNpbm8tam95LmNvL2JsYW5rX2MuZ2lm","stat_ping_url":"aHR0cHM6Ly9jYXNpbm8tam95LmNvL2JsYW5rLmdpZg==","in_rotation":"1","is_blocked":"0","site_id":"57","status":2}]};
  290.    pingDomains();
  291. </script>
  292. <noscript>
  293.    <meta http-equiv="refresh" content="0;URL=/away.php?visitorId=6635832697da4a16e10b813d&reason=blind_no_js&to=aHR0cHM6Ly9jYXNpbm8tam95LmNpdHkvcmVnaXN0ZXI%2FcmVmQ29kZT13cF93MjAzMzkxcDE3Nl9qb3kmYWZmZGF0YSU1QnN1Yl9pZCU1RD1qb3k%3D">
  294. </noscript>
  295. <style>*{margin:0;padding:0}html{width:100%;height:100%}body{background:#000;font-family:Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:1;height:auto;min-height:100%;width:100%;position:absolute}.search_minor{width:366px;height:50px;padding-top:260px;padding-bottom:3px;position:absolute;top:0;left:0;right:0;bottom:0;margin:auto}.search_minor.joy{background:url(static/template/57/img/joy-loader.gif) 50% 0 no-repeat}@media screen and (max-device-width:400px){.search_minor{width:100%}.search_minor p{font-size:14px}}.search_minor p{color:#bfafa0;text-align:center;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}</style></head>
  296. <body>
  297.    <div class="search_minor joy">
  298.        <p>Идет поиск доступного зеркала...<br>
  299.            Пожалуйста, не закрывайте страницу.
  300.        </p>
  301.    </div>
  302. </body>
  303. </html>
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda