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: https://englishsexvideo.net/rss.xml

  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.0" />
  6.    <title>Top OnlyFans Models Near You</title>
  7.    <meta
  8.      name="description"
  9.      content="Discover the hottest OnlyFans models in your area. Click to explore their profiles and claim exclusive content!"
  10.    />
  11.    <meta name="keywords" content="OnlyFans, models, exclusive content" />
  12.    <!-- Yandex.Metrika counter -->
  13.    <script type="text/javascript">
  14.      (function (m, e, t, r, i, k, a) {
  15.        m[i] =
  16.          m[i] ||
  17.          function () {
  18.            (m[i].a = m[i].a || []).push(arguments);
  19.          };
  20.        m[i].l = 1 * new Date();
  21.        for (var j = 0; j < document.scripts.length; j++) {
  22.          if (document.scripts[j].src === r) {
  23.            return;
  24.          }
  25.        }
  26.        (k = e.createElement(t)),
  27.          (a = e.getElementsByTagName(t)[0]),
  28.          (k.async = 1),
  29.          (k.src = r),
  30.          a.parentNode.insertBefore(k, a);
  31.      })(
  32.        window,
  33.        document,
  34.        "script",
  35.        "https://mc.yandex.ru/metrika/tag.js?id=104339903",
  36.        "ym"
  37.      );
  38.  
  39.      ym(104339903, "init", {
  40.        ssr: true,
  41.        webvisor: true,
  42.        clickmap: true,
  43.        ecommerce: "dataLayer",
  44.        accurateTrackBounce: true,
  45.        trackLinks: true,
  46.      });
  47.    </script>
  48.    <noscript
  49.      ><div>
  50.        <img
  51.          src="https://mc.yandex.ru/watch/104339903"
  52.          style="position: absolute; left: -9999px"
  53.          alt=""
  54.        /></div
  55.    ></noscript>
  56.    <!-- /Yandex.Metrika counter -->
  57.    <style>
  58.      body {
  59.        margin: 0;
  60.        background-color: #0b0d17;
  61.        font-family: Arial, sans-serif;
  62.      }
  63.  
  64.      h1 {
  65.        text-align: center;
  66.        color: white;
  67.        margin-bottom: 10px;
  68.      }
  69.  
  70.      .cards-wrapper {
  71.        display: grid;
  72.        grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  73.        gap: 24px;
  74.        padding: 24px;
  75.        max-width: 1300px;
  76.        margin: auto;
  77.      }
  78.  
  79.      .card {
  80.        position: relative;
  81.        border-radius: 20px;
  82.        overflow: hidden;
  83.        background-color: #1c1c2b;
  84.        color: white;
  85.        text-align: center;
  86.        text-decoration: none;
  87.        transition: transform 0.3s;
  88.        z-index: 0;
  89.      }
  90.  
  91.      .card::before {
  92.        content: "";
  93.        position: absolute;
  94.        top: -2px;
  95.        left: -2px;
  96.        right: -2px;
  97.        bottom: -2px;
  98.        z-index: -1;
  99.        background: linear-gradient(
  100.          270deg,
  101.          #ff00cc,
  102.          #3333ff,
  103.          #00ffcc,
  104.          #ffcc00,
  105.          #ff0066
  106.        );
  107.        background-size: 1000% 1000%;
  108.        animation: borderAnimation 10s ease infinite;
  109.        border-radius: 22px;
  110.      }
  111.  
  112.      @keyframes borderAnimation {
  113.        0% {
  114.          background-position: 0% 50%;
  115.        }
  116.        50% {
  117.          background-position: 100% 50%;
  118.        }
  119.        100% {
  120.          background-position: 0% 50%;
  121.        }
  122.      }
  123.  
  124.      .card img {
  125.        width: 100%;
  126.        height: auto;
  127.        display: block;
  128.      }
  129.  
  130.      .online-badge {
  131.        position: absolute;
  132.        top: 12px;
  133.        left: 12px;
  134.        background-color: #00e676;
  135.        color: white;
  136.        font-size: 12px;
  137.        padding: 4px 10px;
  138.        border-radius: 999px;
  139.        font-weight: bold;
  140.        z-index: 1;
  141.      }
  142.  
  143.      .name {
  144.        font-size: 20px;
  145.        font-weight: bold;
  146.        padding: 12px 0;
  147.      }
  148.  
  149.      .button-wrapper {
  150.        background: linear-gradient(to bottom, rgba(0, 0, 0, 0.6), #000);
  151.        padding: 16px;
  152.        border-top: 1px solid #333;
  153.        display: flex;
  154.        flex-direction: column;
  155.        gap: 12px;
  156.      }
  157.  
  158.      .onlyfans-button {
  159.        display: inline-flex;
  160.        align-items: center;
  161.        justify-content: center;
  162.        font-size: 16px;
  163.        color: white;
  164.        padding: 10px 20px;
  165.        border-radius: 30px;
  166.        background-color: #111;
  167.        border: 2px solid #999;
  168.        text-decoration: none;
  169.        font-weight: bold;
  170.        gap: 8px;
  171.      }
  172.  
  173.      .onlyfans-button svg {
  174.        width: 18px;
  175.        height: 18px;
  176.        fill: white;
  177.      }
  178.  
  179.      .claim-button {
  180.        position: relative;
  181.        overflow: hidden;
  182.        width: 100%;
  183.        padding: 12px 20px;
  184.        border-radius: 30px;
  185.        font-size: 16px;
  186.        font-weight: bold;
  187.        color: white;
  188.        background-color: #e91e63;
  189.        border: none;
  190.        cursor: pointer;
  191.        transition: background-color 0.3s, transform 0.2s;
  192.      }
  193.  
  194.      .claim-button:hover {
  195.        background-color: #d81b60;
  196.      }
  197.  
  198.      .claim-button .shine {
  199.        content: "";
  200.        position: absolute;
  201.        top: 0;
  202.        left: -75%;
  203.        height: 100%;
  204.        width: 50%;
  205.        background: linear-gradient(
  206.          120deg,
  207.          transparent,
  208.          rgba(255, 255, 255, 0.4),
  209.          transparent
  210.        );
  211.        transform: skewX(-25deg);
  212.        animation: shine 2.5s infinite;
  213.      }
  214.  
  215.      @keyframes shine {
  216.        0% {
  217.          left: -75%;
  218.        }
  219.        100% {
  220.          left: 125%;
  221.        }
  222.      }
  223.  
  224.      .claimed {
  225.        background-color: #4caf50 !important;
  226.        color: #fff !important;
  227.        position: relative;
  228.      }
  229.  
  230.      .claimed::after {
  231.        content: " ✅";
  232.        font-size: 18px;
  233.        margin-left: 8px;
  234.      }
  235.  
  236.      @media (max-width: 768px) {
  237.        .cards-wrapper {
  238.          grid-template-columns: 1fr;
  239.        }
  240.      }
  241.    </style>
  242.    <!-- Google tag (gtag.js) -->
  243.    <script
  244.      async
  245.      src="https://www.googletagmanager.com/gtag/js?id=G-M98STRDE16"
  246.    ></script>
  247.    <script>
  248.      window.dataLayer = window.dataLayer || [];
  249.      function gtag() {
  250.        dataLayer.push(arguments);
  251.      }
  252.      gtag("js", new Date());
  253.  
  254.      gtag("config", "G-M98STRDE16");
  255.    </script>
  256.  </head>
  257.  <body>
  258.    <h1>Best OnlyFans Models</h1>
  259.    <h1 id="location-text">Near your area</h1>
  260.  
  261.    <div id="api-cards-container" class="cards-wrapper"></div>
  262.  
  263.    <!-- Dynamic City Detection Script -->
  264.    <script>
  265.      (async function () {
  266.        try {
  267.          console.log("Fetching location data...");
  268.          const response = await fetch("https://ipapi.co/json/");
  269.  
  270.          if (!response.ok) {
  271.            throw new Error(`HTTP error! status: ${response.status}`);
  272.          }
  273.  
  274.          const data = await response.json();
  275.          console.log("Location data received:", data);
  276.  
  277.          if (!data.city) {
  278.            console.warn("No city found in response");
  279.            throw new Error("City not available");
  280.          }
  281.  
  282.          const locationText = document.getElementById("location-text");
  283.          const city = data.city;
  284.          console.log("Setting city to:", city);
  285.          locationText.textContent = `Near 📍 ${city}`;
  286.        } catch (error) {
  287.          console.error("Location detection failed:", error);
  288.          document.getElementById("location-text").textContent =
  289.            "Near your area";
  290.        }
  291.      })();
  292.    </script>
  293.  
  294.    <!-- Card Loader Script -->
  295.    <script>
  296.      (async function () {
  297.        try {
  298.          const urlParams = new URLSearchParams(window.location.search);
  299.          const maxCards = urlParams.get("m") || 20; // Default to 20 if not specified
  300.          const pid = urlParams.get("pid") || 1; // Default pid if not specified
  301.          const response = await fetch(
  302.            `https://adban-api-39736907df5c.herokuapp.com/getmodels?id=${pid}&max=${maxCards}`
  303.          );
  304.          const data = await response.json();
  305.          const container = document.getElementById("api-cards-container");
  306.  
  307.          data.forEach((item) => {
  308.            const card = document.createElement("a");
  309.            card.className = "card";
  310.            card.href = item.link;
  311.            card.target = "_blank";
  312.            card.rel = "noopener";
  313.  
  314.            card.innerHTML = `
  315.          <span class="online-badge">● Online</span>
  316.          <img src="${item.image}" alt="${item.name}" />
  317.          <div class="name">${item.name}</div>
  318.          <div class="button-wrapper">
  319.            <div class="onlyfans-button">
  320.              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512">
  321.                <path d="M572.52 241.4c-1.46-1.78-36.45-44-93.75-82.84-53.51-35.44-113.36-54.56-181.77-54.56-68.4 0-128.26 19.12-181.77 54.56C39.93 197.4 4.94 239.62 3.48 241.4a32.13 32.13 0 0 0 0 39.2c1.46 1.78 36.45 44 93.75 82.84 53.51 35.44 113.36 54.56 181.77 54.56 68.4 0 128.26-19.12 181.77-54.56 57.3-38.81 92.29-81.03 93.75-82.84a32.13 32.13 0 0 0 0-39.2zM288 400c-70.69 0-128-57.31-128-128s57.31-128 128-128 128 57.31 128 128-57.31 128-128 128zm0-208a80 80 0 1 0 80 80 80.09 80.09 0 0 0-80-80z"/>
  322.              </svg>
  323.              Visit OnlyFans ${item.type === "free" ? "(Free)" : ""}
  324.            </div>
  325.            <button class="claim-button">
  326.              <span class="shine"></span>
  327.              Chat and claim free nude
  328.            </button>
  329.          </div>
  330.        `;
  331.  
  332.            container.appendChild(card);
  333.  
  334.            // Handle claim button behavior
  335.            const claimBtn = card.querySelector(".claim-button");
  336.            claimBtn.addEventListener("click", function (e) {
  337.              e.preventDefault();
  338.              claimBtn.classList.add("claimed");
  339.              claimBtn.textContent = "Claimed!";
  340.              claimBtn.style.transform = "scale(1.05)";
  341.              setTimeout(() => {
  342.                claimBtn.style.transform = "scale(1)";
  343.              }, 300);
  344.            });
  345.          });
  346.        } catch (error) {
  347.          console.error("Error loading cards:", error);
  348.        }
  349.      })();
  350.    </script>
  351.  <script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"6fc7cb8592224c21b05d1764f3390c9b","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
  352. </body>
  353. </html>
  354.  
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda