[{"data":1,"prerenderedAt":394},["ShallowReactive",2],{"docsv3-nav":3,"\u002Fdocs\u002Fv3\u002Fguides\u002Fbot-detection":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":76,"body":200,"description":387,"extension":388,"meta":389,"navigation":390,"path":77,"rawbody":391,"seo":392,"stem":78,"__hash__":393},"docsv3\u002F1.docs\u002Fv3\u002F5.guides\u002F4.Bot detection.md",{"type":201,"value":202,"toc":380},"minimark",[203,207,216,221,230,234,244,350,360,364],[204,205,76],"h1",{"id":206},"bot-detection",[208,209,210,211,215],"p",{},"A ",[212,213,214],"a",{"href":134},"bot"," is automated, non-human traffic behind signup farms, click fraud, and ad-budget siphoning.",[217,218,220],"h2",{"id":219},"step-1-set-up-login-and-signup-protection","Step 1: Set up login and signup protection",[208,222,223,224,226,227,229],{},"Before anything else here, set up ",[212,225,27],{"href":28}," and ",[212,228,31],{"href":32},". They're the basis this builds on, and without them the policies below can be bypassed. With those in place, the rest of this guide covers the policies that keep automated traffic out.",[217,231,233],{"id":232},"step-2-add-the-policies","Step 2: Add the policies",[208,235,236,237,243],{},"A policy has a trigger (the event it runs on) and a verdict. Add these in your ",[212,238,242],{"href":239,"rel":240},"https:\u002F\u002Fapp.rupt.dev\u002Fpolicies",[241],"nofollow","policies dashboard",":",[245,246,247,266],"table",{},[248,249,250],"thead",{},[251,252,253,257,260,263],"tr",{},[254,255,256],"th",{},"Policy",[254,258,259],{},"Trigger",[254,261,262],{},"Conditions",[254,264,265],{},"Verdict",[267,268,269,300,325],"tbody",{},[251,270,271,275,288,297],{},[272,273,274],"td",{},"Block datacenter traffic",[272,276,277,281,282,281,285],{},[278,279,280],"code",{},"login",", ",[278,283,284],{},"signup",[278,286,287],{},"access",[272,289,290,293,294],{},[278,291,292],{},"ip_is_hosting",", or ",[278,295,296],{},"ip_is_proxy",[272,298,299],{},"Deny",[251,301,302,305,313,323],{},[272,303,304],{},"Block fake devices",[272,306,307,281,309,281,311],{},[278,308,280],{},[278,310,284],{},[278,312,287],{},[272,314,315,318,319,322],{},[278,316,317],{},"is_simulator"," or ",[278,320,321],{},"is_emulator"," (native apps)",[272,324,299],{},[251,326,327,330,338,347],{},[272,328,329],{},"Challenge high bot risk",[272,331,332,281,334,281,336],{},[278,333,280],{},[278,335,284],{},[278,337,287],{},[272,339,340,342,343],{},[278,341,214],{}," risk is high ",[344,345,346],"em",{},"(coming soon)",[272,348,349],{},"Challenge",[208,351,352,353,355,356,359],{},"The bot-risk challenge lands with bot risk summaries (coming soon): when a request's ",[278,354,214],{}," risk is high, the policy issues a 2FA challenge that a real person clears and a bot can't. Until then, read the bot score off the ",[212,357,358],{"href":94},"evaluation"," in your own logic; the datacenter and device policies above work today.",[217,361,363],{"id":362},"related","Related",[365,366,367,372,376],"ul",{},[368,369,370],"li",{},[212,371,133],{"href":134},[368,373,374],{},[212,375,48],{"href":49},[368,377,378],{},[212,379,177],{"href":178},{"title":381,"searchDepth":382,"depth":382,"links":383},"",2,[384,385,386],{"id":219,"depth":382,"text":220},{"id":232,"depth":382,"text":233},{"id":362,"depth":382,"text":363},"A bot is automated, non-human traffic behind signup farms, click fraud, and ad-budget siphoning.","md",{},true,"---\ntitle: Bot detection\n---\n\n# Bot detection\n\nA [bot](\u002Fdocs\u002Fv3\u002Fconcepts\u002Fbots) is automated, non-human traffic behind signup farms, click fraud, and ad-budget siphoning.\n\n## Step 1: Set up login and signup protection\n\nBefore anything else here, set up [Signup protection](\u002Fdocs\u002Fv3\u002Ffundamentals\u002Fsignup-protection) and [Login protection](\u002Fdocs\u002Fv3\u002Ffundamentals\u002Flogin-protection). They're the basis this builds on, and without them the policies below can be bypassed. With those in place, the rest of this guide covers the policies that keep automated traffic out.\n\n## Step 2: Add the policies\n\nA policy has a trigger (the event it runs on) and a verdict. Add these in your [policies dashboard](https:\u002F\u002Fapp.rupt.dev\u002Fpolicies):\n\n| Policy                   | Trigger                     | Conditions                                    | Verdict   |\n| ------------------------ | --------------------------- | --------------------------------------------- | --------- |\n| Block datacenter traffic | `login`, `signup`, `access` | `ip_is_hosting`, or `ip_is_proxy`             | Deny      |\n| Block fake devices       | `login`, `signup`, `access` | `is_simulator` or `is_emulator` (native apps) | Deny      |\n| Challenge high bot risk  | `login`, `signup`, `access` | `bot` risk is high _(coming soon)_            | Challenge |\n\nThe bot-risk challenge lands with bot risk summaries (coming soon): when a request's `bot` risk is high, the policy issues a 2FA challenge that a real person clears and a bot can't. Until then, read the bot score off the [evaluation](\u002Fdocs\u002Fv3\u002Fconcepts\u002Fevaluations) in your own logic; the datacenter and device policies above work today.\n\n## Related\n\n- [Bots](\u002Fdocs\u002Fv3\u002Fconcepts\u002Fbots)\n- [Web scraping prevention](\u002Fdocs\u002Fv3\u002Fguides\u002Fweb-scraping-prevention)\n- [Anonymizing network](\u002Fdocs\u002Fv3\u002Fconcepts\u002Fanonymizing-network)\n",{"title":76,"description":387},"3kq-XGjliEN1r6-TRe93B_RGDj357S8_hyzWliNNiVY",1780344893198]