[{"data":1,"prerenderedAt":357},["ShallowReactive",2],{"docsv3-nav":3,"\u002Fdocs\u002Fv3\u002Fconcepts\u002Fdevices":198},[4],{"title":5,"path":6,"stem":7,"children":8,"page":188},"V3","\u002Fdocs\u002Fv3","1.docs\u002Fv3",[9,13,17,21,38,87,189],{"title":10,"path":11,"stem":12},"Introduction","\u002Fdocs\u002Fv3\u002Fintroduction","1.docs\u002Fv3\u002F1.Introduction",{"title":14,"path":15,"stem":16},"Quick start","\u002Fdocs\u002Fv3\u002Fquick-start","1.docs\u002Fv3\u002F2.Quick start",{"title":18,"path":19,"stem":20},"Challenge flow","\u002Fdocs\u002Fv3\u002Fchallenge-flow","1.docs\u002Fv3\u002F3.Challenge flow",{"title":22,"path":23,"stem":24,"children":25},"Fundamentals","\u002Fdocs\u002Fv3\u002Ffundamentals","1.docs\u002Fv3\u002F4.fundamentals",[26,30,34],{"title":27,"path":28,"stem":29},"Signup protection","\u002Fdocs\u002Fv3\u002Ffundamentals\u002Fsignup-protection","1.docs\u002Fv3\u002F4.fundamentals\u002F00.Signup protection",{"title":31,"path":32,"stem":33},"Login protection","\u002Fdocs\u002Fv3\u002Ffundamentals\u002Flogin-protection","1.docs\u002Fv3\u002F4.fundamentals\u002F01.Login protection",{"title":35,"path":36,"stem":37},"Access protection","\u002Fdocs\u002Fv3\u002Ffundamentals\u002Faccess-protection","1.docs\u002Fv3\u002F4.fundamentals\u002F02.Access protection",{"title":39,"path":40,"stem":41,"children":42},"Guides","\u002Fdocs\u002Fv3\u002Fguides","1.docs\u002Fv3\u002F5.guides",[43,47,51,55,59,63,67,71,75,79,83],{"title":44,"path":45,"stem":46},"Account sharing prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Faccount-sharing-prevention","1.docs\u002Fv3\u002F5.guides\u002F1.Account sharing prevention",{"title":48,"path":49,"stem":50},"Web scraping prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Fweb-scraping-prevention","1.docs\u002Fv3\u002F5.guides\u002F13.Web scraping prevention",{"title":52,"path":53,"stem":54},"Ban enforcement","\u002Fdocs\u002Fv3\u002Fguides\u002Fban-enforcement","1.docs\u002Fv3\u002F5.guides\u002F14.Ban enforcement",{"title":56,"path":57,"stem":58},"Chargeback dispute","\u002Fdocs\u002Fv3\u002Fguides\u002Fchargeback-dispute","1.docs\u002Fv3\u002F5.guides\u002F15.Chargeback dispute",{"title":60,"path":61,"stem":62},"Multi-accounting prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Fmulti-accounting-prevention","1.docs\u002Fv3\u002F5.guides\u002F16.Multi-accounting prevention",{"title":64,"path":65,"stem":66},"Account takeover prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Faccount-takeover-prevention","1.docs\u002Fv3\u002F5.guides\u002F2.Account takeover prevention",{"title":68,"path":69,"stem":70},"Risky transaction prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Frisky-transaction-prevention","1.docs\u002Fv3\u002F5.guides\u002F20.Risky transaction prevention",{"title":72,"path":73,"stem":74},"Fake account detection","\u002Fdocs\u002Fv3\u002Fguides\u002Ffake-account-detection","1.docs\u002Fv3\u002F5.guides\u002F3.Fake account detection",{"title":76,"path":77,"stem":78},"Bot detection","\u002Fdocs\u002Fv3\u002Fguides\u002Fbot-detection","1.docs\u002Fv3\u002F5.guides\u002F4.Bot detection",{"title":80,"path":81,"stem":82},"Card testing prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Fcard-testing-prevention","1.docs\u002Fv3\u002F5.guides\u002F5.Card testing prevention",{"title":84,"path":85,"stem":86},"Incentive abuse prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Fincentive-abuse-prevention","1.docs\u002Fv3\u002F5.guides\u002F9.Incentive abuse prevention",{"title":88,"path":89,"stem":90,"children":91,"page":188},"Concepts","\u002Fdocs\u002Fv3\u002Fconcepts","1.docs\u002Fv3\u002F6.concepts",[92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184],{"title":93,"path":94,"stem":95},"Evaluations","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fevaluations","1.docs\u002Fv3\u002F6.concepts\u002F01.evaluations",{"title":97,"path":98,"stem":99},"Actions","\u002Fdocs\u002Fv3\u002Fconcepts\u002Factions","1.docs\u002Fv3\u002F6.concepts\u002F02.actions",{"title":101,"path":102,"stem":103},"Signals","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fsignals","1.docs\u002Fv3\u002F6.concepts\u002F03.signals",{"title":105,"path":106,"stem":107},"Checks","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fchecks","1.docs\u002Fv3\u002F6.concepts\u002F04.checks",{"title":109,"path":110,"stem":111},"Risks","\u002Fdocs\u002Fv3\u002Fconcepts\u002Frisks","1.docs\u002Fv3\u002F6.concepts\u002F05.risks",{"title":113,"path":114,"stem":115},"Verdicts","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fverdicts","1.docs\u002Fv3\u002F6.concepts\u002F06.verdicts",{"title":117,"path":118,"stem":119},"Policies","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fpolicies","1.docs\u002Fv3\u002F6.concepts\u002F07.policies",{"title":121,"path":122,"stem":123},"Challenges","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fchallenges","1.docs\u002Fv3\u002F6.concepts\u002F08.challenges",{"title":125,"path":126,"stem":127},"Concurrency","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fconcurrency","1.docs\u002Fv3\u002F6.concepts\u002F09.concurrency",{"title":129,"path":130,"stem":131},"Impossible travel","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fimpossible-travel","1.docs\u002Fv3\u002F6.concepts\u002F10.impossible-travel",{"title":133,"path":134,"stem":135},"Bots","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fbots","1.docs\u002Fv3\u002F6.concepts\u002F11.bots",{"title":137,"path":138,"stem":139},"Devices","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fdevices","1.docs\u002Fv3\u002F6.concepts\u002F12.devices",{"title":141,"path":142,"stem":143},"Fingerprints","\u002Fdocs\u002Fv3\u002Fconcepts\u002Ffingerprints","1.docs\u002Fv3\u002F6.concepts\u002F13.fingerprints",{"title":145,"path":146,"stem":147},"People","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fpeople","1.docs\u002Fv3\u002F6.concepts\u002F14.people",{"title":149,"path":150,"stem":151},"Lists","\u002Fdocs\u002Fv3\u002Fconcepts\u002Flists","1.docs\u002Fv3\u002F6.concepts\u002F15.lists",{"title":153,"path":154,"stem":155},"Account takeover","\u002Fdocs\u002Fv3\u002Fconcepts\u002Faccount-takeover","1.docs\u002Fv3\u002F6.concepts\u002F16.account-takeover",{"title":157,"path":158,"stem":159},"Account sharing","\u002Fdocs\u002Fv3\u002Fconcepts\u002Faccount-sharing","1.docs\u002Fv3\u002F6.concepts\u002F17.account-sharing",{"title":161,"path":162,"stem":163},"Fake account","\u002Fdocs\u002Fv3\u002Fconcepts\u002Ffake-account","1.docs\u002Fv3\u002F6.concepts\u002F18.fake-account",{"title":165,"path":166,"stem":167},"Scraping","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fscraping","1.docs\u002Fv3\u002F6.concepts\u002F19.scraping",{"title":169,"path":170,"stem":171},"Linked accounts","\u002Fdocs\u002Fv3\u002Fconcepts\u002Flinked-accounts","1.docs\u002Fv3\u002F6.concepts\u002F20.linked-accounts",{"title":173,"path":174,"stem":175},"New IP","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fip","1.docs\u002Fv3\u002F6.concepts\u002F21.ip",{"title":177,"path":178,"stem":179},"Anonymizing network","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fanonymizing-network","1.docs\u002Fv3\u002F6.concepts\u002F22.anonymizing-network",{"title":181,"path":182,"stem":183},"Email quality","\u002Fdocs\u002Fv3\u002Fconcepts\u002Femail","1.docs\u002Fv3\u002F6.concepts\u002F23.email",{"title":185,"path":186,"stem":187},"Velocity","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fvelocity","1.docs\u002Fv3\u002F6.concepts\u002F24.velocity",false,{"title":190,"path":191,"stem":192,"children":193,"page":188},"Advanced","\u002Fdocs\u002Fv3\u002Fadvanced","1.docs\u002Fv3\u002F7.Advanced",[194],{"title":195,"path":196,"stem":197},"Proxy setup","\u002Fdocs\u002Fv3\u002Fadvanced\u002Fproxy-setup","1.docs\u002Fv3\u002F7.Advanced\u002F1.Proxy-setup",{"id":199,"title":137,"body":200,"description":350,"extension":351,"meta":352,"navigation":353,"path":138,"rawbody":354,"seo":355,"stem":139,"__hash__":356},"docsv3\u002F1.docs\u002Fv3\u002F6.concepts\u002F12.devices.md",{"type":201,"value":202,"toc":343},"minimark",[203,207,220,225,228,259,263,270,292,303,307,310,332],[204,205,137],"h1",{"id":206},"devices",[208,209,210,211,215,216,219],"p",{},"A device is a stable identifier for a physical phone, tablet, or computer in Rupt's data model. It sits one level above a ",[212,213,214],"a",{"href":142},"fingerprint",": multiple browsers on the same laptop produce different fingerprints but the same device. That's important for ",[212,217,218],{"href":158},"account sharing",": an account with twelve fingerprints across two devices reads very differently from an account with twelve fingerprints across twelve devices.",[221,222,224],"h2",{"id":223},"how-devices-are-identified","How devices are identified",[208,226,227],{},"The mechanism depends on how the SDK is shipped:",[229,230,231,244,250],"ul",{},[232,233,234,238,239,243],"li",{},[235,236,237],"strong",{},"Native iOS",": uses the Identifier for Vendor (IDFV). Stable across reinstalls of the ",[240,241,242],"em",{},"same"," vendor's apps on the device, resets if every app from the vendor is uninstalled. Apple's anti-fingerprinting policy forbids more durable cross-app identifiers.",[232,245,246,249],{},[235,247,248],{},"Native Android",": uses platform-provided device identifiers per Google's guidelines.",[232,251,252,255,256,258],{},[235,253,254],{},"Web",": derived from the ",[212,257,214],{"href":142}," plus persistent storage hints. Not as stable as a native device ID; treat web devices as best-effort.",[221,260,262],{"id":261},"what-devices-feed","What devices feed",[208,264,265,266,269],{},"Device counts are core to ",[212,267,268],{"href":158},"account-sharing"," detection:",[229,271,272,279],{},[232,273,274,278],{},[275,276,277],"code",{},"device_count",": devices currently attached to the user.",[232,280,281,284,285,284,288,291],{},[275,282,283],{},"computer_device_count",", ",[275,286,287],{},"tablet_device_count",[275,289,290],{},"mobile_device_count",": broken out by type, since the thresholds for \"too many\" differ (one phone is fine, six laptops is suspicious).",[208,293,294,295,298,299,302],{},"These are exposed as ",[212,296,297],{"href":106},"checks"," so ",[212,300,301],{"href":118},"policies"," can match on them directly.",[221,304,306],{"id":305},"devices-vs-fingerprints-vs-users","Devices vs fingerprints vs users",[208,308,309],{},"Rupt deliberately tracks all three layers:",[229,311,312,320,326],{},[232,313,314,319],{},[235,315,316],{},[212,317,318],{"href":142},"Fingerprint",": narrowest. A specific browser instance.",[232,321,322,325],{},[235,323,324],{},"Device",": broader. The physical hardware behind one or more fingerprints.",[232,327,328,331],{},[235,329,330],{},"User",": your account-level identity, independent of hardware.",[208,333,334,335,338,339,342],{},"A single user may legitimately span multiple devices (laptop, phone, tablet). A single device may legitimately host multiple fingerprints (Chrome, Safari, work browser, personal browser). What's ",[240,336,337],{},"not"," legitimate is a single user with implausibly many devices. That's the sharing signal Rupt is built to catch, and the basis for the ",[212,340,341],{"href":146},"people"," estimate.",{"title":344,"searchDepth":345,"depth":345,"links":346},"",2,[347,348,349],{"id":223,"depth":345,"text":224},{"id":261,"depth":345,"text":262},{"id":305,"depth":345,"text":306},"A device is a stable identifier for a physical phone, tablet, or computer. Multiple fingerprints can map to one device (same Mac, two browsers), and Rupt tracks them as a single entity for sharing and ATO checks.","md",{},true,"---\ntitle: Devices\ndescription: A device is a stable identifier for a physical phone, tablet, or computer. Multiple fingerprints can map to one device (same Mac, two browsers), and Rupt tracks them as a single entity for sharing and ATO checks.\n---\n\n# Devices\n\nA device is a stable identifier for a physical phone, tablet, or computer in Rupt's data model. It sits one level above a [fingerprint](\u002Fdocs\u002Fv3\u002Fconcepts\u002Ffingerprints): multiple browsers on the same laptop produce different fingerprints but the same device. That's important for [account sharing](\u002Fdocs\u002Fv3\u002Fconcepts\u002Faccount-sharing): an account with twelve fingerprints across two devices reads very differently from an account with twelve fingerprints across twelve devices.\n\n## How devices are identified\n\nThe mechanism depends on how the SDK is shipped:\n\n- **Native iOS**: uses the Identifier for Vendor (IDFV). Stable across reinstalls of the _same_ vendor's apps on the device, resets if every app from the vendor is uninstalled. Apple's anti-fingerprinting policy forbids more durable cross-app identifiers.\n- **Native Android**: uses platform-provided device identifiers per Google's guidelines.\n- **Web**: derived from the [fingerprint](\u002Fdocs\u002Fv3\u002Fconcepts\u002Ffingerprints) plus persistent storage hints. Not as stable as a native device ID; treat web devices as best-effort.\n\n## What devices feed\n\nDevice counts are core to [account-sharing](\u002Fdocs\u002Fv3\u002Fconcepts\u002Faccount-sharing) detection:\n\n- `device_count`: devices currently attached to the user.\n- `computer_device_count`, `tablet_device_count`, `mobile_device_count`: broken out by type, since the thresholds for \"too many\" differ (one phone is fine, six laptops is suspicious).\n\nThese are exposed as [checks](\u002Fdocs\u002Fv3\u002Fconcepts\u002Fchecks) so [policies](\u002Fdocs\u002Fv3\u002Fconcepts\u002Fpolicies) can match on them directly.\n\n## Devices vs fingerprints vs users\n\nRupt deliberately tracks all three layers:\n\n- **[Fingerprint](\u002Fdocs\u002Fv3\u002Fconcepts\u002Ffingerprints)**: narrowest. A specific browser instance.\n- **Device**: broader. The physical hardware behind one or more fingerprints.\n- **User**: your account-level identity, independent of hardware.\n\nA single user may legitimately span multiple devices (laptop, phone, tablet). A single device may legitimately host multiple fingerprints (Chrome, Safari, work browser, personal browser). What's _not_ legitimate is a single user with implausibly many devices. That's the sharing signal Rupt is built to catch, and the basis for the [people](\u002Fdocs\u002Fv3\u002Fconcepts\u002Fpeople) estimate.\n",{"title":137,"description":350},"hsggQQJtmJ85GszauWYtBaCkLT7nyca3v8reFx5t48E",1780344893489]