{"id":5954,"date":"2026-08-17T15:50:37","date_gmt":"2026-08-17T15:50:37","guid":{"rendered":"https:\/\/adex.com\/blog\/?p=5954"},"modified":"2026-08-17T16:15:28","modified_gmt":"2026-08-17T16:15:28","slug":"device-farm-fraud-vs-bots","status":"publish","type":"post","link":"https:\/\/adex.com\/blog\/device-farm-fraud-vs-bots\/","title":{"rendered":"Device Farm Fraud vs Bots: Two Ways to Fake an Audience"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">A rack of two hundred real phones in a rented room and a script on a rented server sell the same product: an audience that was never there. In reporting, they look almost identical: a block of impressions and clicks that turns into nothing. Device farm fraud runs on real hardware: real handsets, real sensors, real identifiers, often on ordinary home broadband. Emulated bot traffic runs on software describing a device it does not have. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first passes nearly every &#8216;is this a real device&#8217; test and gives itself away through behavior and location. The second scales for almost nothing and gives itself away through its environment. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Which is why emulator detection and device farm detection are not interchangeable settings on the same dial. What follows compares the two models by cost, by the traces they leave, and by which signal class catches which \u2013 plus the overlap zone that flags both, the false positives that punish real users, and why both count as sophisticated invalid traffic.<\/p>\n\n\n<div class=\"toc\"><h4 class=\"toc__title\" id=\"contents\">Contents<\/h4><ul class=\"toc__list\"><li class=\"toc__list_item\"><a href=\"#the-rack-of-real-phones-what-physical-hardware-buys-an-operator\">The Rack of Real Phones: What Physical Hardware Buys an Operator<\/a><\/li><li class=\"toc__list_item\"><a href=\"#emulated-bots-cheap-scale-on-borrowed-ground\">Emulated Bots: Cheap Scale on Borrowed Ground<\/a><\/li><li class=\"toc__list_item\"><a href=\"#device-farm-vs-bot-traffic-the-trace-each-one-leaves\">Device Farm vs Bot Traffic: The Trace Each One Leaves<\/a><\/li><li class=\"toc__list_item\"><a href=\"#which-detection-signal-class-catches-which-threat\">Which Detection Signal Class Catches Which Threat<\/a><\/li><li class=\"toc__list_item\"><a href=\"#when-the-hardware-belongs-to-someone-else\">When the Hardware Belongs to Someone Else<\/a><\/li><li class=\"toc__list_item\"><a href=\"#the-economics-behind-which-method-an-operator-picks\">The Economics Behind Which Method an Operator Picks<\/a><\/li><li class=\"toc__list_item\"><a href=\"#why-a-stack-tuned-for-one-threat-goes-quiet-on-the-other\">Why a Stack Tuned for One Threat Goes Quiet on the Other<\/a><\/li><li class=\"toc__list_item\"><a href=\"#what-neither-signal-class-resolves-cleanly\">What Neither Signal Class Resolves Cleanly<\/a><\/li><li class=\"toc__list_item\"><a href=\"#faq\">FAQ<\/a><\/li><li class=\"toc__list_item\"><a href=\"#two-threats-one-line-item\">Two Threats, One Line Item<\/a><\/li><\/ul><\/div><style>\n.toc {}\n.toc__title {\n      font-size: 32px;\n    line-height: 40px;\n    font-weight: 700;\n}\n.toc__list_item {\n    color: #FE645A !important;\n}\n.toc__list_item:not(:last-child){\n    margin-bottom: 5px;\n}\n.toc__list_item a {\n    font-size: 18px;\n    line-height: 24px;\n    color: #FE645A;\n    font-weight: 600;\n}\n.toc__list_item a:hover {\n    text-decoration: underline;\n}\n@media (max-width: 1023px) {.toc__title {font-size: 24px;line-height: 32px;}}\n<\/style>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"key-takeaways\">Key Takeaways:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Device farms pass device integrity checks because the hardware really is a phone. Their traces live in behavior, sensor data, and geolocation.<\/li>\n\n\n\n<li>Emulated bots fail environment checks (build strings, missing sensors, graphics mismatches, hosting addresses), but scripted behavior can be tuned to look ordinary.<\/li>\n\n\n\n<li>Only a narrow band catches both: late conversion quality, placement concentration, event timing. That band confirms waste without naming the method.<\/li>\n\n\n\n<li>Compromised consumer hardware is the hard middle case: real devices and residential addresses at botnet scale.<\/li>\n\n\n\n<li>Both threats count as sophisticated invalid traffic (SIVT), where IAB and MRC guidance calls for advanced analytics and multi-point corroboration.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"the-rack-of-real-phones-what-physical-hardware-buys-an-operator\">The Rack of Real Phones: What Physical Hardware Buys an Operator<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A device farm is a room of real handsets wired to power and to a network, driven by automation tools, by paid workers tapping screens, or by both. Every phone reports a genuine model, operating system build, advertising identifier, and sensor stack, because all of it is genuine. That is what the expense buys: device integrity checks ask whether the sender is a real consumer device, and a farm answers yes truthfully. Root and jailbreak checks pass, and the fingerprint belongs to a phone that exists.<\/p>\n\n\n<div class=\"block__preview\">\n        <a href=\"https:\/\/adex.com\/blog\/device-farm-fraud-real-phones-fake-installs\/\" class=\"block__preview_img\"><img src=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/06\/adex-device-farms-in-ad-fraud.png\" srcset=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/06\/adex-device-farms-in-ad-fraud.png\" sizes=\"100vw\" alt=\"\" decoding=\"async\" class=\"lazy\"><\/a>\n    <div class=\"block__preview_box\">\n        <a href=\"https:\/\/adex.com\/blog\/category\/guides\/\" class=\"block__preview_box-cat\">Guides<\/a>        <h3 class=\"block__preview_box-title\" id=\"device-farms-in-ad-fraud-how-real-phones-generate-fake-clicks-installs-and-registrations\"><a href=\"https:\/\/adex.com\/blog\/device-farm-fraud-real-phones-fake-installs\/\">Device Farms in Ad Fraud: How Real Phones Generate Fake Clicks, Installs, and Registrations<\/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<div class=\"block__bord\"><div class=\"block__bord_desc\"><p>In practice, teams looking at farm traffic for the first time hunt for a device tell and find nothing. The tells sit one layer up. Hundreds of handsets in one room share a location within a few meters, share an uplink, charge continuously, sit still so the accelerometer reads almost nothing, and go quiet when the shift ends.<\/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 class=\"wp-block-paragraph\">Cost is the limit. Hardware, power, space, and staff all scale with volume, so every extra unit of fake traffic costs money.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"emulated-bots-cheap-scale-on-borrowed-ground\">Emulated Bots: Cheap Scale on Borrowed Ground<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">An emulated bot is software describing a device it does not have: a mobile emulator running an app image, a headless browser with no screen attached, or a scripted client that speaks the ad request protocol and skips rendering entirely. It runs on rented compute, so a thousand instances cost what one costs, multiplied.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The economics run opposite to the farm. Setup is a template, scale is a configuration value, and a block costs a rebuild rather than a capital purchase.<\/p>\n\n\n<div class=\"block__bord\"><div class=\"block__bord_desc\"><p>What software cannot supply is the physical layer. Emulator images carry build and kernel strings no shipped handset carries, the graphics driver string does not match the claimed model, and motion sensors are absent or return constants. Residential proxy services close the network gap, which is why address reputation alone stopped being a reliable answer. The device gap stays open.<\/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<div class=\"block__preview\">\n        <a href=\"https:\/\/adex.com\/blog\/anti-detect-browser-fraud-detection\/\" class=\"block__preview_img\"><img src=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/07\/adex-banners-anti-detect-browsers.png\" srcset=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/07\/adex-banners-anti-detect-browsers.png\" sizes=\"100vw\" alt=\"Anti-detect browsers make one device look like many. They spoof fingerprints, rotate identities, and bypass the checks ad platforms use to catch fraud. Here's what that means for your campaigns.\" 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=\"how-anti-detect-browsers-build-fake-digital-identities-where-detection-finds-the-gaps\"><a href=\"https:\/\/adex.com\/blog\/anti-detect-browser-fraud-detection\/\">How Anti-Detect Browsers Build Fake Digital Identities: Where Detection Finds the Gaps<\/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=\"device-farm-vs-bot-traffic-the-trace-each-one-leaves\">Device Farm vs Bot Traffic: The Trace Each One Leaves<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The two threats invert each other at nearly every layer.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Layer<\/strong><\/th><th><strong>Device Farm (Real Handsets)<\/strong><\/th><th><strong>Emulated Bot (Software)<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Device signals<\/td><td>Genuine and consistent, passes integrity checks<\/td><td>Imitated, and it leaks in build, graphics, and sensors<\/td><\/tr><tr><td>Network origin<\/td><td>Consumer broadband or carrier, one uplink for many devices<\/td><td>Hosting ranges, unless routed through residential proxies<\/td><\/tr><tr><td>Behavior<\/td><td>Human-driven, with unnatural sameness across devices<\/td><td>Scripted, and tunable toward realistic variation<\/td><\/tr><tr><td>Geolocation<\/td><td>Tightly clustered and repeating<\/td><td>Whatever the proxy says, so it can look correct<\/td><\/tr><tr><td>Cost of the next unit<\/td><td>High: hardware, power, space, staff<\/td><td>Near zero: a configuration change<\/td><\/tr><tr><td>What usually breaks it<\/td><td>Sameness across a population<\/td><td>Inconsistency inside one request<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Both land in the same reporting bucket. The <a href=\"https:\/\/www.iab.com\/guidelines\/mrc-invalid-traffic-ivt-detection-and-filtration-guidelines-addendum\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">IAB and MRC invalid traffic detection and filtration guidelines addendum<\/a> separates general invalid traffic (GIVT), which routine list-based checks remove, from sophisticated invalid traffic (SIVT), the category the guidance treats as needing advanced analytics and multi-point corroboration. Both of these threats sit on the SIVT side, for opposite reasons.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"which-detection-signal-class-catches-which-threat\">Which Detection Signal Class Catches Which Threat<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Detection signals fall into four families. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Environment and device integrity signals<\/strong> read what the client claims to be: build strings, driver names, sensors, browser properties;<\/li>\n\n\n\n<li><strong>Behavioral signals<\/strong> read how a session moves: touch timing, scroll rhythm, dwell time, variance between sessions.<\/li>\n\n\n\n<li><strong>Place and network signals<\/strong> read where the request came from: address class, carrier, geolocation consistency, how many identifiers share one uplink;<\/li>\n\n\n\n<li><strong>Outcome signals<\/strong> read what happened afterward: installs opening, purchases repeating, anyone coming back.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Emulated bots are cheapest to catch in the first family, because the imitation is thin and one request can carry the contradiction. Device farms are catchable mainly in the second and third, and rarely on a single request: one phone tapping a banner looks like a person tapping a banner, which it partly is, so the evidence sits in the population.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The map below sorts the working signals into the three groups that matter for a buying decision, including the shared band that catches both threats and names neither.<\/p>\n\n\n\n<style>\n.adx-signal-map-v1,\n.adx-signal-map-v1 * {\n  box-sizing: border-box !important;\n}\n\n.adx-signal-map-v1 {\n  width: 100% !important;\n  max-width: 1120px !important;\n  margin: 32px auto !important;\n  padding: 0 !important;\n  overflow: hidden !important;\n  color: #16181d !important;\n  background: #ffffff !important;\n  border: 1px solid #d8dee9 !important;\n  border-radius: 16px !important;\n  box-shadow: 0 8px 28px rgba(22, 24, 29, 0.07) !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n}\n\n.adx-signal-map-v1 .adx-map-header {\n  padding: 30px 32px 24px !important;\n  background: #ffffff !important;\n  border-bottom: 1px solid #e5e9f0 !important;\n}\n\n.adx-signal-map-v1 .adx-map-title {\n  margin: 0 0 8px !important;\n  padding: 0 !important;\n  color: #16181d !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 26px !important;\n  font-weight: 700 !important;\n  line-height: 1.25 !important;\n  letter-spacing: -0.02em !important;\n}\n\n.adx-signal-map-v1 .adx-map-intro {\n  max-width: 760px !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  color: #5b6472 !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 15px !important;\n  font-weight: 400 !important;\n  line-height: 1.55 !important;\n}\n\n.adx-signal-map-v1 .adx-map-grid {\n  display: grid !important;\n  grid-template-columns:\n    minmax(0, 1fr)\n    minmax(230px, 0.78fr)\n    minmax(0, 1fr) !important;\n  gap: 18px !important;\n  align-items: stretch !important;\n  padding: 24px 24px 0 !important;\n}\n\n.adx-signal-map-v1 .adx-map-panel {\n  position: relative !important;\n  display: flex !important;\n  flex-direction: column !important;\n  min-width: 0 !important;\n  margin: 0 !important;\n  padding: 25px 22px 22px !important;\n  overflow: hidden !important;\n  background: #f7f8fb !important;\n  border: 1px solid #d8dee9 !important;\n  border-radius: 12px !important;\n}\n\n.adx-signal-map-v1 .adx-map-panel::before {\n  position: absolute !important;\n  top: 0 !important;\n  right: 0 !important;\n  left: 0 !important;\n  height: 6px !important;\n  content: \"\" !important;\n  background: var(--adx-accent) !important;\n}\n\n.adx-signal-map-v1 .adx-device-farms {\n  --adx-accent: #e8a33d;\n  --adx-soft: #fff3df;\n  --adx-dark: #875108;\n}\n\n.adx-signal-map-v1 .adx-overlap {\n  --adx-accent: #2f6bff;\n  --adx-soft: #eaf0ff;\n  --adx-dark: #1748bf;\n}\n\n.adx-signal-map-v1 .adx-emulated-bots {\n  --adx-accent: #d9534f;\n  --adx-soft: #fdeceb;\n  --adx-dark: #a8322f;\n}\n\n.adx-signal-map-v1 .adx-panel-heading {\n  margin: 0 0 5px !important;\n  padding: 0 !important;\n  color: #16181d !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 18px !important;\n  font-weight: 700 !important;\n  line-height: 1.3 !important;\n}\n\n.adx-signal-map-v1 .adx-panel-subtitle {\n  margin: 0 0 21px !important;\n  padding: 0 !important;\n  color: #5b6472 !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 13px !important;\n  font-weight: 400 !important;\n  line-height: 1.45 !important;\n}\n\n.adx-signal-map-v1 .adx-signal-list {\n  display: grid !important;\n  gap: 12px !important;\n  margin: 0 0 24px !important;\n  padding: 0 !important;\n  list-style: none !important;\n}\n\n.adx-signal-map-v1 .adx-signal-list li {\n  position: relative !important;\n  margin: 0 !important;\n  padding: 0 0 0 17px !important;\n  color: #242832 !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 14px !important;\n  font-weight: 400 !important;\n  line-height: 1.42 !important;\n  list-style: none !important;\n}\n\n.adx-signal-map-v1 .adx-signal-list li::before {\n  position: absolute !important;\n  top: 0.55em !important;\n  left: 0 !important;\n  width: 7px !important;\n  height: 7px !important;\n  content: \"\" !important;\n  background: var(--adx-accent) !important;\n  border-radius: 50% !important;\n  transform: translateY(-50%) !important;\n}\n\n.adx-signal-map-v1 .adx-panel-limit {\n  margin-top: auto !important;\n  padding: 15px !important;\n  background: var(--adx-soft) !important;\n  border-left: 4px solid var(--adx-accent) !important;\n  border-radius: 7px !important;\n}\n\n.adx-signal-map-v1 .adx-limit-item {\n  margin: 0 !important;\n  padding: 0 !important;\n  color: #434a57 !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 12.5px !important;\n  font-weight: 400 !important;\n  line-height: 1.48 !important;\n}\n\n.adx-signal-map-v1 .adx-limit-item + .adx-limit-item {\n  margin-top: 8px !important;\n}\n\n.adx-signal-map-v1 .adx-limit-label {\n  display: block !important;\n  margin: 0 0 2px !important;\n  color: var(--adx-dark) !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  line-height: 1.3 !important;\n  letter-spacing: 0.06em !important;\n  text-transform: uppercase !important;\n}\n\n.adx-signal-map-v1 .adx-failure-band {\n  margin: 24px !important;\n  padding: 22px !important;\n  background: #f4f6fa !important;\n  border: 1px solid #d8dee9 !important;\n  border-radius: 12px !important;\n}\n\n.adx-signal-map-v1 .adx-failure-title {\n  margin: 0 0 15px !important;\n  padding: 0 !important;\n  color: #16181d !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 17px !important;\n  font-weight: 700 !important;\n  line-height: 1.35 !important;\n}\n\n.adx-signal-map-v1 .adx-failure-grid {\n  display: grid !important;\n  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  gap: 14px !important;\n}\n\n.adx-signal-map-v1 .adx-failure-item {\n  margin: 0 !important;\n  padding: 13px 15px !important;\n  color: #303540 !important;\n  background: #ffffff !important;\n  border: 1px solid #e0e4eb !important;\n  border-radius: 8px !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 13.5px !important;\n  font-weight: 400 !important;\n  line-height: 1.5 !important;\n}\n\n.adx-signal-map-v1 .adx-failure-device {\n  border-left: 4px solid #e8a33d !important;\n}\n\n.adx-signal-map-v1 .adx-failure-bot {\n  border-left: 4px solid #d9534f !important;\n}\n\n.adx-signal-map-v1 .adx-map-caption {\n  display: block !important;\n  margin: 0 !important;\n  padding: 0 24px 23px !important;\n  color: #697280 !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 12.5px !important;\n  font-style: normal !important;\n  font-weight: 400 !important;\n  line-height: 1.5 !important;\n  text-align: left !important;\n}\n\n@media (max-width: 860px) {\n  .adx-signal-map-v1 .adx-map-grid {\n    grid-template-columns: 1fr !important;\n  }\n\n  .adx-signal-map-v1 .adx-failure-grid {\n    grid-template-columns: 1fr !important;\n  }\n}\n\n@media (max-width: 560px) {\n  .adx-signal-map-v1 {\n    margin: 24px auto !important;\n    border-radius: 12px !important;\n  }\n\n  .adx-signal-map-v1 .adx-map-header {\n    padding: 24px 20px 20px !important;\n  }\n\n  .adx-signal-map-v1 .adx-map-title {\n    font-size: 21px !important;\n  }\n\n  .adx-signal-map-v1 .adx-map-intro {\n    font-size: 14px !important;\n  }\n\n  .adx-signal-map-v1 .adx-map-grid {\n    gap: 16px !important;\n    padding: 18px 16px 0 !important;\n  }\n\n  .adx-signal-map-v1 .adx-map-panel {\n    padding: 24px 19px 19px !important;\n  }\n\n  .adx-signal-map-v1 .adx-panel-heading {\n    font-size: 17px !important;\n  }\n\n  .adx-signal-map-v1 .adx-signal-list li {\n    font-size: 13.5px !important;\n  }\n\n  .adx-signal-map-v1 .adx-failure-band {\n    margin: 18px 16px !important;\n    padding: 18px !important;\n  }\n\n  .adx-signal-map-v1 .adx-map-caption {\n    padding: 0 16px 19px !important;\n  }\n}\n<\/style>\n\n<figure\n  class=\"adx-signal-map-v1\"\n  aria-labelledby=\"adx-signal-map-title\"\n  aria-describedby=\"adx-signal-map-description\"\n>\n  <header class=\"adx-map-header\">\n    <h3 id=\"adx-signal-map-title\" class=\"adx-map-title\">\n      Which Signals Catch Which Fake Audience\n    <\/h3>\n\n    <p id=\"adx-signal-map-description\" class=\"adx-map-intro\">\n      Signal classes rarely transfer between the two threats. The shared band is narrow.\n    <\/p>\n  <\/header>\n\n  <div class=\"adx-map-grid\">\n    <section\n      class=\"adx-map-panel adx-device-farms\"\n      aria-labelledby=\"adx-device-farms-title\"\n    >\n      <h4 id=\"adx-device-farms-title\" class=\"adx-panel-heading\">\n        Device Farms Only\n      <\/h4>\n\n      <p class=\"adx-panel-subtitle\">Racks of real handsets<\/p>\n\n      <ul class=\"adx-signal-list\">\n        <li>Geolocation repeats one address<\/li>\n        <li>Devices always report charging<\/li>\n        <li>Motion sensor data stays flat<\/li>\n        <li>Touch and swipe timing is uniform<\/li>\n        <li>Ad identifiers reset in batches<\/li>\n        <li>Activity follows shift windows<\/li>\n        <li>One Wi-Fi name is shared by hundreds<\/li>\n      <\/ul>\n\n      <div class=\"adx-panel-limit\">\n        <p class=\"adx-limit-item\">\n          <span class=\"adx-limit-label\">What it proves<\/span>\n          Behavior and place expose coordinated activity across real devices.\n        <\/p>\n\n        <p class=\"adx-limit-item\">\n          <span class=\"adx-limit-label\">What it cannot prove<\/span>\n          Device integrity checks alone may still read this traffic as legitimate.\n        <\/p>\n      <\/div>\n    <\/section>\n\n    <section\n      class=\"adx-map-panel adx-overlap\"\n      aria-labelledby=\"adx-overlap-title\"\n    >\n      <h4 id=\"adx-overlap-title\" class=\"adx-panel-heading\">\n        Overlap Zone\n      <\/h4>\n\n      <p class=\"adx-panel-subtitle\">Catches both, names neither<\/p>\n\n      <ul class=\"adx-signal-list\">\n        <li>Late conversion quality drops<\/li>\n        <li>Volume sits on a few placements<\/li>\n        <li>Click-to-action gaps are too short<\/li>\n        <li>No organic return visits appear later<\/li>\n        <li>The event mix is identical every hour<\/li>\n      <\/ul>\n\n      <div class=\"adx-panel-limit\">\n        <p class=\"adx-limit-item\">\n          <span class=\"adx-limit-label\">What it proves<\/span>\n          The traffic or its outcomes are abnormal.\n        <\/p>\n\n        <p class=\"adx-limit-item\">\n          <span class=\"adx-limit-label\">What it cannot prove<\/span>\n          It does not identify which of the two threats caused the pattern.\n        <\/p>\n      <\/div>\n    <\/section>\n\n    <section\n      class=\"adx-map-panel adx-emulated-bots\"\n      aria-labelledby=\"adx-emulated-bots-title\"\n    >\n      <h4 id=\"adx-emulated-bots-title\" class=\"adx-panel-heading\">\n        Emulated Bots Only\n      <\/h4>\n\n      <p class=\"adx-panel-subtitle\">Software on rented compute<\/p>\n\n      <ul class=\"adx-signal-list\">\n        <li>Emulator build and kernel tags appear<\/li>\n        <li>The graphics string fits no handset<\/li>\n        <li>The entire sensor stack is missing<\/li>\n        <li>The address belongs to a hosting or data center range<\/li>\n        <li>Headless browser traits leak<\/li>\n        <li>Screen and battery values are inconsistent<\/li>\n        <li>Thousands of devices appear in one minute<\/li>\n      <\/ul>\n\n      <div class=\"adx-panel-limit\">\n        <p class=\"adx-limit-item\">\n          <span class=\"adx-limit-label\">What it proves<\/span>\n          The reported client environment contradicts a real handset.\n        <\/p>\n\n        <p class=\"adx-limit-item\">\n          <span class=\"adx-limit-label\">What it cannot prove<\/span>\n          Scripted behavior can still pass when the environment is well disguised.\n        <\/p>\n      <\/div>\n    <\/section>\n  <\/div>\n\n  <section\n    class=\"adx-failure-band\"\n    aria-labelledby=\"adx-failure-title\"\n  >\n    <h4 id=\"adx-failure-title\" class=\"adx-failure-title\">\n      The Failure Mode in Both Directions\n    <\/h4>\n\n    <div class=\"adx-failure-grid\">\n      <p class=\"adx-failure-item adx-failure-bot\">\n        Tune only for emulated bots and a rack of real phones can still read as clean traffic.\n      <\/p>\n\n      <p class=\"adx-failure-item adx-failure-device\">\n        Tune only for device farms and a fresh emulator template can pass straight through.\n      <\/p>\n    <\/div>\n  <\/section>\n\n  <figcaption class=\"adx-map-caption\">\n    Signal classes rarely transfer between device farms and emulated bots, while the signals that catch both cannot reliably tell them apart.\n  <\/figcaption>\n<\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"when-the-hardware-belongs-to-someone-else\">When the Hardware Belongs to Someone Else<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The cheapest way to obtain real hardware is not to buy it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In June 2025 the FBI issued <a href=\"https:\/\/www.ic3.gov\/PSA\/2025\/PSA250605\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">public service announcement I-060525-PSA<\/a>, warning that internet-connected consumer devices on home networks were being used for criminal activity through the BADBOX 2.0 botnet. The products named include internet-connected TV boxes, digital projectors, aftermarket vehicle infotainment systems, and digital picture frames, most manufactured in China. Devices arrived with malicious software already installed, or were infected during setup.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.humansecurity.com\/learn\/blog\/badbox-2-fbi-psa\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">HUMAN Security, which contributed intelligence to that alert alongside Google, Trend Micro, and the Shadowserver Foundation<\/a>, describes the compromised hardware as devices running the open source version of Android, and the disclosures put the affected population in the millions of devices. The botnet generated fraudulent ad requests and click activity, and it sold access to the compromised home networks as residential proxy capacity. Disruption came in stages through 2025 \u2013 ad-platform blocking, Play Protect warnings, and a July 2025 Google lawsuit against 25 China-based entities \u2013 and the researchers call it partial, since none of it reaches hardware that ships pre-infected.<\/p>\n\n\n<div class=\"block__bord\"><div class=\"block__bord_desc\"><p>Read that against the signal families. Every device is genuine hardware on a genuine residential connection in a plausible location, scattered across households instead of clustered in one room. Environment checks pass, place checks pass, and behavioral clustering weakens. What is left is device-level behavior, an appliance requesting ads while nobody is using it, plus threat intelligence naming the infrastructure.<\/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=\"the-economics-behind-which-method-an-operator-picks\">The Economics Behind Which Method an Operator Picks<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Method selection follows cost. A farm is expensive per unit and cannot be rebuilt overnight, so it gets pointed at expensive outcomes: installs, in-app events, anything inspected at the device level. An emulated fleet is nearly free per unit and disposable, so it gets pointed at volume.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Compromised consumer hardware breaks that trade-off. It delivers the device realism of a farm at close to the marginal cost of software, because someone else already paid for the device, the connection, and the electricity. For buyers, that traffic is hardest to trace back to a source in unfiltered open programmatic supply and in long chains with opaque resellers.<\/p>\n\n\n\n<style>\n#adx-cost-scale-v2,\n#adx-cost-scale-v2 * {\n  box-sizing: border-box !important;\n}\n\n#adx-cost-scale-v2 {\n  width: 100% !important;\n  max-width: 1120px !important;\n  margin: 32px auto !important;\n  padding: 0 !important;\n  overflow: hidden !important;\n  color: #16181d !important;\n  background: #ffffff !important;\n  border: 1px solid #d8dee9 !important;\n  border-radius: 16px !important;\n  box-shadow: 0 8px 28px rgba(22, 24, 29, 0.07) !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-header {\n  padding: 30px 32px 23px !important;\n  background: #ffffff !important;\n  border-bottom: 1px solid #e5e9f0 !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-title {\n  margin: 0 0 8px !important;\n  padding: 0 !important;\n  color: #16181d !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 26px !important;\n  font-weight: 700 !important;\n  line-height: 1.25 !important;\n  letter-spacing: -0.02em !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-subtitle {\n  margin: 0 !important;\n  padding: 0 !important;\n  color: #5b6472 !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 14px !important;\n  font-weight: 400 !important;\n  line-height: 1.5 !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-desktop {\n  display: block !important;\n  padding: 24px 24px 0 !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-chart {\n  display: block !important;\n  width: 100% !important;\n  height: auto !important;\n  margin: 0 !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-mobile {\n  display: none !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-legend {\n  display: grid !important;\n  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n  gap: 13px !important;\n  margin: 22px 24px 0 !important;\n  padding: 18px !important;\n  background: #f4f6fa !important;\n  border: 1px solid #d8dee9 !important;\n  border-radius: 11px !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-legend-item {\n  display: grid !important;\n  grid-template-columns: 24px minmax(0, 1fr) !important;\n  gap: 10px !important;\n  align-items: start !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-swatch {\n  display: block !important;\n  width: 18px !important;\n  height: 18px !important;\n  margin: 2px 0 0 !important;\n  background: #e8a33d !important;\n  border: 2px solid #e8a33d !important;\n  border-radius: 50% !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-swatch-hybrid {\n  border: 4px solid #d9534f !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-swatch-bot {\n  background: #d9534f !important;\n  border-color: #d9534f !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-legend-text {\n  margin: 0 !important;\n  padding: 0 !important;\n  color: #343945 !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 13px !important;\n  font-weight: 400 !important;\n  line-height: 1.48 !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-caption {\n  display: block !important;\n  margin: 0 !important;\n  padding: 18px 24px 23px !important;\n  color: #697280 !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 12.5px !important;\n  font-style: normal !important;\n  font-weight: 400 !important;\n  line-height: 1.5 !important;\n  text-align: left !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-mobile-axes {\n  display: grid !important;\n  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  gap: 10px !important;\n  margin: 0 0 15px !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-axis-summary {\n  margin: 0 !important;\n  padding: 11px 12px !important;\n  color: #434a57 !important;\n  background: #f4f6fa !important;\n  border: 1px solid #d8dee9 !important;\n  border-radius: 8px !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 12px !important;\n  font-weight: 400 !important;\n  line-height: 1.4 !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-axis-summary strong {\n  display: block !important;\n  margin: 0 0 3px !important;\n  color: #16181d !important;\n  font-weight: 700 !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-mobile-list {\n  display: grid !important;\n  gap: 14px !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-mobile-card {\n  position: relative !important;\n  margin: 0 !important;\n  padding: 20px 18px 18px 68px !important;\n  overflow: hidden !important;\n  background: #f7f8fb !important;\n  border: 1px solid #d8dee9 !important;\n  border-radius: 11px !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-mobile-card::before {\n  position: absolute !important;\n  top: 0 !important;\n  right: 0 !important;\n  left: 0 !important;\n  height: 5px !important;\n  content: \"\" !important;\n  background: var(--adx-node-color) !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-mobile-number {\n  position: absolute !important;\n  top: 20px !important;\n  left: 18px !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  width: 36px !important;\n  height: 36px !important;\n  color: #ffffff !important;\n  background: var(--adx-node-color) !important;\n  border: var(--adx-node-border, 2px solid var(--adx-node-color)) !important;\n  border-radius: 50% !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 15px !important;\n  font-weight: 700 !important;\n  line-height: 1 !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-mobile-card-farm {\n  --adx-node-color: #e8a33d;\n}\n\n#adx-cost-scale-v2 .adx-cs-mobile-card-consumer {\n  --adx-node-color: #e8a33d;\n  --adx-node-border: 4px solid #d9534f;\n}\n\n#adx-cost-scale-v2 .adx-cs-mobile-card-bot {\n  --adx-node-color: #d9534f;\n}\n\n#adx-cost-scale-v2 .adx-cs-card-title {\n  margin: 0 0 5px !important;\n  padding: 0 !important;\n  color: #16181d !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 17px !important;\n  font-weight: 700 !important;\n  line-height: 1.35 !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-card-copy {\n  margin: 0 !important;\n  padding: 0 !important;\n  color: #4b5360 !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 13.5px !important;\n  font-weight: 400 !important;\n  line-height: 1.5 !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-card-metrics {\n  display: flex !important;\n  flex-wrap: wrap !important;\n  gap: 8px !important;\n  margin: 14px 0 0 !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-metric {\n  display: inline-block !important;\n  padding: 6px 9px !important;\n  color: #343945 !important;\n  background: #ffffff !important;\n  border: 1px solid #d8dee9 !important;\n  border-radius: 6px !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 11.5px !important;\n  line-height: 1.35 !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-metric strong {\n  font-weight: 700 !important;\n}\n\n#adx-cost-scale-v2 .adx-cs-hardest {\n  display: inline-block !important;\n  margin: 12px 0 0 !important;\n  padding: 5px 8px !important;\n  color: #9a302d !important;\n  background: #fdeceb !important;\n  border-radius: 5px !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 11px !important;\n  font-weight: 700 !important;\n  line-height: 1.3 !important;\n  letter-spacing: 0.03em !important;\n  text-transform: uppercase !important;\n}\n\n@media (max-width: 860px) {\n  #adx-cost-scale-v2 .adx-cs-desktop {\n    display: none !important;\n  }\n\n  #adx-cost-scale-v2 .adx-cs-mobile {\n    display: block !important;\n    padding: 20px 20px 0 !important;\n  }\n\n  #adx-cost-scale-v2 .adx-cs-legend {\n    grid-template-columns: 1fr !important;\n    margin: 20px 20px 0 !important;\n  }\n\n  #adx-cost-scale-v2 .adx-cs-caption {\n    padding-right: 20px !important;\n    padding-left: 20px !important;\n  }\n}\n\n@media (max-width: 520px) {\n  #adx-cost-scale-v2 {\n    margin: 24px auto !important;\n    border-radius: 12px !important;\n  }\n\n  #adx-cost-scale-v2 .adx-cs-header {\n    padding: 24px 20px 20px !important;\n  }\n\n  #adx-cost-scale-v2 .adx-cs-title {\n    font-size: 21px !important;\n  }\n\n  #adx-cost-scale-v2 .adx-cs-subtitle {\n    font-size: 13px !important;\n  }\n\n  #adx-cost-scale-v2 .adx-cs-mobile {\n    padding: 18px 16px 0 !important;\n  }\n\n  #adx-cost-scale-v2 .adx-cs-mobile-axes {\n    grid-template-columns: 1fr !important;\n  }\n\n  #adx-cost-scale-v2 .adx-cs-mobile-card {\n    padding: 19px 16px 17px 62px !important;\n  }\n\n  #adx-cost-scale-v2 .adx-cs-mobile-number {\n    top: 19px !important;\n    left: 15px !important;\n    width: 34px !important;\n    height: 34px !important;\n  }\n\n  #adx-cost-scale-v2 .adx-cs-card-title {\n    font-size: 16px !important;\n  }\n\n  #adx-cost-scale-v2 .adx-cs-legend {\n    margin: 18px 16px 0 !important;\n    padding: 16px !important;\n  }\n\n  #adx-cost-scale-v2 .adx-cs-caption {\n    padding: 16px 16px 19px !important;\n  }\n}\n<\/style>\n\n<figure\n  id=\"adx-cost-scale-v2\"\n  aria-labelledby=\"adx-cost-scale-title-v2\"\n  aria-describedby=\"adx-cost-scale-description-v2\"\n>\n  <header class=\"adx-cs-header\">\n    <h3 id=\"adx-cost-scale-title-v2\" class=\"adx-cs-title\">\n      Cost, Scale, and How Real the Hardware Is\n    <\/h3>\n\n    <p id=\"adx-cost-scale-description-v2\" class=\"adx-cs-subtitle\">\n      Schematic only. Positions are illustrative and do not represent measured values.\n    <\/p>\n  <\/header>\n\n  <div class=\"adx-cs-desktop\">\n    <svg\n      class=\"adx-cs-chart\"\n      xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n      viewBox=\"0 0 1000 540\"\n      role=\"img\"\n      aria-labelledby=\"adx-cost-scale-svg-title-v2 adx-cost-scale-svg-desc-v2\"\n    >\n      <title id=\"adx-cost-scale-svg-title-v2\">\n        Schematic comparison of operating cost, reachable scale, and hardware realism\n      <\/title>\n\n      <desc id=\"adx-cost-scale-svg-desc-v2\">\n        An on-premises device farm appears at high cost and small scale.\n        Compromised consumer devices appear at medium cost and large scale.\n        An emulated bot fleet appears at near-zero cost and botnet scale.\n      <\/desc>\n\n      <defs>\n        <marker\n          id=\"adx-cost-scale-arrow-v2\"\n          markerWidth=\"9\"\n          markerHeight=\"9\"\n          refX=\"7\"\n          refY=\"4.5\"\n          orient=\"auto\"\n        >\n          <path d=\"M0,1 L8,4.5 L0,8 Z\" fill=\"#8a93a5\"><\/path>\n        <\/marker>\n      <\/defs>\n\n      <rect\n        x=\"102\"\n        y=\"36\"\n        width=\"842\"\n        height=\"420\"\n        rx=\"12\"\n        fill=\"#f4f6fa\"\n        stroke=\"#d8dee9\"\n        stroke-width=\"1.5\"\n      ><\/rect>\n\n      <line\n        x1=\"102\"\n        y1=\"456\"\n        x2=\"102\"\n        y2=\"29\"\n        stroke=\"#8a93a5\"\n        stroke-width=\"1.8\"\n        marker-end=\"url(#adx-cost-scale-arrow-v2)\"\n      ><\/line>\n\n      <line\n        x1=\"102\"\n        y1=\"456\"\n        x2=\"954\"\n        y2=\"456\"\n        stroke=\"#8a93a5\"\n        stroke-width=\"1.8\"\n        marker-end=\"url(#adx-cost-scale-arrow-v2)\"\n      ><\/line>\n\n      <line x1=\"102\" y1=\"171\" x2=\"222\" y2=\"171\" stroke=\"#c4cad5\" stroke-width=\"1.2\" stroke-dasharray=\"5 5\"><\/line>\n      <line x1=\"222\" y1=\"171\" x2=\"222\" y2=\"456\" stroke=\"#c4cad5\" stroke-width=\"1.2\" stroke-dasharray=\"5 5\"><\/line>\n\n      <line x1=\"102\" y1=\"292\" x2=\"630\" y2=\"292\" stroke=\"#c4cad5\" stroke-width=\"1.2\" stroke-dasharray=\"5 5\"><\/line>\n      <line x1=\"630\" y1=\"292\" x2=\"630\" y2=\"456\" stroke=\"#c4cad5\" stroke-width=\"1.2\" stroke-dasharray=\"5 5\"><\/line>\n\n      <line x1=\"102\" y1=\"408\" x2=\"836\" y2=\"408\" stroke=\"#c4cad5\" stroke-width=\"1.2\" stroke-dasharray=\"5 5\"><\/line>\n      <line x1=\"836\" y1=\"408\" x2=\"836\" y2=\"456\" stroke=\"#c4cad5\" stroke-width=\"1.2\" stroke-dasharray=\"5 5\"><\/line>\n\n      <text\n        x=\"47\"\n        y=\"246\"\n        fill=\"#16181d\"\n        font-family=\"Arial, Helvetica, sans-serif\"\n        font-size=\"15\"\n        font-weight=\"700\"\n        text-anchor=\"middle\"\n        transform=\"rotate(-90 47 246)\"\n      >\n        Cost to run\n      <\/text>\n\n      <text\n        x=\"528\"\n        y=\"511\"\n        fill=\"#16181d\"\n        font-family=\"Arial, Helvetica, sans-serif\"\n        font-size=\"15\"\n        font-weight=\"700\"\n        text-anchor=\"middle\"\n      >\n        Reachable scale\n      <\/text>\n\n      <text x=\"118\" y=\"61\" fill=\"#5b6472\" font-family=\"Arial, Helvetica, sans-serif\" font-size=\"12\">\n        High cost per unit of traffic\n      <\/text>\n\n      <text x=\"118\" y=\"442\" fill=\"#5b6472\" font-family=\"Arial, Helvetica, sans-serif\" font-size=\"12\">\n        Near-zero cost per unit of traffic\n      <\/text>\n\n      <text x=\"118\" y=\"481\" fill=\"#5b6472\" font-family=\"Arial, Helvetica, sans-serif\" font-size=\"12\">\n        One room\n      <\/text>\n\n      <text\n        x=\"932\"\n        y=\"481\"\n        fill=\"#5b6472\"\n        font-family=\"Arial, Helvetica, sans-serif\"\n        font-size=\"12\"\n        text-anchor=\"end\"\n      >\n        Botnet scale\n      <\/text>\n\n      <circle\n        cx=\"222\"\n        cy=\"171\"\n        r=\"43\"\n        fill=\"#e8a33d\"\n        stroke=\"#e8a33d\"\n        stroke-width=\"2\"\n      ><\/circle>\n\n      <text\n        x=\"222\"\n        y=\"177\"\n        fill=\"#ffffff\"\n        font-family=\"Arial, Helvetica, sans-serif\"\n        font-size=\"18\"\n        font-weight=\"700\"\n        text-anchor=\"middle\"\n      >\n        1\n      <\/text>\n\n      <text\n        x=\"280\"\n        y=\"146\"\n        fill=\"#16181d\"\n        font-family=\"Arial, Helvetica, sans-serif\"\n        font-size=\"15\"\n        font-weight=\"700\"\n      >\n        On-Premises Device Farm\n      <\/text>\n\n      <text\n        x=\"280\"\n        y=\"170\"\n        fill=\"#2d323c\"\n        font-family=\"Arial, Helvetica, sans-serif\"\n        font-size=\"13.5\"\n      >\n        Real handsets on real home broadband\n      <\/text>\n\n      <text\n        x=\"280\"\n        y=\"192\"\n        fill=\"#5b6472\"\n        font-family=\"Arial, Helvetica, sans-serif\"\n        font-size=\"12\"\n      >\n        Every extra unit requires hardware and power\n      <\/text>\n\n      <circle\n        cx=\"630\"\n        cy=\"292\"\n        r=\"48\"\n        fill=\"#e8a33d\"\n        stroke=\"#d9534f\"\n        stroke-width=\"5\"\n      ><\/circle>\n\n      <text\n        x=\"630\"\n        y=\"298\"\n        fill=\"#ffffff\"\n        font-family=\"Arial, Helvetica, sans-serif\"\n        font-size=\"18\"\n        font-weight=\"700\"\n        text-anchor=\"middle\"\n      >\n        2\n      <\/text>\n\n      <rect x=\"340\" y=\"235\" width=\"220\" height=\"24\" rx=\"5\" fill=\"#fdeceb\"><\/rect>\n\n      <text\n        x=\"450\"\n        y=\"251\"\n        fill=\"#9a302d\"\n        font-family=\"Arial, Helvetica, sans-serif\"\n        font-size=\"10.5\"\n        font-weight=\"700\"\n        text-anchor=\"middle\"\n        letter-spacing=\"0.4\"\n      >\n        HARDEST TO SEPARATE FROM USERS\n      <\/text>\n\n      <text\n        x=\"560\"\n        y=\"279\"\n        fill=\"#16181d\"\n        font-family=\"Arial, Helvetica, sans-serif\"\n        font-size=\"15\"\n        font-weight=\"700\"\n        text-anchor=\"end\"\n      >\n        Compromised Consumer Devices\n      <\/text>\n\n      <text\n        x=\"560\"\n        y=\"303\"\n        fill=\"#2d323c\"\n        font-family=\"Arial, Helvetica, sans-serif\"\n        font-size=\"13.5\"\n        text-anchor=\"end\"\n      >\n        Real hardware and residential addresses\n      <\/text>\n\n      <text\n        x=\"560\"\n        y=\"325\"\n        fill=\"#5b6472\"\n        font-family=\"Arial, Helvetica, sans-serif\"\n        font-size=\"12\"\n        text-anchor=\"end\"\n      >\n        Someone else pays for the phone and power\n      <\/text>\n\n      <circle\n        cx=\"836\"\n        cy=\"408\"\n        r=\"43\"\n        fill=\"#d9534f\"\n        stroke=\"#d9534f\"\n        stroke-width=\"2\"\n      ><\/circle>\n\n      <text\n        x=\"836\"\n        y=\"414\"\n        fill=\"#ffffff\"\n        font-family=\"Arial, Helvetica, sans-serif\"\n        font-size=\"18\"\n        font-weight=\"700\"\n        text-anchor=\"middle\"\n      >\n        3\n      <\/text>\n\n      <text\n        x=\"778\"\n        y=\"377\"\n        fill=\"#16181d\"\n        font-family=\"Arial, Helvetica, sans-serif\"\n        font-size=\"15\"\n        font-weight=\"700\"\n        text-anchor=\"end\"\n      >\n        Emulated Bot Fleet\n      <\/text>\n\n      <text\n        x=\"778\"\n        y=\"401\"\n        fill=\"#2d323c\"\n        font-family=\"Arial, Helvetica, sans-serif\"\n        font-size=\"13.5\"\n        text-anchor=\"end\"\n      >\n        Spins up in minutes on rented compute\n      <\/text>\n\n      <text\n        x=\"778\"\n        y=\"423\"\n        fill=\"#5b6472\"\n        font-family=\"Arial, Helvetica, sans-serif\"\n        font-size=\"12\"\n        text-anchor=\"end\"\n      >\n        Cheap to build and rebuild after a block\n      <\/text>\n    <\/svg>\n  <\/div>\n\n  <div class=\"adx-cs-mobile\" aria-label=\"Mobile comparison of the three operating models\">\n    <div class=\"adx-cs-mobile-axes\">\n      <p class=\"adx-cs-axis-summary\">\n        <strong>Cost to run<\/strong>\n        High cost \u2192 near-zero cost\n      <\/p>\n\n      <p class=\"adx-cs-axis-summary\">\n        <strong>Reachable scale<\/strong>\n        One room \u2192 botnet scale\n      <\/p>\n    <\/div>\n\n    <div class=\"adx-cs-mobile-list\">\n      <section class=\"adx-cs-mobile-card adx-cs-mobile-card-farm\">\n        <span class=\"adx-cs-mobile-number\" aria-hidden=\"true\">1<\/span>\n\n        <h4 class=\"adx-cs-card-title\" id=\"on-premises-device-farm\">On-Premises Device Farm<\/h4>\n\n        <p class=\"adx-cs-card-copy\">\n          Real handsets on real home broadband. Every extra unit requires more\n          hardware and power.\n        <\/p>\n\n        <div class=\"adx-cs-card-metrics\">\n          <span class=\"adx-cs-metric\"><strong>Cost:<\/strong> High<\/span>\n          <span class=\"adx-cs-metric\"><strong>Scale:<\/strong> One room<\/span>\n        <\/div>\n      <\/section>\n\n      <section class=\"adx-cs-mobile-card adx-cs-mobile-card-consumer\">\n        <span class=\"adx-cs-mobile-number\" aria-hidden=\"true\">2<\/span>\n\n        <h4 class=\"adx-cs-card-title\" id=\"compromised-consumer-devices\">Compromised Consumer Devices<\/h4>\n\n        <p class=\"adx-cs-card-copy\">\n          Real hardware and residential addresses, while someone else pays for\n          the phone and power.\n        <\/p>\n\n        <div class=\"adx-cs-card-metrics\">\n          <span class=\"adx-cs-metric\"><strong>Cost:<\/strong> Mid<\/span>\n          <span class=\"adx-cs-metric\"><strong>Scale:<\/strong> Large<\/span>\n        <\/div>\n\n        <span class=\"adx-cs-hardest\">Hardest to separate from users<\/span>\n      <\/section>\n\n      <section class=\"adx-cs-mobile-card adx-cs-mobile-card-bot\">\n        <span class=\"adx-cs-mobile-number\" aria-hidden=\"true\">3<\/span>\n\n        <h4 class=\"adx-cs-card-title\" id=\"emulated-bot-fleet\">Emulated Bot Fleet<\/h4>\n\n        <p class=\"adx-cs-card-copy\">\n          An imitated environment that can be launched in minutes on rented\n          compute and rebuilt cheaply after a block.\n        <\/p>\n\n        <div class=\"adx-cs-card-metrics\">\n          <span class=\"adx-cs-metric\"><strong>Cost:<\/strong> Near zero<\/span>\n          <span class=\"adx-cs-metric\"><strong>Scale:<\/strong> Botnet<\/span>\n        <\/div>\n      <\/section>\n    <\/div>\n  <\/div>\n\n  <div class=\"adx-cs-legend\" aria-label=\"Hardware realism legend\">\n    <div class=\"adx-cs-legend-item\">\n      <span class=\"adx-cs-swatch\" aria-hidden=\"true\"><\/span>\n\n      <p class=\"adx-cs-legend-text\">\n        Real hardware: the revealing traces sit in behavior, sensors, and place.\n      <\/p>\n    <\/div>\n\n    <div class=\"adx-cs-legend-item\">\n      <span class=\"adx-cs-swatch adx-cs-swatch-hybrid\" aria-hidden=\"true\"><\/span>\n\n      <p class=\"adx-cs-legend-text\">\n        Real hardware at botnet scale: the hardest model to separate from genuine users.\n      <\/p>\n    <\/div>\n\n    <div class=\"adx-cs-legend-item\">\n      <span class=\"adx-cs-swatch adx-cs-swatch-bot\" aria-hidden=\"true\"><\/span>\n\n      <p class=\"adx-cs-legend-text\">\n        Imitated hardware: the revealing traces sit in the reported environment.\n      <\/p>\n    <\/div>\n  <\/div>\n\n  <figcaption class=\"adx-cs-caption\">\n    Compromised consumer devices sit between the two cleaner cases: hardware\n    realism at close to software economics.\n  <\/figcaption>\n<\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"why-a-stack-tuned-for-one-threat-goes-quiet-on-the-other\">Why a Stack Tuned for One Threat Goes Quiet on the Other<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A strong device check can make a farm more profitable rather than less. A scoring pipeline can treat a passed integrity check as evidence of quality, or skip expensive behavioral scoring to protect response time. A rack of stock handsets does not merely survive the device check; it collects a trust credit and spends that credit at every stage after. The better the hardware verification, the more it is worth to an operator to use real hardware.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The reverse failure is quieter and just as expensive. Rules built on location and sameness (one address serving too many identifiers, geolocation that never moves, activity confined to office hours) do nothing to an emulated fleet routed through residential proxy capacity in the target city. Each instance presents as one device on one home connection in the right place.<\/p>\n\n\n<div class=\"block__bord\"><div class=\"block__bord_desc\"><p>This is a real conflict rather than a gap someone forgot to close. Hard environment enforcement raises false positives on real users: custom builds, privacy-hardened devices, hardware too old to report a full sensor stack. Loosen it and the emulated fleet gets easier to run. The requirement is knowing which threat the current setting leaves alone.<\/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=\"what-neither-signal-class-resolves-cleanly\">What Neither Signal Class Resolves Cleanly<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">False positives cluster in the same places for both models. Managed corporate device fleets share an uplink, a location, a configuration, and a working-hours pattern, which is the farm shape almost exactly. Internet cafes and phones on institutional Wi-Fi produce similar identifier density. Meanwhile developers run emulators and quality assurance teams run headless browsers, both legitimately.<\/p>\n\n\n<div class=\"block__bord\"><div class=\"block__bord_desc\"><p>Sensor evidence is thinner than it sounds. A phone reading flat on a shelf in a farm and one flat on an office desk produce the same reading. These signals carry weight in combination and across a population, almost none alone, which is why analysts who work these cases distrust single-signal certainty first.<\/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 class=\"wp-block-paragraph\">Two constraints are worth stating plainly. Networks and verification vendors do not publish which signals fired on a flag, and they should not, because naming the signal is how an operator learns what to change next. And no filter reaches zero, so the working question is whether residual invalid traffic stays small and stable enough to price in. Review by someone who knows the campaign is still what separates a farm from a call center, or an emulator from a test device.<\/p>\n\n\n<div class=\"block__preview\">\n        <a href=\"https:\/\/adex.com\/blog\/device-fingerprinting-fraud-prevention-gdpr\/\" class=\"block__preview_img\"><img src=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/06\/adex-device-fingerprinting-balance.png\" srcset=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/06\/adex-device-fingerprinting-balance.png\" sizes=\"100vw\" alt=\"How to balance between device fingerprinting and user security?\" decoding=\"async\" class=\"lazy\"><\/a>\n    <div class=\"block__preview_box\">\n        <a href=\"https:\/\/adex.com\/blog\/category\/guides\/\" class=\"block__preview_box-cat\">Guides<\/a>        <h3 class=\"block__preview_box-title\" id=\"device-fingerprinting-for-fraud-prevention-navigating-gdpr-and-privacy-constraints\"><a href=\"https:\/\/adex.com\/blog\/device-fingerprinting-fraud-prevention-gdpr\/\">Device Fingerprinting for Fraud Prevention: Navigating GDPR and Privacy Constraints<\/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=\"faq\">FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"what-is-device-farm-fraud\">What is device farm fraud? <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Device farm fraud is invalid traffic generated from racks of real physical devices, usually mobile handsets, operated together to produce impressions, clicks, installs, or in-app events no genuine user asked for. Because the hardware is real it passes device integrity checks, so it is caught through behavioral sameness and repeating geolocation.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"what-is-the-difference-between-a-device-farm-and-bot-traffic\">What is the difference between a device farm and bot traffic? <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A device farm fakes the audience with real hardware, so its behavior and location give it away. An emulated bot fakes it in software, so it scales far more cheaply and its reported environment gives it away. Detection methods do not transfer between the two.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"can-emulator-detection-catch-a-click-farm\">Can emulator detection catch a click farm? <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No, and that is the most common blind spot in traffic quality reviews. Emulator detection looks for evidence that a claimed device does not exist: build strings, missing sensors, graphics identifiers matching no shipped handset. A farm of stock phones supplies none of that.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"which-signals-work-for-click-farm-detection\">Which signals work for click farm detection? <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Population-level signals rather than single-request ones: many identifiers sharing one uplink and one location, geolocation that never varies, motion sensors reporting a device that never moves, activity confined to shift windows. Pairing those with downstream conversion quality beats any of them alone, and confirmation still needs a person to read the pattern.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"are-device-farms-and-bots-both-sophisticated-invalid-traffic\">Are device farms and bots both sophisticated invalid traffic? <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Yes, when either is built with care. Under IAB and MRC invalid traffic guidance, general invalid traffic is what routine filtering and known-source lists remove, while sophisticated invalid traffic requires advanced analytics and multi-point corroboration. Farms and behavior-mimicking bots sit on the sophisticated side of that line.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"two-threats-one-line-item\">Two Threats, One Line Item<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The invoice does not distinguish. Wasted spend from a rack of handsets and from an emulated fleet arrive in the same report, often inside the same campaign. The detection stack does distinguish, whether or not anyone configured it deliberately.<\/p>\n\n\n<div class=\"block__bord\"><div class=\"block__bord_desc\"><p>So the question is not which threat is bigger. It is which of the two your current coverage is not built to see. Traffic that fails no environment check, converts poorly, and arrives from a few plausible locations is a different diagnosis than traffic that fails every environment check on the first request.<\/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 class=\"wp-block-paragraph\">Join our Telegram for more insights and share your ideas with fellow-affiliates.<\/p>\n\n\n    <div class=\"block__buttons\">\n        <a href=\"https:\/\/app.adex.com\/auth\/login\" class=\"block__buttons_btn\">JOIN ADEX<\/a>    <\/div>\n<style>\n    .block__buttons {\n        text-align: center;\n    }\n\n    .block__buttons_btn {\n        background-color: rgba(254, 100, 90, 1) !important;\n        border-radius: 200px !important;\n        padding: 16px 24px !important;\n        font-weight: 600 !important;\n        font-size: 18px !important;\n        line-height: 24px !important;\n        text-align: center !important;\n        display: inline-block !important;\n        color: #fff !important;\n        text-decoration: none !important;\n        text-transform: uppercase !important;\n    }\n\n    .block__buttons_btn:hover {\n        color: rgba(11, 31, 58, 1) !important;\n    }\n<\/style>\n","protected":false},"excerpt":{"rendered":"<p>Could a rack of real phones be draining your ad budget while your device checks say the traffic is clean? See how device farm fraud differs from bot traffic, which signals expose each threat, and where your detection stack may have blind spots.<\/p>\n","protected":false},"author":8,"featured_media":6029,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[4],"tags":[18,16],"class_list":["post-5954","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>Device Farm Fraud vs Bots: How to Detect Each<\/title>\n<meta name=\"description\" content=\"Emulator detection misses a rack of real phones, and farm signals miss a bot fleet. Which checks catch which, and where both go blind.\" \/>\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\/device-farm-fraud-vs-bots\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Device Farm Fraud vs Bots: How to Detect Each\" \/>\n<meta property=\"og:description\" content=\"Emulator detection misses a rack of real phones, and farm signals miss a bot fleet. Which checks catch which, and where both go blind.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/adex.com\/blog\/device-farm-fraud-vs-bots\/\" \/>\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-08-17T15:50:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-17T16:15:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/07\/adex-device-farm-fraud-vs-bots.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\\\/device-farm-fraud-vs-bots\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/device-farm-fraud-vs-bots\\\/\"},\"author\":{\"name\":\"Olya Mikheeva\",\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/#\\\/schema\\\/person\\\/c5794aef7aa28987e7019a804390ee3a\"},\"headline\":\"Device Farm Fraud vs Bots: Two Ways to Fake an Audience\",\"datePublished\":\"2026-08-17T15:50:37+00:00\",\"dateModified\":\"2026-08-17T16:15:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/device-farm-fraud-vs-bots\\\/\"},\"wordCount\":2307,\"publisher\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/device-farm-fraud-vs-bots\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/adex.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/adex-device-farm-fraud-vs-bots.png\",\"keywords\":[\"Fraud\",\"Threat\"],\"articleSection\":[\"Current risks\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/device-farm-fraud-vs-bots\\\/\",\"url\":\"https:\\\/\\\/adex.com\\\/blog\\\/device-farm-fraud-vs-bots\\\/\",\"name\":\"Device Farm Fraud vs Bots: How to Detect Each\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/device-farm-fraud-vs-bots\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/device-farm-fraud-vs-bots\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/adex.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/adex-device-farm-fraud-vs-bots.png\",\"datePublished\":\"2026-08-17T15:50:37+00:00\",\"dateModified\":\"2026-08-17T16:15:28+00:00\",\"description\":\"Emulator detection misses a rack of real phones, and farm signals miss a bot fleet. Which checks catch which, and where both go blind.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/device-farm-fraud-vs-bots\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/adex.com\\\/blog\\\/device-farm-fraud-vs-bots\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/device-farm-fraud-vs-bots\\\/#primaryimage\",\"url\":\"https:\\\/\\\/adex.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/adex-device-farm-fraud-vs-bots.png\",\"contentUrl\":\"https:\\\/\\\/adex.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/adex-device-farm-fraud-vs-bots.png\",\"width\":1200,\"height\":628,\"caption\":\"Device farm fraud vs bots: why real phones pass device checks, where each leaves traces, and which signals catch which kind of fake audience.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/adex.com\\\/blog\\\/device-farm-fraud-vs-bots\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/adex.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Device Farm Fraud vs Bots: Two Ways to Fake an Audience\"}]},{\"@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":"Device Farm Fraud vs Bots: How to Detect Each","description":"Emulator detection misses a rack of real phones, and farm signals miss a bot fleet. Which checks catch which, and where both go blind.","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\/device-farm-fraud-vs-bots\/","og_locale":"en_US","og_type":"article","og_title":"Device Farm Fraud vs Bots: How to Detect Each","og_description":"Emulator detection misses a rack of real phones, and farm signals miss a bot fleet. Which checks catch which, and where both go blind.","og_url":"https:\/\/adex.com\/blog\/device-farm-fraud-vs-bots\/","og_site_name":"ADEX","article_publisher":"https:\/\/www.facebook.com\/adexsaas\/","article_published_time":"2026-08-17T15:50:37+00:00","article_modified_time":"2026-08-17T16:15:28+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/07\/adex-device-farm-fraud-vs-bots.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\/device-farm-fraud-vs-bots\/#article","isPartOf":{"@id":"https:\/\/adex.com\/blog\/device-farm-fraud-vs-bots\/"},"author":{"name":"Olya Mikheeva","@id":"https:\/\/adex.com\/blog\/#\/schema\/person\/c5794aef7aa28987e7019a804390ee3a"},"headline":"Device Farm Fraud vs Bots: Two Ways to Fake an Audience","datePublished":"2026-08-17T15:50:37+00:00","dateModified":"2026-08-17T16:15:28+00:00","mainEntityOfPage":{"@id":"https:\/\/adex.com\/blog\/device-farm-fraud-vs-bots\/"},"wordCount":2307,"publisher":{"@id":"https:\/\/adex.com\/blog\/#organization"},"image":{"@id":"https:\/\/adex.com\/blog\/device-farm-fraud-vs-bots\/#primaryimage"},"thumbnailUrl":"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/07\/adex-device-farm-fraud-vs-bots.png","keywords":["Fraud","Threat"],"articleSection":["Current risks"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/adex.com\/blog\/device-farm-fraud-vs-bots\/","url":"https:\/\/adex.com\/blog\/device-farm-fraud-vs-bots\/","name":"Device Farm Fraud vs Bots: How to Detect Each","isPartOf":{"@id":"https:\/\/adex.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/adex.com\/blog\/device-farm-fraud-vs-bots\/#primaryimage"},"image":{"@id":"https:\/\/adex.com\/blog\/device-farm-fraud-vs-bots\/#primaryimage"},"thumbnailUrl":"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/07\/adex-device-farm-fraud-vs-bots.png","datePublished":"2026-08-17T15:50:37+00:00","dateModified":"2026-08-17T16:15:28+00:00","description":"Emulator detection misses a rack of real phones, and farm signals miss a bot fleet. Which checks catch which, and where both go blind.","breadcrumb":{"@id":"https:\/\/adex.com\/blog\/device-farm-fraud-vs-bots\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/adex.com\/blog\/device-farm-fraud-vs-bots\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/adex.com\/blog\/device-farm-fraud-vs-bots\/#primaryimage","url":"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/07\/adex-device-farm-fraud-vs-bots.png","contentUrl":"https:\/\/adex.com\/blog\/wp-content\/uploads\/2026\/07\/adex-device-farm-fraud-vs-bots.png","width":1200,"height":628,"caption":"Device farm fraud vs bots: why real phones pass device checks, where each leaves traces, and which signals catch which kind of fake audience."},{"@type":"BreadcrumbList","@id":"https:\/\/adex.com\/blog\/device-farm-fraud-vs-bots\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/adex.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Device Farm Fraud vs Bots: Two Ways to Fake an Audience"}]},{"@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\/5954","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=5954"}],"version-history":[{"count":16,"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/posts\/5954\/revisions"}],"predecessor-version":[{"id":6061,"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/posts\/5954\/revisions\/6061"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/media\/6029"}],"wp:attachment":[{"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/media?parent=5954"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/categories?post=5954"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adex.com\/blog\/wp-json\/wp\/v2\/tags?post=5954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}