{"id":5897,"date":"2026-06-30T12:41:53","date_gmt":"2026-06-30T12:41:53","guid":{"rendered":"https:\/\/adex.com\/blog\/?p=5897"},"modified":"2026-06-30T12:41:56","modified_gmt":"2026-06-30T12:41:56","slug":"adex-ads-txt-app-ads-txt-spoofing","status":"publish","type":"post","link":"https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/","title":{"rendered":"ads.txt and app-ads.txt Spoofing:How Fraudsters Fake the Right to Sell Inventory"},"content":{"rendered":"\n<p>Ad fraud is frustrating for a lot of reasons. But the most frustrating part is it doesn&#8217;t always look like fraud.<\/p>\n\n\n\n<p>There\u2019s no malware, no fake websites, and no sketchy traffic source you can point your finger at. Everything seems totally above board as the publisher is real and the domain exists. You could be paying premium rates to reach a publisher&#8217;s audience (genuinely believing that&#8217;s where your ads are running) only to find out later that none of it ever came from that publisher. Someone in the middle just&#8230; claimed the right to sell inventory they had no right to sell.<\/p>\n\n\n\n<p>It sounds ridiculous when you put it that way, doesn&#8217;t it?<\/p>\n\n\n<div class=\"block__bord\"><div class=\"block__bord_desc\"><p>That someone can profit from a publisher&#8217;s reputation without actually owning the audience and the content, or operating the website, feels like something that shouldn&#8217;t be possible in a mature advertising industry. Unfortunately, though, it&#8217;s a frequent problem we\u2019ve had for years \u2013 one that cannot disappear on its own.<\/p>\n<\/div><\/div>\n<style>\n.block__bord { margin: 32px 0; padding: 1.25em 2.375em;\tborder-radius: 24px; background: rgba(0, 220, 200, 0.20); }\n.block__bord_desc {font-size: 16px !important;font-weight: 400 !important;color: #606060 !important;}\n<\/style>\n\n\n\n<p>Buyers trust that the inventory they&#8217;re purchasing comes from the source it claims to come from. Publishers trust that their name isn&#8217;t being used by someone they&#8217;ve never worked with. All the while, everyone involved assumes the information moving through the supply chain is accurate, and the trust is there.<\/p>\n\n\n\n<p>Most of the time, that assumption is correct, but what happens when it isn\u2019t?<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"the-problem-nobody-could-verify\"><strong>The Problem Nobody Could Verify<\/strong><\/h2>\n\n\n\n<p>Before ads.txt entered the picture, verifying inventory sources wasn&#8217;t always straightforward. Programmatic advertising created enormous opportunities for automation, but it also introduced additional layers between buyers and sellers.&nbsp;<\/p>\n\n\n\n<p>That\u2019s how inventory could pass through multiple intermediaries before a final transaction occurred, and supply paths became more complex. But transparency \u2013 it just became harder to maintain. This wasn&#8217;t necessarily anyone&#8217;s fault, since the ecosystem evolved quickly, and complexity arrived as a natural side effect of growth. In which cases, complexity allows abuse.<\/p>\n\n\n<div class=\"block__preview\">\n        <a href=\"https:\/\/adex.com\/blog\/quishing-in-ads-qr-code-phishing\/\" class=\"block__preview_img\"><img src=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/06\/adex-quishing-in-ads.png\" srcset=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/06\/adex-quishing-in-ads.png\" sizes=\"100vw\" alt=\"What if that harmless QR code in an ad is actually hiding a phishing page? This article explains how quishing in ads works\" decoding=\"async\" class=\"lazy\"><\/a>\n    <div class=\"block__preview_box\">\n        <a href=\"https:\/\/adex.com\/blog\/category\/current_risks\/\" class=\"block__preview_box-cat\">Current risks<\/a>        <h3 class=\"block__preview_box-title\" id=\"quishing-in-ads-how-qr-codes-can-lead-users-to-phishing-pages\"><a href=\"https:\/\/adex.com\/blog\/quishing-in-ads-qr-code-phishing\/\">Quishing in Ads: How QR Codes Can Lead Users to Phishing Pages<\/a><\/h3>\n    <\/div>\n<\/div>\n<style>\n.block__preview {display: flex;align-items: center;justify-content: center; margin: 32px 0;}\n.block__preview a {text-decoration: none;}\n.block__preview_img {min-width: 360px;max-width: 360px;min-height: 188px;width: 100%;height: 100%;}\n.block__preview_img img {width: 100%;height: 100%;}\n.block__preview_box {margin-left: 40px;max-width: 360px;}\n.block__preview_box-cat {color: #00B8A7 !important;font-weight: 600;font-size: 12px;line-height: 16px;text-transform: uppercase; display: block; margin-bottom: 4px;}\n.block__preview_box-cat:hover {color: #FE645A !important; text-decoration: none !important;}\n.block__preview_box-title {font-size: 20px;font-weight: 700;line-height: 24px;color: #0B172D;}\n.block__preview_box-title a {color: #0B172D !important;}\n.block__preview_box-title a:hover {color: #FE645A !important;}\n@media screen and (max-width: 768px) {.block__preview {flex-direction: column;}.block__preview_box {max-width: 100%; margin-top: 32px;margin-left: 0px;}.block__preview_img {max-width: 100%;min-width: 100%;min-height: 100%;}}<\/style>\n\n\n\n<p>And for fraudsters, one opportunity stood out in particular: when advertisers couldn&#8217;t easily verify who was authorized to sell inventory. That\u2019s when <em>bad actors<\/em> could potentially claim relationships that didn&#8217;t actually exist (<strong>Spoiler:<\/strong> exactly what started happening). <\/p>\n\n\n\n<p>Inventory associated with legitimate publishers began appearing through unauthorized channels: buyers believed they were purchasing impressions from trusted sources when, in reality, those impressions originated elsewhere.<br><br>The opportunity fraudsters got was simple: if buyers couldn&#8217;t easily verify who was authorized to sell a publisher&#8217;s inventory, why not just claim to be selling it anyway?<\/p>\n\n\n\n<div class=\"adex-spoofing-wrap\">\n<style>\n.adex-spoofing-wrap {\n    max-width: 100%;\n    margin: 30px auto;\n    padding: 28px 22px;\n    border-radius: 20px;\n    background: linear-gradient(180deg,#ffffff 0%,#f8fbfd 100%);\n    font-family: Inter, Arial, sans-serif;\n    border: 1px solid #e8eef3;\n    box-shadow: 0 14px 32px rgba(18,38,63,0.07);\n    position: relative;\n    overflow: hidden;\n    box-sizing: border-box;\n}\n\n.adex-spoofing-wrap *,\n.adex-spoofing-wrap *::before,\n.adex-spoofing-wrap *::after {\n    box-sizing: border-box;\n}\n\n.adex-spoofing-wrap .glow-1 {\n    position: absolute;\n    width: 220px;\n    height: 220px;\n    border-radius: 50%;\n    background: radial-gradient(circle,\n        rgba(37,208,189,0.08),\n        transparent 70%);\n    top: -100px;\n    right: -70px;\n    pointer-events: none;\n    z-index: 1;\n}\n\n.adex-spoofing-wrap .glow-2 {\n    position: absolute;\n    width: 200px;\n    height: 200px;\n    border-radius: 50%;\n    background: radial-gradient(circle,\n        rgba(65,124,255,0.06),\n        transparent 70%);\n    bottom: -90px;\n    left: -80px;\n    pointer-events: none;\n    z-index: 1;\n}\n\n.adex-spoofing-wrap h2 {\n    position: relative;\n    z-index: 2;\n    text-align: center;\n    font-size: 24px;\n    color: #152238;\n    margin: 0 0 8px;\n    line-height: 1.25;\n}\n\n.adex-spoofing-wrap .subtitle {\n    position: relative;\n    z-index: 2;\n    text-align: center;\n    max-width: 540px;\n    margin: 0 auto 26px;\n    color: #667085;\n    font-size: 14px;\n    line-height: 1.55;\n}\n\n.adex-spoofing-wrap .path-label {\n    position: relative;\n    z-index: 2;\n    display: inline-block;\n    padding: 6px 14px;\n    border-radius: 999px;\n    font-size: 11px;\n    font-weight: 700;\n    letter-spacing: 0.4px;\n    text-transform: uppercase;\n    margin-bottom: 16px;\n}\n\n.adex-spoofing-wrap .legit-label {\n    background: rgba(37,208,189,0.12);\n    color: #0f766e;\n}\n\n.adex-spoofing-wrap .fraud-label {\n    background: rgba(239,68,68,0.10);\n    color: #dc2626;\n}\n\n.adex-spoofing-wrap .flow {\n    position: relative;\n    z-index: 2;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    flex-wrap: wrap;\n    gap: 8px;\n}\n\n.adex-spoofing-wrap .node {\n    width: 100px;\n    min-height: 78px;\n    background: rgba(255,255,255,0.9);\n    border-radius: 14px;\n    padding: 12px 8px;\n    text-align: center;\n    box-shadow: 0 8px 18px rgba(15,23,42,0.05);\n    border: 1px solid #edf2f7;\n    transition: 0.25s;\n    box-sizing: border-box;\n}\n\n.adex-spoofing-wrap .node:hover {\n    transform: translateY(-3px);\n}\n\n.adex-spoofing-wrap .node-legit {\n    border-top: 3px solid #25d0bd;\n}\n\n.adex-spoofing-wrap .node-fraud {\n    border-top: 3px solid #ef4444;\n}\n\n.adex-spoofing-wrap .icon {\n    font-size: 18px;\n    margin-bottom: 6px;\n}\n\n.adex-spoofing-wrap .title {\n    font-size: 11px;\n    font-weight: 600;\n    color: #152238;\n    line-height: 1.3;\n}\n\n.adex-spoofing-wrap .arrow {\n    font-size: 18px;\n    font-weight: bold;\n    flex-shrink: 0;\n}\n\n.adex-spoofing-wrap .arrow-green {\n    color: #25d0bd;\n}\n\n.adex-spoofing-wrap .arrow-red {\n    color: #ef4444;\n}\n\n.adex-spoofing-wrap .divider {\n    position: relative;\n    z-index: 2;\n    height: 1px;\n    background: linear-gradient(\n        90deg,\n        transparent,\n        #dbe4ea,\n        transparent\n    );\n    margin: 28px 0;\n}\n\n.adex-spoofing-wrap .legend {\n    position: relative;\n    z-index: 2;\n    display: flex;\n    justify-content: center;\n    gap: 24px;\n    flex-wrap: wrap;\n    margin-top: 18px;\n}\n\n.adex-spoofing-wrap .legend-item {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    color: #475467;\n    font-size: 12px;\n}\n\n.adex-spoofing-wrap .line {\n    width: 26px;\n    height: 3px;\n    border-radius: 20px;\n    flex-shrink: 0;\n}\n\n.adex-spoofing-wrap .green {\n    background: #25d0bd;\n}\n\n.adex-spoofing-wrap .red {\n    background: #ef4444;\n}\n\n@media (max-width: 700px) {\n\n    .adex-spoofing-wrap .flow {\n        flex-direction: column;\n    }\n\n    .adex-spoofing-wrap .arrow {\n        transform: rotate(90deg);\n    }\n\n    .adex-spoofing-wrap .node {\n        width: 100%;\n        max-width: 260px;\n    }\n\n    .adex-spoofing-wrap {\n        padding: 22px 16px;\n    }\n\n    .adex-spoofing-wrap h2 {\n        font-size: 20px;\n    }\n}\n<\/style>\n\n    <div class=\"glow-1\"><\/div>\n    <div class=\"glow-2\"><\/div>\n\n    <h2 id=\"how-inventory-spoofing-happens\">How Inventory Spoofing Happens<\/h2>\n\n    <p class=\"subtitle\">\n        Both supply paths can appear identical to buyers \u2014 the difference is whether the seller is actually authorized by the publisher.\n    <\/p>\n\n    <div class=\"path-label legit-label\">\n        Legitimate Supply Path\n    <\/div>\n\n    <div class=\"flow\">\n\n        <div class=\"node node-legit\">\n            <div class=\"icon\">\ud83d\udee1\ufe0f<\/div>\n            <div class=\"title\">Publisher<\/div>\n        <\/div>\n\n        <div class=\"arrow arrow-green\">\u2192<\/div>\n\n        <div class=\"node node-legit\">\n            <div class=\"icon\">\u2714\ufe0f<\/div>\n            <div class=\"title\">Authorized Seller<\/div>\n        <\/div>\n\n        <div class=\"arrow arrow-green\">\u2192<\/div>\n\n        <div class=\"node node-legit\">\n            <div class=\"icon\">\ud83d\udd04<\/div>\n            <div class=\"title\">Ad Exchange<\/div>\n        <\/div>\n\n        <div class=\"arrow arrow-green\">\u2192<\/div>\n\n        <div class=\"node node-legit\">\n            <div class=\"icon\">\ud83d\udcbc<\/div>\n            <div class=\"title\">Buyer<\/div>\n        <\/div>\n\n        <div class=\"arrow arrow-green\">\u2192<\/div>\n\n        <div class=\"node node-legit\">\n            <div class=\"icon\">\ud83d\udc41\ufe0f<\/div>\n            <div class=\"title\">Ad Impression<\/div>\n        <\/div>\n\n    <\/div>\n\n    <div class=\"divider\"><\/div>\n\n    <div class=\"path-label fraud-label\">\n        Spoofed Supply Path\n    <\/div>\n\n    <div class=\"flow\">\n\n        <div class=\"node\">\n            <div class=\"icon\">\ud83d\udee1\ufe0f<\/div>\n            <div class=\"title\">Publisher<\/div>\n        <\/div>\n\n        <div class=\"arrow arrow-red\">\u2192<\/div>\n\n        <div class=\"node node-fraud\">\n            <div class=\"icon\">\u26a0\ufe0f<\/div>\n            <div class=\"title\">Unauthorized Seller<\/div>\n        <\/div>\n\n        <div class=\"arrow arrow-red\">\u2192<\/div>\n\n        <div class=\"node node-fraud\">\n            <div class=\"icon\">\ud83d\udd04<\/div>\n            <div class=\"title\">Ad Exchange<\/div>\n        <\/div>\n\n        <div class=\"arrow arrow-red\">\u2192<\/div>\n\n        <div class=\"node node-fraud\">\n            <div class=\"icon\">\ud83e\udd1d<\/div>\n            <div class=\"title\">\n                Buyer Believes It&#8217;s Legitimate\n            <\/div>\n        <\/div>\n\n        <div class=\"arrow arrow-red\">\u2192<\/div>\n\n        <div class=\"node node-fraud\">\n            <div class=\"icon\">\u274c<\/div>\n            <div class=\"title\">\n                Fraudulent Impression Purchased\n            <\/div>\n        <\/div>\n\n    <\/div>\n\n    <div class=\"legend\">\n        <div class=\"legend-item\">\n            <div class=\"line green\"><\/div>\n            Authorized inventory\n        <\/div>\n\n        <div class=\"legend-item\">\n            <div class=\"line red\"><\/div>\n            Spoofed inventory\n        <\/div>\n    <\/div>\n\n<\/div>\n\n\n\n<p>A scheme uncovered in early 2025 shows exactly how this plays out. <a href=\"https:\/\/ir.doubleverify.com\/news-events\/press-releases\/press-releases-details\/2025\/DoubleVerify-Issues-Industry-Alert-for-Ads-txt-Exploits\/default.aspx\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">DoubleVerify&#8217;s Fraud Lab exposed Synthetic Echo<\/a>: a network of over 200 AI-generated websites, monetized through multiple ad exchanges, using deceptive domain names like <em>espn24.co.uk<\/em>, <em>nbcsportz.com<\/em>, and <em>cbsnewz.com<\/em> to pass themselves off as legitimate publishers. The sites were pumping out low-quality AI content, but that wasn&#8217;t really the point \u2013 it was the ads running on them.<\/p>\n\n\n\n<p>So, what made it especially hard to catch? The Synthetic Echo sites had copied near-identical <strong>ads.txt <\/strong>files from real, reputable publishers, and later cloned their authorized seller lists to trick programmatic platforms into treating them as legitimate. Once again: buyers thought they were reaching real audiences on real publishers when, in fact, they weren&#8217;t.<br><br>The result (apart from creating a massive financial loss for the legitimate publishers): it undermined trust and created uncertainty throughout the entire buying process.<\/p>\n\n\n<div class=\"block__preview\">\n        <a href=\"https:\/\/adex.com\/blog\/new-threat-malicious-redirects-detected-in-ad-campaigns\/\" class=\"block__preview_img\"><img src=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2023\/06\/Adex-malicious-redirects-case-study.png\" srcset=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2023\/06\/Adex-malicious-redirects-case-study.png\" sizes=\"100vw\" alt=\"Adex - malicious redirects case study\" decoding=\"async\" class=\"lazy\"><\/a>\n    <div class=\"block__preview_box\">\n        <a href=\"https:\/\/adex.com\/blog\/category\/current_risks\/\" class=\"block__preview_box-cat\">Current risks<\/a>        <h3 class=\"block__preview_box-title\" id=\"new-threat-malicious-redirects-detected-in-ad-campaigns\"><a href=\"https:\/\/adex.com\/blog\/new-threat-malicious-redirects-detected-in-ad-campaigns\/\">[New Threat] Malicious Redirects Detected in Ad Campaigns<\/a><\/h3>\n    <\/div>\n<\/div>\n<style>\n.block__preview {display: flex;align-items: center;justify-content: center; margin: 32px 0;}\n.block__preview a {text-decoration: none;}\n.block__preview_img {min-width: 360px;max-width: 360px;min-height: 188px;width: 100%;height: 100%;}\n.block__preview_img img {width: 100%;height: 100%;}\n.block__preview_box {margin-left: 40px;max-width: 360px;}\n.block__preview_box-cat {color: #00B8A7 !important;font-weight: 600;font-size: 12px;line-height: 16px;text-transform: uppercase; display: block; margin-bottom: 4px;}\n.block__preview_box-cat:hover {color: #FE645A !important; text-decoration: none !important;}\n.block__preview_box-title {font-size: 20px;font-weight: 700;line-height: 24px;color: #0B172D;}\n.block__preview_box-title a {color: #0B172D !important;}\n.block__preview_box-title a:hover {color: #FE645A !important;}\n@media screen and (max-width: 768px) {.block__preview {flex-direction: column;}.block__preview_box {max-width: 100%; margin-top: 32px;margin-left: 0px;}.block__preview_img {max-width: 100%;min-width: 100%;min-height: 100%;}}<\/style>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"the-simplest-fix-nobody-expected\"><strong>The Simplest Fix Nobody Expected<\/strong><\/h2>\n\n\n\n<p>When the ad industry finally agreed on a solution, it wasn&#8217;t the sweeping technological overhaul you might expect. No industry-wide platform rebuild, no blockchains, and no fancy AI features.<\/p>\n\n\n\n<p>It was a text file!<\/p>\n\n\n<div class=\"block__bord\"><div class=\"block__bord_desc\"><p>More specifically, <strong>ads.txt <\/strong>(<strong>Authorized Digital Sellers)<\/strong> \u2013 it allows publishers to publicly post which companies are permitted to sell their inventory.<\/p>\n<\/div><\/div>\n<style>\n.block__bord { margin: 32px 0; padding: 1.25em 2.375em;\tborder-radius: 24px; background: rgba(0, 220, 200, 0.20); }\n.block__bord_desc {font-size: 16px !important;font-weight: 400 !important;color: #606060 !important;}\n<\/style>\n\n\n\n<p><strong>app-ads.txt <\/strong>extends the same concept, but to mobile applications.<\/p>\n\n\n\n<p>Think of it like a guest list outside a venue. If someone claims to be on it, you check, if they&#8217;re not there, they&#8217;re not getting in: no guesswork, no back-channel verification, and no taking anyone&#8217;s word for it.&nbsp;<\/p>\n\n\n\n<p>The list is public on the publisher&#8217;s own domain, and anyone in the supply chain can look it up before a single dollar changes hands (i.e: buyers, exchanges, verification platforms, etc.).<\/p>\n\n\n\n<div class=\"adstxt-card-wrap\">\n<style>\n.adstxt-card-wrap {\n    max-width: 100%;\n    margin: 30px auto;\n    padding: 28px 22px;\n    background: linear-gradient(180deg,#ffffff 0%,#f8fbfd 100%);\n    border: 1px solid #e7edf3;\n    border-radius: 20px;\n    box-shadow: 0 14px 32px rgba(15,23,42,0.07);\n    font-family: Inter, Arial, sans-serif;\n    position: relative;\n    overflow: hidden;\n    box-sizing: border-box;\n}\n\n.adstxt-card-wrap *,\n.adstxt-card-wrap *::before,\n.adstxt-card-wrap *::after {\n    box-sizing: border-box;\n}\n\n.adstxt-card-wrap .glow {\n    position: absolute;\n    width: 220px;\n    height: 220px;\n    border-radius: 50%;\n    background: radial-gradient(\n        circle,\n        rgba(37,208,189,0.08),\n        transparent 70%\n    );\n    top: -100px;\n    right: -80px;\n    pointer-events: none;\n    z-index: 1;\n}\n\n.adstxt-card-wrap h2 {\n    position: relative;\n    z-index: 2;\n    text-align: center;\n    font-size: 24px;\n    color: #152238;\n    margin: 0 0 8px;\n    line-height: 1.25;\n}\n\n.adstxt-card-wrap .adstxt-subtitle {\n    position: relative;\n    z-index: 2;\n    text-align: center;\n    color: #667085;\n    max-width: 540px;\n    margin: 0 auto 26px;\n    font-size: 14px;\n    line-height: 1.55;\n}\n\n.adstxt-card-wrap .adstxt-flow {\n    position: relative;\n    z-index: 2;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 14px;\n    flex-wrap: wrap;\n}\n\n.adstxt-card-wrap .adstxt-column {\n    flex: 1;\n    min-width: 180px;\n}\n\n.adstxt-card-wrap .card {\n    background: rgba(255,255,255,0.9);\n    border: 1px solid #edf2f7;\n    border-radius: 16px;\n    padding: 18px 16px;\n    box-shadow: 0 8px 18px rgba(15,23,42,0.05);\n    text-align: center;\n    box-sizing: border-box;\n}\n\n.adstxt-card-wrap .icon {\n    font-size: 24px;\n    margin-bottom: 10px;\n}\n\n.adstxt-card-wrap .heading {\n    font-size: 13px;\n    font-weight: 700;\n    color: #152238;\n    margin-bottom: 10px;\n    line-height: 1.3;\n}\n\n.adstxt-card-wrap .description {\n    color: #667085;\n    line-height: 1.45;\n    font-size: 12px;\n}\n\n.adstxt-card-wrap .arrow {\n    font-size: 22px;\n    color: #25d0bd;\n    font-weight: bold;\n    flex-shrink: 0;\n}\n\n.adstxt-card-wrap .adstxt-file {\n    border-top: 4px solid #25d0bd;\n}\n\n.adstxt-card-wrap .domain-list {\n    margin-top: 12px;\n    display: flex;\n    flex-direction: column;\n    gap: 7px;\n}\n\n.adstxt-card-wrap .domain {\n    background: #f5f9fc;\n    border: 1px solid #e3ebf2;\n    border-radius: 10px;\n    padding: 8px;\n    font-family: monospace;\n    color: #152238;\n    font-size: 11px;\n}\n\n.adstxt-card-wrap .result {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    padding: 10px;\n    border-radius: 12px;\n    margin-bottom: 8px;\n    text-align: left;\n}\n\n.adstxt-card-wrap .success {\n    background: rgba(37,208,189,0.10);\n    border: 1px solid rgba(37,208,189,0.25);\n}\n\n.adstxt-card-wrap .fail {\n    background: rgba(239,68,68,0.08);\n    border: 1px solid rgba(239,68,68,0.20);\n}\n\n.adstxt-card-wrap .result-icon {\n    font-size: 16px;\n    flex-shrink: 0;\n}\n\n.adstxt-card-wrap .result-text {\n    font-size: 11px;\n    font-weight: 600;\n    color: #152238;\n}\n\n.adstxt-card-wrap .footer {\n    position: relative;\n    z-index: 2;\n    margin-top: 22px;\n    text-align: center;\n    padding-top: 18px;\n    border-top: 1px solid #e6edf3;\n}\n\n.adstxt-card-wrap .footer span {\n    display: inline-block;\n    padding: 7px 14px;\n    margin: 4px;\n    border-radius: 999px;\n    background: #f4f8fb;\n    color: #475467;\n    font-weight: 600;\n    font-size: 12px;\n}\n\n@media (max-width: 700px) {\n\n    .adstxt-card-wrap .adstxt-flow {\n        flex-direction: column;\n    }\n\n    .adstxt-card-wrap .arrow {\n        transform: rotate(90deg);\n    }\n\n    .adstxt-card-wrap .adstxt-column {\n        width: 100%;\n        max-width: 260px;\n    }\n\n    .adstxt-card-wrap {\n        padding: 22px 16px;\n    }\n\n    .adstxt-card-wrap h2 {\n        font-size: 20px;\n    }\n}\n<\/style>\n\n    <div class=\"glow\"><\/div>\n\n    <h2 id=\"how-ads-txt-works\">How ads.txt Works<\/h2>\n\n    <p class=\"adstxt-subtitle\">\n        Think of ads.txt as a guest list for advertising \u2014 only approved sellers are allowed to enter and sell a publisher&#8217;s inventory.\n    <\/p>\n\n    <div class=\"adstxt-flow\">\n\n        <!-- LEFT -->\n\n        <div class=\"adstxt-column\">\n            <div class=\"card\">\n\n                <div class=\"icon\">\ud83d\udc64<\/div>\n\n                <div class=\"heading\">\n                    Seller Requests Inventory\n                <\/div>\n\n                <div class=\"description\">\n                    A seller attempts to offer the publisher&#8217;s inventory to buyers.\n                <\/div>\n\n            <\/div>\n        <\/div>\n\n        <div class=\"arrow\">\u2192<\/div>\n\n        <!-- MIDDLE -->\n\n        <div class=\"adstxt-column\">\n            <div class=\"card adstxt-file\">\n\n                <div class=\"icon\">\ud83d\udcc4<\/div>\n\n                <div class=\"heading\">\n                    Publisher ads.txt File\n                <\/div>\n\n                <div class=\"domain-list\">\n                    <div class=\"domain\">google.com<\/div>\n                    <div class=\"domain\">pubmatic.com<\/div>\n                    <div class=\"domain\">rubicon.com<\/div>\n                <\/div>\n\n            <\/div>\n        <\/div>\n\n        <div class=\"arrow\">\u2192<\/div>\n\n        <!-- RIGHT -->\n\n        <div class=\"adstxt-column\">\n            <div class=\"card\">\n\n                <div class=\"heading\">\n                    Verification Result\n                <\/div>\n\n                <div class=\"result success\">\n                    <div class=\"result-icon\">\u2705<\/div>\n                    <div class=\"result-text\">\n                        Listed \u2192 Authorized\n                    <\/div>\n                <\/div>\n\n                <div class=\"result fail\">\n                    <div class=\"result-icon\">\u274c<\/div>\n                    <div class=\"result-text\">\n                        Not Listed \u2192 Rejected\n                    <\/div>\n                <\/div>\n\n            <\/div>\n        <\/div>\n\n    <\/div>\n\n<\/div>\n\n\n\n<p>Before <strong>ads.txt<\/strong>, there was no equivalent of that list. In other words, sellers could claim relationships with publishers that simply didn&#8217;t exist, and buyers had no easy way to call their bluff. <strong>ads.txt <\/strong>changed that dynamic entirely, and it didn&#8217;t require a massive technical lift or industry-wide coordination to implement.&nbsp;<\/p>\n\n\n\n<p>As a result, publishers could adopt it quickly, and the benefits were immediate, giving unauthorized sellers something concrete working against them.<\/p>\n\n\n<div class=\"block__preview\">\n        <a href=\"https:\/\/adex.com\/blog\/infostealer-logs-stolen-browser-data-fraud\/\" class=\"block__preview_img\"><img src=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/06\/Adex-Infostealer-Logs-Stolen-Browser-Data-Fraud.png\" srcset=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/06\/Adex-Infostealer-Logs-Stolen-Browser-Data-Fraud.png\" sizes=\"100vw\" alt=\"Adex - infostealer logs and stolen browser data, showing how cookies, session tokens, and saved credentials can fuel account takeover and fraud.\" decoding=\"async\" class=\"lazy\"><\/a>\n    <div class=\"block__preview_box\">\n        <a href=\"https:\/\/adex.com\/blog\/category\/current_risks\/\" class=\"block__preview_box-cat\">Current risks<\/a>        <h3 class=\"block__preview_box-title\" id=\"infostealer-logs-how-stolen-browser-data-fuels-fraud\"><a href=\"https:\/\/adex.com\/blog\/infostealer-logs-stolen-browser-data-fraud\/\">Infostealer Logs: How Stolen Browser Data Fuels Fraud<\/a><\/h3>\n    <\/div>\n<\/div>\n<style>\n.block__preview {display: flex;align-items: center;justify-content: center; margin: 32px 0;}\n.block__preview a {text-decoration: none;}\n.block__preview_img {min-width: 360px;max-width: 360px;min-height: 188px;width: 100%;height: 100%;}\n.block__preview_img img {width: 100%;height: 100%;}\n.block__preview_box {margin-left: 40px;max-width: 360px;}\n.block__preview_box-cat {color: #00B8A7 !important;font-weight: 600;font-size: 12px;line-height: 16px;text-transform: uppercase; display: block; margin-bottom: 4px;}\n.block__preview_box-cat:hover {color: #FE645A !important; text-decoration: none !important;}\n.block__preview_box-title {font-size: 20px;font-weight: 700;line-height: 24px;color: #0B172D;}\n.block__preview_box-title a {color: #0B172D !important;}\n.block__preview_box-title a:hover {color: #FE645A !important;}\n@media screen and (max-width: 768px) {.block__preview {flex-direction: column;}.block__preview_box {max-width: 100%; margin-top: 32px;margin-left: 0px;}.block__preview_img {max-width: 100%;min-width: 100%;min-height: 100%;}}<\/style>\n\n\n\n<p>But it wasn&#8217;t designed to catch every type of fraud, having the specific job to make unauthorized inventory claims easy to spot and easy to reject. And that\u2019s what it works well for specifically. No wonder adoption spread fast among major publishers, especially since the data backed it up, with sites running <strong>ads.txt<\/strong> showing lower fraud rates than those without it.<\/p>\n\n\n\n<p>However, there\u2019s one thing worth knowing about fraud: it doesn&#8217;t give up; it just gets more creative\u2026<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-did-the-bad-actors-learn-to-go-around-the-rules\"><strong>How Did the Bad Actors Learn to Go Around the Rules?<\/strong><\/h2>\n\n\n\n<p>That\u2019s a good question, particularly when having a system and using it properly are two very different things.<\/p>\n\n\n\n<p>In reality, <strong>ads.txt<\/strong> works when buyers check it, exchanges enforce it, and most importantly, when publishers keep it updated.&nbsp;<\/p>\n\n\n\n<p>The problem is that the whole chain has to hold, and in a programmatic ecosystem moving billions of impressions a day, there are plenty of weak links to exploit. Fraudsters figured this out early, and rather than trying to break <strong>ads.txt <\/strong>directly, they just went around it.<\/p>\n\n\n\n<div class=\"adex-bypass-wrap\">\n<style>\n.adex-bypass-wrap {\n    max-width: 100%;\n    margin: 40px auto;\n    padding: 40px 30px;\n    background: linear-gradient(180deg,#ffffff 0%,#f8fbfd 100%);\n    border: 1px solid #e7edf3;\n    border-radius: 24px;\n    box-shadow: 0 20px 50px rgba(15,23,42,0.08);\n    font-family: Inter, Arial, sans-serif;\n    position: relative;\n    overflow: hidden;\n    box-sizing: border-box;\n}\n\n.adex-bypass-wrap *,\n.adex-bypass-wrap *::before,\n.adex-bypass-wrap *::after {\n    box-sizing: border-box;\n}\n\n.adex-bypass-wrap .glow-1 {\n    content: \"\";\n    position: absolute;\n    width: 300px;\n    height: 300px;\n    right: -100px;\n    top: -120px;\n    border-radius: 50%;\n    background: radial-gradient(\n        circle,\n        rgba(37,208,189,0.08),\n        transparent 70%\n    );\n    pointer-events: none;\n    z-index: 1;\n}\n\n.adex-bypass-wrap .glow-2 {\n    content: \"\";\n    position: absolute;\n    width: 280px;\n    height: 280px;\n    left: -100px;\n    bottom: -120px;\n    border-radius: 50%;\n    background: radial-gradient(\n        circle,\n        rgba(65,124,255,0.05),\n        transparent 70%\n    );\n    pointer-events: none;\n    z-index: 1;\n}\n\n.adex-bypass-wrap h2 {\n    position: relative;\n    z-index: 2;\n    text-align: center;\n    font-size: 32px;\n    color: #152238;\n    margin: 0 0 16px;\n    line-height: 1.2;\n}\n\n.adex-bypass-wrap .adex-subtitle {\n    position: relative;\n    z-index: 2;\n    text-align: center;\n    max-width: 700px;\n    margin: 0 auto 40px;\n    color: #667085;\n    font-size: 16px;\n    line-height: 1.6;\n}\n\n.adex-bypass-wrap .cards {\n    position: relative;\n    z-index: 2;\n    display: grid;\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n    gap: 22px;\n}\n\n.adex-bypass-wrap .card {\n    background: rgba(255,255,255,0.92);\n    border: 1px solid #e8eef4;\n    border-radius: 20px;\n    padding: 26px 22px;\n    box-shadow: 0 12px 30px rgba(15,23,42,0.06);\n    transition: 0.25s ease;\n    min-width: 0;\n}\n\n.adex-bypass-wrap .card:hover {\n    transform: translateY(-4px);\n}\n\n.adex-bypass-wrap .warning {\n    border-top: 5px solid #f59e0b;\n}\n\n.adex-bypass-wrap .verification {\n    border-top: 5px solid #25d0bd;\n}\n\n.adex-bypass-wrap .abuse {\n    border-top: 5px solid #ef4444;\n}\n\n.adex-bypass-wrap .card-header {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    margin-bottom: 20px;\n}\n\n.adex-bypass-wrap .icon {\n    font-size: 28px;\n    flex-shrink: 0;\n}\n\n.adex-bypass-wrap .title {\n    font-size: 19px;\n    font-weight: 700;\n    color: #152238;\n    line-height: 1.3;\n}\n\n.adex-bypass-wrap .list {\n    display: flex;\n    flex-direction: column;\n    gap: 14px;\n}\n\n.adex-bypass-wrap .item {\n    background: #f6f9fc;\n    border: 1px solid #e7edf3;\n    border-radius: 12px;\n    padding: 12px 14px;\n    color: #475467;\n    font-size: 14px;\n    line-height: 1.5;\n}\n\n.adex-bypass-wrap .banner {\n    position: relative;\n    z-index: 2;\n    margin-top: 36px;\n    padding: 26px;\n    border-radius: 20px;\n    background: rgba(37,208,189,0.08);\n    border: 1px solid rgba(37,208,189,0.18);\n    text-align: center;\n}\n\n.adex-bypass-wrap .banner-text {\n    color: #152238;\n    font-size: 19px;\n    line-height: 1.5;\n    font-weight: 600;\n}\n\n.adex-bypass-wrap .banner-text strong {\n    color: #0f766e;\n}\n\n@media (max-width: 800px) {\n\n    .adex-bypass-wrap .cards {\n        grid-template-columns: 1fr;\n    }\n\n    .adex-bypass-wrap {\n        padding: 30px 18px;\n    }\n\n    .adex-bypass-wrap h2 {\n        font-size: 26px;\n    }\n\n    .adex-bypass-wrap .banner-text {\n        font-size: 16px;\n    }\n}\n<\/style>\n\n    <div class=\"glow-1\"><\/div>\n    <div class=\"glow-2\"><\/div>\n\n    <h2 id=\"how-fraudsters-bypass-ads-txt\">How Fraudsters Bypass ads.txt<\/h2>\n\n    <p class=\"adex-subtitle\">\n        Attackers rarely compromise the ads.txt file itself.\n        Instead, they take advantage of outdated records, weak verification,\n        and trust gaps throughout the advertising supply chain.\n    <\/p>\n\n    <div class=\"cards\">\n\n        <!-- COLUMN 1 -->\n\n        <div class=\"card warning\">\n\n            <div class=\"card-header\">\n                <div class=\"icon\">\u26a0\ufe0f<\/div>\n                <div class=\"title\">\n                    Outdated Files\n                <\/div>\n            <\/div>\n\n            <div class=\"list\">\n                <div class=\"item\">\n                    Old seller entries remain active\n                <\/div>\n\n                <div class=\"item\">\n                    Missing updates and maintenance\n                <\/div>\n\n                <div class=\"item\">\n                    Former partners stay listed\n                <\/div>\n            <\/div>\n\n        <\/div>\n\n        <!-- COLUMN 2 -->\n\n        <div class=\"card verification\">\n\n            <div class=\"card-header\">\n                <div class=\"icon\">\ud83d\udd0d<\/div>\n                <div class=\"title\">\n                    Weak Verification\n                <\/div>\n            <\/div>\n\n            <div class=\"list\">\n                <div class=\"item\">\n                    Missing seller IDs\n                <\/div>\n\n                <div class=\"item\">\n                    Buyers skip verification checks\n                <\/div>\n\n                <div class=\"item\">\n                    Trust based solely on domains\n                <\/div>\n            <\/div>\n\n        <\/div>\n\n        <!-- COLUMN 3 -->\n\n        <div class=\"card abuse\">\n\n            <div class=\"card-header\">\n                <div class=\"icon\">\ud83c\udfad<\/div>\n                <div class=\"title\">\n                    Supply Chain Abuse\n                <\/div>\n            <\/div>\n\n            <div class=\"list\">\n                <div class=\"item\">\n                    Legitimate reseller relationships\n                <\/div>\n\n                <div class=\"item\">\n                    Spoofed domains\n                <\/div>\n\n                <div class=\"item\">\n                    Inventory disguised as authentic\n                <\/div>\n            <\/div>\n\n        <\/div>\n\n    <\/div>\n\n    <div class=\"banner\">\n        <div class=\"banner-text\">\n            Fraudsters rarely <strong>break ads.txt<\/strong>.<br>\n            They exploit the gaps around it.\n        <\/div>\n    <\/div>\n\n<\/div>\n\n\n\n<p>One angle is simple negligence. Publisher-partner relationships change constantly (i.e. when new deals get signed and\/or old ones end), but the <strong>ads.txt<\/strong> file doesn&#8217;t always get updated to match those changes. And that\u2019s how outdated or incomplete files continue to cause lost revenue opportunities for publishers and wasted spend for advertisers.&nbsp;<\/p>\n\n\n\n<p>For example: A seller that should have been removed months ago still looks authorized, and nobody flags it, potentially creating a leak where fraud can happen quietly.<\/p>\n\n\n\n<p>Another angle is verifying on paper, but not in practice. The vast majority of placement reports that buyers get, have no seller IDs included \u2013 just the domain and the quantity of impressions served on that domain. In other words, buyers often can&#8217;t actually do the verification they&#8217;d need to catch mismatches.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/www.linkedin.com\/pulse\/adstxt-zero-day-exploit-wild-brief-history-fraud-ad-fraud-historian\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">According to Fou Analytics<\/a>, buyers see a recognized domain, assume it&#8217;s fine, and move on.<a href=\"https:\/\/www.linkedin.com\/pulse\/adstxt-zero-day-exploit-wild-brief-history-fraud-ad-fraud-historian\">&nbsp;<\/a>And then\u2026 there&#8217;s the more brazen approach called <strong>ads.txt spoofing<\/strong>.<\/p>\n\n\n\n<p>In late 2018, <a href=\"https:\/\/doubleverify.com\/blog\/web\/verify\/ads-txt-under-attack-how-fraudsters-exploit-a-system-meant-to-protect-advertisers\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">DoubleVerify&#8217;s Fraud Lab<\/a> identified a network where bots scraped content from legitimate websites and created spoofed sites with URLs designed to appear original. The scheme&#8217;s operators then sold fraudulent ad slots using the spoofed URLs through authorized resellers listed on the legitimate publishers&#8217; actual <strong>ads.txt<\/strong> files, making the fraudulent inventory appear legitimate. All because it seemed to originate from a valid site via an authorized seller.<a href=\"https:\/\/doubleverify.com\/blog\/web\/verify\/ads-txt-under-attack-how-fraudsters-exploit-a-system-meant-to-protect-advertisers\"><br><br><\/a>That\u2019s right, read it again:<\/p>\n\n\n    <div class=\"block__quote\"><p class=\"block__quote_desc\"><p>They DIDN\u2019T fake the ads.txt file, but used the real one by sneaking into the supply chain through a reseller who wasn&#8217;t examining publishers carefully enough. The guest list was legitimate, and all they did was find a side door in.\u00a0<\/p>\n<\/p><\/div>\n    <style>.block__quote {margin: 32px 0;padding-left: 20px;border-left: 3px solid #00B8A7;}.block__quote_desc {font-weight: 700 !important;font-size: 18px !important;line-height: 28px !important;margin-bottom: 24px !important;}.block__quote_author {display: none;}<\/style>\n\n\n\n<p>The underlying idea behind all of these tactics is the same: convince buyers that inventory is coming from an authorized source when it isn&#8217;t.&nbsp;<\/p>\n\n\n\n<p>What makes this particularly frustrating is that it doesn&#8217;t require sophisticated hacking or technical wizardry, but finding the gap between where verification is supposed to happen and where it actually does. Then, quietly setting up shop there.<\/p>\n\n\n<div class=\"block__preview\">\n        <a href=\"https:\/\/adex.com\/blog\/case-study-xcsset-attack\/\" class=\"block__preview_img\"><img src=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/04\/Adex-xcsset-case-study.png\" srcset=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/04\/Adex-xcsset-case-study.png\" sizes=\"100vw\" alt=\"Adex-xcsset-case-study\" decoding=\"async\" class=\"lazy\"><\/a>\n    <div class=\"block__preview_box\">\n        <a href=\"https:\/\/adex.com\/blog\/category\/current_risks\/\" class=\"block__preview_box-cat\">Current risks<\/a>        <h3 class=\"block__preview_box-title\" id=\"inside-the-build-first-hand-analysis-of-xcssets-attack-on-macos-developer-pipelines\"><a href=\"https:\/\/adex.com\/blog\/case-study-xcsset-attack\/\">Inside the Build: First-Hand Analysis of XCSSET&#8217;s Attack on macOS Developer Pipelines<\/a><\/h3>\n    <\/div>\n<\/div>\n<style>\n.block__preview {display: flex;align-items: center;justify-content: center; margin: 32px 0;}\n.block__preview a {text-decoration: none;}\n.block__preview_img {min-width: 360px;max-width: 360px;min-height: 188px;width: 100%;height: 100%;}\n.block__preview_img img {width: 100%;height: 100%;}\n.block__preview_box {margin-left: 40px;max-width: 360px;}\n.block__preview_box-cat {color: #00B8A7 !important;font-weight: 600;font-size: 12px;line-height: 16px;text-transform: uppercase; display: block; margin-bottom: 4px;}\n.block__preview_box-cat:hover {color: #FE645A !important; text-decoration: none !important;}\n.block__preview_box-title {font-size: 20px;font-weight: 700;line-height: 24px;color: #0B172D;}\n.block__preview_box-title a {color: #0B172D !important;}\n.block__preview_box-title a:hover {color: #FE645A !important;}\n@media screen and (max-width: 768px) {.block__preview {flex-direction: column;}.block__preview_box {max-width: 100%; margin-top: 32px;margin-left: 0px;}.block__preview_img {max-width: 100%;min-width: 100%;min-height: 100%;}}<\/style>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-spoofed-inventory-actually-costs\"><strong>What Spoofed Inventory Actually Costs<\/strong><\/h2>\n\n\n\n<p>When ad fraud comes up in conversation, the discussion almost always goes straight to wasted budget. Fair enough, since nobody wants to pay for inventory that isn&#8217;t what it claims to be.<\/p>\n\n\n\n<p>However, the financial hit is actually the most straightforward part of the problem. You can point at it, measure it, and to some extent, even account for it, while it\u2019s harder to quantify what spoofed inventory does to your data. When fraudulent impressions get mixed in with legitimate ones, your campaign performance numbers start lying to you \u2013 quietly, consistently, and in ways that are hard to detect in real time.&nbsp;<\/p>\n\n\n<div class=\"block__preview\">\n        <a href=\"https:\/\/adex.com\/blog\/phishing-alert-telegram-fraud\/\" class=\"block__preview_img\"><img src=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2025\/07\/Adex-Telegram-fraud-account-hijacking.png\" srcset=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2025\/07\/Adex-Telegram-fraud-account-hijacking.png\" sizes=\"100vw\" alt=\"Adex-Telegram-fraud-account-hijacking\" decoding=\"async\" class=\"lazy\"><\/a>\n    <div class=\"block__preview_box\">\n        <a href=\"https:\/\/adex.com\/blog\/category\/current_risks\/\" class=\"block__preview_box-cat\">Current risks<\/a>        <h3 class=\"block__preview_box-title\" id=\"phishing-scam-alert-telegram-fraud-and-account-hijacking-prevented\"><a href=\"https:\/\/adex.com\/blog\/phishing-alert-telegram-fraud\/\">[Phishing Scam Alert] Telegram Fraud and Account Hijacking Prevented<\/a><\/h3>\n    <\/div>\n<\/div>\n<style>\n.block__preview {display: flex;align-items: center;justify-content: center; margin: 32px 0;}\n.block__preview a {text-decoration: none;}\n.block__preview_img {min-width: 360px;max-width: 360px;min-height: 188px;width: 100%;height: 100%;}\n.block__preview_img img {width: 100%;height: 100%;}\n.block__preview_box {margin-left: 40px;max-width: 360px;}\n.block__preview_box-cat {color: #00B8A7 !important;font-weight: 600;font-size: 12px;line-height: 16px;text-transform: uppercase; display: block; margin-bottom: 4px;}\n.block__preview_box-cat:hover {color: #FE645A !important; text-decoration: none !important;}\n.block__preview_box-title {font-size: 20px;font-weight: 700;line-height: 24px;color: #0B172D;}\n.block__preview_box-title a {color: #0B172D !important;}\n.block__preview_box-title a:hover {color: #FE645A !important;}\n@media screen and (max-width: 768px) {.block__preview {flex-direction: column;}.block__preview_box {max-width: 100%; margin-top: 32px;margin-left: 0px;}.block__preview_img {max-width: 100%;min-width: 100%;min-height: 100%;}}<\/style>\n\n\n\n<p>That\u2019s how you end up with skewed benchmarks and optimization decisions that are made based on signals that don&#8217;t reflect reality. You might end up shifting budget toward a placement that appears to be performing well, without realizing the numbers are inflated by non-human traffic or inventory that was never what it claimed to be. And by the time you spot it, you might&#8217;ve already made decisions you can&#8217;t undo.<\/p>\n\n\n\n<p>Ultimately, there goes trust, and it\u2019s far more difficult to rebuild it than it is to lose.<\/p>\n\n\n<div class=\"block__preview\">\n        <a href=\"https:\/\/adex.com\/blog\/ad-cloaking\/\" class=\"block__preview_img\"><img src=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/06\/Adex-Ad-Cloaking-Reviewer-User-Split.png\" srcset=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/06\/Adex-Ad-Cloaking-Reviewer-User-Split.png\" sizes=\"100vw\" alt=\"Adex - ad cloaking and reviewer-user split, showing how fraudsters serve clean pages to moderators and malicious pages to real users.\" decoding=\"async\" class=\"lazy\"><\/a>\n    <div class=\"block__preview_box\">\n        <a href=\"https:\/\/adex.com\/blog\/category\/current_risks\/\" class=\"block__preview_box-cat\">Current risks<\/a>        <h3 class=\"block__preview_box-title\" id=\"ad-cloaking-when-fraudsters-show-moderators-one-page-and-users-another\"><a href=\"https:\/\/adex.com\/blog\/ad-cloaking\/\">Ad Cloaking: When Fraudsters Show Moderators One Page and Users Another<\/a><\/h3>\n    <\/div>\n<\/div>\n<style>\n.block__preview {display: flex;align-items: center;justify-content: center; margin: 32px 0;}\n.block__preview a {text-decoration: none;}\n.block__preview_img {min-width: 360px;max-width: 360px;min-height: 188px;width: 100%;height: 100%;}\n.block__preview_img img {width: 100%;height: 100%;}\n.block__preview_box {margin-left: 40px;max-width: 360px;}\n.block__preview_box-cat {color: #00B8A7 !important;font-weight: 600;font-size: 12px;line-height: 16px;text-transform: uppercase; display: block; margin-bottom: 4px;}\n.block__preview_box-cat:hover {color: #FE645A !important; text-decoration: none !important;}\n.block__preview_box-title {font-size: 20px;font-weight: 700;line-height: 24px;color: #0B172D;}\n.block__preview_box-title a {color: #0B172D !important;}\n.block__preview_box-title a:hover {color: #FE645A !important;}\n@media screen and (max-width: 768px) {.block__preview {flex-direction: column;}.block__preview_box {max-width: 100%; margin-top: 32px;margin-left: 0px;}.block__preview_img {max-width: 100%;min-width: 100%;min-height: 100%;}}<\/style>\n\n\n\n<p>Once buyers start questioning inventory quality, that skepticism tends to spread, and not just for the specific placement or partner that gets scrutinized. The whole supply chain comes under the microscope. Your deals slow down, verification processes get more burdensome, and the entire buying process becomes more defensive, more cautious, and more expensive to manage.<\/p>\n\n\n\n<p>Why, you might ask? Mostly because the confidence took a hit, and not due to the system getting worse. A burn of trust that also hits publishers.<\/p>\n\n\n\n<p>It&#8217;s easy to look at inventory spoofing as an advertiser problem, since they\u2019re the ones handing over money. All while publishers are sitting on the other side, watching their reputation get used without their permission, and taking damage they had no part in causing.<\/p>\n\n\n\n<p>Most people might not trace problems all the way back through the supply chain before forming an opinion. What they remember instead is what name was attached to the issue. And that association, however unfair, has a way of sticking.<\/p>\n\n\n\n<p>This is why <strong>ads.txt<\/strong> matters beyond the technical mechanics of it. Apart from being just a verification tool, it&#8217;s also a way to draw a clear line around who actually represents them in the market. <\/p>\n\n\n    <div class=\"block__quote\"><p class=\"block__quote_desc\"><p>A way to say, publicly and on record: these are our authorized sellers, and anyone else claiming to sell our inventory is lying. <\/p>\n<\/p><\/div>\n    <style>.block__quote {margin: 32px 0;padding-left: 20px;border-left: 3px solid #00B8A7;}.block__quote_desc {font-weight: 700 !important;font-size: 18px !important;line-height: 28px !important;margin-bottom: 24px !important;}.block__quote_author {display: none;}<\/style>\n\n\n\n<p>That one line protects advertisers from buying fraudulent inventory, and publishers from having their reputation dragged through someone else&#8217;s fraud scheme.<\/p>\n\n\n\n<div class=\"adex-cost-wrap\">\n<style>\n.adex-cost-wrap {\n    max-width: 100%;\n    margin: 30px auto;\n    padding: 28px 22px;\n    background: linear-gradient(180deg,#ffffff 0%,#f8fbfd 100%);\n    border: 1px solid #e7edf3;\n    border-radius: 20px;\n    box-shadow: 0 14px 32px rgba(15,23,42,0.07);\n    font-family: Inter, Arial, sans-serif;\n    position: relative;\n    overflow: hidden;\n    box-sizing: border-box;\n}\n\n.adex-cost-wrap *,\n.adex-cost-wrap *::before,\n.adex-cost-wrap *::after {\n    box-sizing: border-box;\n}\n\n.adex-cost-wrap .glow-1 {\n    position: absolute;\n    width: 220px;\n    height: 220px;\n    right: -80px;\n    top: -90px;\n    border-radius: 50%;\n    background: radial-gradient(\n        circle,\n        rgba(37,208,189,0.08),\n        transparent 70%\n    );\n    pointer-events: none;\n    z-index: 1;\n}\n\n.adex-cost-wrap .glow-2 {\n    position: absolute;\n    width: 200px;\n    height: 200px;\n    left: -80px;\n    bottom: -90px;\n    border-radius: 50%;\n    background: radial-gradient(\n        circle,\n        rgba(65,124,255,0.05),\n        transparent 70%\n    );\n    pointer-events: none;\n    z-index: 1;\n}\n\n.adex-cost-wrap h2 {\n    position: relative;\n    z-index: 2;\n    text-align: center;\n    font-size: 24px;\n    color: #152238;\n    margin: 0 0 10px;\n    line-height: 1.25;\n}\n\n.adex-cost-wrap .adex-subtitle {\n    position: relative;\n    z-index: 2;\n    text-align: center;\n    max-width: 560px;\n    margin: 0 auto 26px;\n    color: #667085;\n    font-size: 14px;\n    line-height: 1.55;\n}\n\n.adex-cost-wrap .impact-grid {\n    position: relative;\n    z-index: 2;\n    display: grid;\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n    gap: 14px;\n}\n\n.adex-cost-wrap .impact-card {\n    background: rgba(255,255,255,0.95);\n    border: 1px solid #e8eef4;\n    border-radius: 16px;\n    padding: 16px 14px;\n    box-shadow: 0 8px 18px rgba(15,23,42,0.05);\n    transition: 0.25s ease;\n    min-width: 0;\n}\n\n.adex-cost-wrap .impact-card:hover {\n    transform: translateY(-3px);\n}\n\n.adex-cost-wrap .financial {\n    border-top: 4px solid #f59e0b;\n}\n\n.adex-cost-wrap .data {\n    border-top: 4px solid #25d0bd;\n}\n\n.adex-cost-wrap .trust {\n    border-top: 4px solid #6366f1;\n}\n\n.adex-cost-wrap .header {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    margin-bottom: 12px;\n}\n\n.adex-cost-wrap .icon {\n    font-size: 20px;\n    flex-shrink: 0;\n}\n\n.adex-cost-wrap .title {\n    font-size: 14px;\n    font-weight: 700;\n    color: #152238;\n    line-height: 1.3;\n}\n\n.adex-cost-wrap .items {\n    display: flex;\n    flex-direction: column;\n    gap: 8px;\n}\n\n.adex-cost-wrap .item {\n    background: #f6f9fc;\n    border: 1px solid #e7edf3;\n    border-radius: 10px;\n    padding: 8px 10px;\n    color: #475467;\n    font-size: 12px;\n    line-height: 1.4;\n}\n\n.adex-cost-wrap .insight {\n    position: relative;\n    z-index: 2;\n    margin-top: 18px;\n    padding: 16px;\n    border-radius: 16px;\n    background: rgba(99,102,241,0.06);\n    border: 1px solid rgba(99,102,241,0.12);\n    text-align: center;\n}\n\n.adex-cost-wrap .insight-text {\n    color: #152238;\n    font-size: 14px;\n    line-height: 1.5;\n    font-weight: 600;\n}\n\n.adex-cost-wrap .insight-text strong {\n    color: #4338ca;\n}\n\n@media (max-width: 600px) {\n\n    .adex-cost-wrap .impact-grid {\n        grid-template-columns: 1fr;\n    }\n\n    .adex-cost-wrap {\n        padding: 22px 16px;\n    }\n\n    .adex-cost-wrap h2 {\n        font-size: 20px;\n    }\n}\n<\/style>\n\n    <div class=\"glow-1\"><\/div>\n    <div class=\"glow-2\"><\/div>\n\n    <h2 id=\"the-hidden-cost-of-inventory-spoofing\">The Hidden Cost of Inventory Spoofing<\/h2>\n\n    <p class=\"adex-subtitle\">\n        The damage goes far beyond lost advertising dollars \u2014 it affects financial performance, campaign data, and the trust that keeps digital advertising functioning.\n    <\/p>\n\n    <div class=\"impact-grid\">\n\n        <!-- Financial -->\n\n        <div class=\"impact-card financial\">\n\n            <div class=\"header\">\n                <div class=\"icon\">\ud83d\udcb0<\/div>\n                <div class=\"title\">\n                    Financial Damage\n                <\/div>\n            <\/div>\n\n            <div class=\"items\">\n                <div class=\"item\">\n                    Wasted ad spend\n                <\/div>\n\n                <div class=\"item\">\n                    Revenue leakage\n                <\/div>\n\n                <div class=\"item\">\n                    Budget misallocation\n                <\/div>\n            <\/div>\n\n        <\/div>\n\n        <!-- Data -->\n\n        <div class=\"impact-card data\">\n\n            <div class=\"header\">\n                <div class=\"icon\">\ud83d\udcca<\/div>\n                <div class=\"title\">\n                    Data Damage\n                <\/div>\n            <\/div>\n\n            <div class=\"items\">\n                <div class=\"item\">\n                    Skewed benchmarks\n                <\/div>\n\n                <div class=\"item\">\n                    False optimization signals\n                <\/div>\n\n                <div class=\"item\">\n                    Poor campaign decisions\n                <\/div>\n            <\/div>\n\n        <\/div>\n\n        <!-- Trust -->\n\n        <div class=\"impact-card trust\">\n\n            <div class=\"header\">\n                <div class=\"icon\">\u2b50<\/div>\n                <div class=\"title\">\n                    Trust Damage\n                <\/div>\n            <\/div>\n\n            <div class=\"items\">\n                <div class=\"item\">\n                    Buyer skepticism\n                <\/div>\n\n                <div class=\"item\">\n                    Slower deals\n                <\/div>\n\n                <div class=\"item\">\n                    Publisher reputation loss\n                <\/div>\n            <\/div>\n\n        <\/div>\n\n    <\/div>\n\n    <div class=\"insight\">\n        <div class=\"insight-text\">\n            Fraud doesn&#8217;t only <strong>steal money<\/strong>.<br>\n            It distorts data and damages trust.\n        <\/div>\n    <\/div>\n\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"when-something-doesnt-add-up\"><strong>When Something Doesn&#8217;t Add Up<\/strong><\/h2>\n\n\n\n<p>Inventory spoofing rarely announces itself.&nbsp;<\/p>\n\n\n\n<p>By the time something feels obviously wrong, the problem has usually been running for a while. That\u2019s why you have to know what to look for before it gets to that point. And while none of the signals below is a smoking gun on its own, if several are showing up at the same time, that&#8217;s usually a conversation worth having.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Seller relationships that don&#8217;t match publicly available records<\/strong><\/li>\n<\/ol>\n\n\n\n<p>If a seller is claiming to represent a publisher&#8217;s inventory but doesn&#8217;t appear in that publisher&#8217;s <strong>ads.txt <\/strong>file, that&#8217;s a red flag. It doesn&#8217;t always mean fraud (e.g. files get outdated, relationships change) but it warrants a closer look before any money moves.<\/p>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>Inventory appearing through unexpected supply paths<\/strong><\/li>\n<\/ol>\n\n\n\n<p>If impressions are coming through intermediaries that weren&#8217;t part of the original deal, ask why. Legitimate supply chains can be complex, but complexity shouldn&#8217;t be unexplainable.<\/p>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>Significant discrepancies between reporting sources<\/strong><\/li>\n<\/ol>\n\n\n\n<p>When your DSP numbers and your publisher&#8217;s numbers tell meaningfully different stories, something is off. Minor discrepancies are normal, but large, consistent gaps aren&#8217;t.<\/p>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><strong>Outdated ads.txt or app-ads.txt files<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Outdated or incomplete files continue to cause lost revenue opportunities for publishers and wasted spend for advertisers. A file that hasn&#8217;t been touched in months, especially at a publisher with an active partner roster, is worth flagging.<\/p>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li><strong>Sudden changes in traffic quality<\/strong><\/li>\n<\/ol>\n\n\n\n<p>A spike in impressions that doesn&#8217;t correspond with a spike in meaningful engagement is a classic signal. So is a sudden drop in viewability or completion rates from a previously solid placement.<\/p>\n\n\n\n<ol start=\"6\" class=\"wp-block-list\">\n<li><strong>Authorized sellers that can&#8217;t be independently verified<\/strong><\/li>\n<\/ol>\n\n\n\n<p>If you can&#8217;t confirm that a seller is who they say they are through a reputable verification method, don&#8217;t assume the best.<\/p>\n\n\n<div class=\"block__bord\"><div class=\"block__bord_desc\"><p>Together, all these signals paint a picture, and the earlier that picture comes into focus, the less damage it can do you.<\/p>\n<\/div><\/div>\n<style>\n.block__bord { margin: 32px 0; padding: 1.25em 2.375em;\tborder-radius: 24px; background: rgba(0, 220, 200, 0.20); }\n.block__bord_desc {font-size: 16px !important;font-weight: 400 !important;color: #606060 !important;}\n<\/style>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"final-thoughts\"><strong>Final Thoughts<\/strong><\/h2>\n\n\n\n<p><strong>ads.txt<\/strong> and <strong>app-ads.txt<\/strong> were a genuine step forward. And while they might not be a silver bullet (nobody serious ever claimed they would be) but a real, meaningful shift in how the industry handles transparency. They made it harder to operate in the shadows; they gave buyers something to actually check, and publishers a way to draw a line around who represents them.<\/p>\n\n\n\n<p>That matters (yes, it really still does)!<\/p>\n\n\n<div class=\"block__bord\"><div class=\"block__bord_desc\"><p>Here&#8217;s the thing about transparency, though: you don&#8217;t achieve it once and move on. As the supply chain keeps shifting, partnerships can change, and files go stale. Fraudsters, at the same time, keep looking for whatever gap opens up (as they always do) while everyone might be busy assuming the system is working.<\/p>\n<\/div><\/div>\n<style>\n.block__bord { margin: 32px 0; padding: 1.25em 2.375em;\tborder-radius: 24px; background: rgba(0, 220, 200, 0.20); }\n.block__bord_desc {font-size: 16px !important;font-weight: 400 !important;color: #606060 !important;}\n<\/style>\n\n\n\n<p>It&#8217;s not enough to have <strong>ads.txt<\/strong> in place. You have to maintain, check, and enforce them consistently, across every layer of the supply chain. Because the moment any part of the chain starts assuming someone else is handling it, that&#8217;s exactly where the next fraudster scheme takes place. <\/p>\n\n\n\n<p>Your inventory quality was never built on good intentions or tidy-looking supply paths, but on actually being able to confirm that the seller in front of you has the right to sell what they&#8217;re selling.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ad fraud is frustrating for a lot of reasons. But the most frustrating part is it doesn&#8217;t always look like fraud. There\u2019s no malware, no fake websites, and no sketchy traffic source you can point your finger at. Everything seems totally above board as the publisher is real and the domain exists. You could be [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":5901,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[4],"tags":[18,16],"class_list":["post-5897","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-current_risks","tag-fraud","tag-threat"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ads.txt and app-ads.txt Spoofing:How Fraudsters Fake the Right to Sell Inventory - ADEX<\/title>\n<meta name=\"description\" content=\"How fraudsters exploit ads.txt and app-ads.txt to fake authorized seller status, why outdated files create loopholes, and the red flags that signal spoofed inventory.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ads.txt and app-ads.txt Spoofing:How Fraudsters Fake the Right to Sell Inventory - ADEX\" \/>\n<meta property=\"og:description\" content=\"How fraudsters exploit ads.txt and app-ads.txt to fake authorized seller status, why outdated files create loopholes, and the red flags that signal spoofed inventory.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/\" \/>\n<meta property=\"og:site_name\" content=\"ADEX\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/adexsaas\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-30T12:41:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-30T12:41:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/06\/ads.txt.app_.ads_.txt.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Olya Mikheeva\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@adexsaas\" \/>\n<meta name=\"twitter:site\" content=\"@adexsaas\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Olya Mikheeva\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/adex-ads-txt-app-ads-txt-spoofing\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/adex-ads-txt-app-ads-txt-spoofing\\\/\"},\"author\":{\"name\":\"Olya Mikheeva\",\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/#\\\/schema\\\/person\\\/c5794aef7aa28987e7019a804390ee3a\"},\"headline\":\"ads.txt and app-ads.txt Spoofing:How Fraudsters Fake the Right to Sell Inventory\",\"datePublished\":\"2026-06-30T12:41:53+00:00\",\"dateModified\":\"2026-06-30T12:41:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/adex-ads-txt-app-ads-txt-spoofing\\\/\"},\"wordCount\":2398,\"publisher\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/adex-ads-txt-app-ads-txt-spoofing\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/adex.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ads.txt.app_.ads_.txt.png\",\"keywords\":[\"Fraud\",\"Threat\"],\"articleSection\":[\"Current risks\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/adex-ads-txt-app-ads-txt-spoofing\\\/\",\"url\":\"https:\\\/\\\/adex.com\\\/blog\\\/adex-ads-txt-app-ads-txt-spoofing\\\/\",\"name\":\"ads.txt and app-ads.txt Spoofing:How Fraudsters Fake the Right to Sell Inventory - ADEX\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/adex-ads-txt-app-ads-txt-spoofing\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/adex-ads-txt-app-ads-txt-spoofing\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/adex.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ads.txt.app_.ads_.txt.png\",\"datePublished\":\"2026-06-30T12:41:53+00:00\",\"dateModified\":\"2026-06-30T12:41:56+00:00\",\"description\":\"How fraudsters exploit ads.txt and app-ads.txt to fake authorized seller status, why outdated files create loopholes, and the red flags that signal spoofed inventory.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/adex-ads-txt-app-ads-txt-spoofing\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/adex.com\\\/blog\\\/adex-ads-txt-app-ads-txt-spoofing\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/adex-ads-txt-app-ads-txt-spoofing\\\/#primaryimage\",\"url\":\"https:\\\/\\\/adex.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ads.txt.app_.ads_.txt.png\",\"contentUrl\":\"https:\\\/\\\/adex.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ads.txt.app_.ads_.txt.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/adex-ads-txt-app-ads-txt-spoofing\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/adex.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ads.txt and app-ads.txt Spoofing:How Fraudsters Fake the Right to Sell Inventory\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/adex.com\\\/blog\\\/\",\"name\":\"ADEX - Ad Fraud & Invalid Traffic Prevention Platform\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/#organization\"},\"alternateName\":\"ADEX\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/adex.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/#organization\",\"name\":\"ADEX - Ad Fraud & Invalid Traffic Prevention Platform\",\"url\":\"https:\\\/\\\/adex.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/adex.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/CDD2258_copy-48-1.svg\",\"contentUrl\":\"https:\\\/\\\/adex.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/CDD2258_copy-48-1.svg\",\"width\":148,\"height\":30,\"caption\":\"ADEX - Ad Fraud & Invalid Traffic Prevention Platform\"},\"image\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/adexsaas\\\/\",\"https:\\\/\\\/x.com\\\/adexsaas\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/#\\\/schema\\\/person\\\/c5794aef7aa28987e7019a804390ee3a\",\"name\":\"Olya Mikheeva\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7e1ca40f4b08b576bd7c51e8946605febbcaa99bf482f69ead517b1cd512de42?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7e1ca40f4b08b576bd7c51e8946605febbcaa99bf482f69ead517b1cd512de42?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7e1ca40f4b08b576bd7c51e8946605febbcaa99bf482f69ead517b1cd512de42?s=96&d=mm&r=g\",\"caption\":\"Olya Mikheeva\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ads.txt and app-ads.txt Spoofing:How Fraudsters Fake the Right to Sell Inventory - ADEX","description":"How fraudsters exploit ads.txt and app-ads.txt to fake authorized seller status, why outdated files create loopholes, and the red flags that signal spoofed inventory.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/","og_locale":"en_US","og_type":"article","og_title":"ads.txt and app-ads.txt Spoofing:How Fraudsters Fake the Right to Sell Inventory - ADEX","og_description":"How fraudsters exploit ads.txt and app-ads.txt to fake authorized seller status, why outdated files create loopholes, and the red flags that signal spoofed inventory.","og_url":"https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/","og_site_name":"ADEX","article_publisher":"https:\/\/www.facebook.com\/adexsaas\/","article_published_time":"2026-06-30T12:41:53+00:00","article_modified_time":"2026-06-30T12:41:56+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/06\/ads.txt.app_.ads_.txt.png","type":"image\/png"}],"author":"Olya Mikheeva","twitter_card":"summary_large_image","twitter_creator":"@adexsaas","twitter_site":"@adexsaas","twitter_misc":{"Written by":"Olya Mikheeva","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/#article","isPartOf":{"@id":"https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/"},"author":{"name":"Olya Mikheeva","@id":"https:\/\/adex.com\/blog\/#\/schema\/person\/c5794aef7aa28987e7019a804390ee3a"},"headline":"ads.txt and app-ads.txt Spoofing:How Fraudsters Fake the Right to Sell Inventory","datePublished":"2026-06-30T12:41:53+00:00","dateModified":"2026-06-30T12:41:56+00:00","mainEntityOfPage":{"@id":"https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/"},"wordCount":2398,"publisher":{"@id":"https:\/\/adex.com\/blog\/#organization"},"image":{"@id":"https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/#primaryimage"},"thumbnailUrl":"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/06\/ads.txt.app_.ads_.txt.png","keywords":["Fraud","Threat"],"articleSection":["Current risks"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/","url":"https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/","name":"ads.txt and app-ads.txt Spoofing:How Fraudsters Fake the Right to Sell Inventory - ADEX","isPartOf":{"@id":"https:\/\/adex.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/#primaryimage"},"image":{"@id":"https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/#primaryimage"},"thumbnailUrl":"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/06\/ads.txt.app_.ads_.txt.png","datePublished":"2026-06-30T12:41:53+00:00","dateModified":"2026-06-30T12:41:56+00:00","description":"How fraudsters exploit ads.txt and app-ads.txt to fake authorized seller status, why outdated files create loopholes, and the red flags that signal spoofed inventory.","breadcrumb":{"@id":"https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/#primaryimage","url":"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/06\/ads.txt.app_.ads_.txt.png","contentUrl":"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/06\/ads.txt.app_.ads_.txt.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/adex.com\/blog\/adex-ads-txt-app-ads-txt-spoofing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/adex.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ads.txt and app-ads.txt Spoofing:How Fraudsters Fake the Right to Sell Inventory"}]},{"@type":"WebSite","@id":"https:\/\/adex.com\/blog\/#website","url":"https:\/\/adex.com\/blog\/","name":"ADEX - Ad Fraud & Invalid Traffic Prevention Platform","description":"","publisher":{"@id":"https:\/\/adex.com\/blog\/#organization"},"alternateName":"ADEX","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/adex.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/adex.com\/blog\/#organization","name":"ADEX - Ad Fraud & Invalid Traffic Prevention Platform","url":"https:\/\/adex.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/adex.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/adex.com\/blog\/wp-content\/uploads\/2022\/05\/CDD2258_copy-48-1.svg","contentUrl":"https:\/\/adex.com\/blog\/wp-content\/uploads\/2022\/05\/CDD2258_copy-48-1.svg","width":148,"height":30,"caption":"ADEX - Ad Fraud & Invalid Traffic Prevention Platform"},"image":{"@id":"https:\/\/adex.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/adexsaas\/","https:\/\/x.com\/adexsaas"]},{"@type":"Person","@id":"https:\/\/adex.com\/blog\/#\/schema\/person\/c5794aef7aa28987e7019a804390ee3a","name":"Olya Mikheeva","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7e1ca40f4b08b576bd7c51e8946605febbcaa99bf482f69ead517b1cd512de42?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7e1ca40f4b08b576bd7c51e8946605febbcaa99bf482f69ead517b1cd512de42?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7e1ca40f4b08b576bd7c51e8946605febbcaa99bf482f69ead517b1cd512de42?s=96&d=mm&r=g","caption":"Olya Mikheeva"}}]}},"_links":{"self":[{"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/posts\/5897","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/comments?post=5897"}],"version-history":[{"count":13,"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/posts\/5897\/revisions"}],"predecessor-version":[{"id":5916,"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/posts\/5897\/revisions\/5916"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/media\/5901"}],"wp:attachment":[{"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/media?parent=5897"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/categories?post=5897"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/tags?post=5897"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}