<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: BotConductStandard </title>
    <description>The latest articles on DEV Community by BotConductStandard  (@botconductstandard).</description>
    <link>https://dev.to/botconductstandard</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3879750%2F8ae493fd-627f-4382-9be6-7ce6d3fbbab4.jpeg</url>
      <title>DEV Community: BotConductStandard </title>
      <link>https://dev.to/botconductstandard</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/botconductstandard"/>
    <language>en</language>
    <item>
      <title>45% of Hostile Bot Traffic Passes Your WAF. Here's Why. What behavioral detection reveals when you cross-reference hostile actors against AbuseIPDB</title>
      <dc:creator>BotConductStandard </dc:creator>
      <pubDate>Thu, 30 Apr 2026 01:14:03 +0000</pubDate>
      <link>https://dev.to/botconductstandard/45-of-hostile-bot-traffic-passes-your-waf-heres-why-what-behavioral-detection-reveals-when-you-12mh</link>
      <guid>https://dev.to/botconductstandard/45-of-hostile-bot-traffic-passes-your-waf-heres-why-what-behavioral-detection-reveals-when-you-12mh</guid>
      <description>&lt;p&gt;Most enterprise WAFs are configured to block IPs above a certain abuse confidence threshold. AbuseIPDB threshold 50 is a common SOC default. The assumption is that hostile traffic gets caught at the gate.&lt;/p&gt;

&lt;p&gt;We tested that assumption.&lt;/p&gt;

&lt;p&gt;Of 240 hostile actors detected by behavior on our infrastructure over 19 days, operating from 380 distinct IPs, 45% have AbuseIPDB scores below 50. They pass standard WAF configurations because their IPs aren't reported enough times to trigger blocking. They behave hostile but they don't yet have the reputation to match.&lt;/p&gt;

&lt;p&gt;Here's what we found, and what it means.&lt;/p&gt;




&lt;h2&gt;
  
  
  The data
&lt;/h2&gt;

&lt;p&gt;We cross-referenced a sample of 100 hostile actors detected by behavioral analysis against two public threat intelligence sources: GreyNoise Community API and AbuseIPDB.&lt;/p&gt;

&lt;p&gt;The methodology was simple. For each IP we asked: does any public threat feed know this is hostile?&lt;/p&gt;

&lt;p&gt;The results, ordered by threshold:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Threshold&lt;/th&gt;
&lt;th&gt;% of hostile actors that pass&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0 reports (completely unknown)&lt;/td&gt;
&lt;td&gt;18%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0-2 reports (noise level)&lt;/td&gt;
&lt;td&gt;25%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0-5 reports (under the radar)&lt;/td&gt;
&lt;td&gt;30%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Score below 25 (typical SOC threshold)&lt;/td&gt;
&lt;td&gt;32%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Score below 50 (typical WAF threshold)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;45%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The 45% figure is operational. It's not "completely invisible to threat intel." It's "low enough confidence that automated systems leave them alone."&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this happens
&lt;/h2&gt;

&lt;p&gt;Public threat intelligence works by aggregation. Someone has to report an IP. Multiple reports increase confidence. Eventually the IP crosses thresholds and gets blocked.&lt;/p&gt;

&lt;p&gt;That model breaks against actors who do three things:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One: rotate infrastructure aggressively.&lt;/strong&gt; A single hostile actor using residential proxies through providers like Chiron Software LLC operates from IPs that look like home internet connections. Those IPs cycle out before they accumulate reports.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two: stay below volume thresholds.&lt;/strong&gt; An actor making 5-15 requests per IP, then rotating, never triggers per-IP detection. The aggregate behavior is hostile. The per-IP behavior looks like noise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Three: target sites that don't report.&lt;/strong&gt; Most websites block hostile traffic silently. They don't submit IPs to public databases. The hostile activity happens but never enters the threat feed loop.&lt;/p&gt;

&lt;p&gt;The result is a class of actors that operate hostile, persist for weeks, and remain technically invisible to reputation-based defenses.&lt;/p&gt;




&lt;h2&gt;
  
  
  What 18% completely invisible looks like
&lt;/h2&gt;

&lt;p&gt;The cleanest data point is the 18% who have zero reports anywhere. We checked the profile of those 18 IPs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;12 of 18 (67%) belong to Chiron Software LLC, a US residential proxy provider&lt;/li&gt;
&lt;li&gt;14 of 18 (78%) are categorized as "Fixed Line ISP"&lt;/li&gt;
&lt;li&gt;13 of 18 (72%) geolocate to United States&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Translation: hostile actors are running through US residential proxy networks and getting traffic that looks like home internet users. There's nothing in the IP metadata that triggers suspicion. The only way to identify them is to look at what they do, not who they are.&lt;/p&gt;




&lt;h2&gt;
  
  
  What this means operationally
&lt;/h2&gt;

&lt;p&gt;If you depend on IP reputation to filter traffic, you're catching the actors who already burned their cover. The careful operators slip through.&lt;/p&gt;

&lt;p&gt;Three concrete implications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For SOC teams:&lt;/strong&gt; AbuseIPDB threshold 50 catches the loud actors but misses 45% of the careful ones. Lowering threshold catches more but generates noise. The structural problem is that reputation-based detection has a built-in delay. By the time an IP earns a reputation, the actor has rotated to a new one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For compliance and audit:&lt;/strong&gt; "We block known malicious IPs" is a defensible technical statement that doesn't reflect reality on the ground. The hostile traffic on your infrastructure isn't all coming from known-bad addresses. A meaningful portion is coming from addresses that no public source has flagged.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For procurement of security tools:&lt;/strong&gt; Vendors that price by IP reputation feeds are pricing the easier 55%. The harder 45% requires behavioral measurement that most current tooling doesn't do.&lt;/p&gt;




&lt;h2&gt;
  
  
  How we detected what threat feeds missed
&lt;/h2&gt;

&lt;p&gt;The actors that pass WAFs aren't invisible to behavioral observation. We detected them through behavioral trajectory analysis -- patterns in how they navigate, what they request first, how their sessions evolve over days, and inconsistencies between their declared identity and their technical fingerprint.&lt;/p&gt;

&lt;p&gt;None of these signals require knowing who the actor is. All of them produce evidence that holds up under audit.&lt;/p&gt;

&lt;p&gt;The structural difference between behavioral detection and reputation-based detection is timing. Reputation tells you what an IP did somewhere else, after someone reported it. Behavior tells you what an actor is doing on your infrastructure, right now, before anyone else sees it.&lt;/p&gt;




&lt;h2&gt;
  
  
  What we're publishing next
&lt;/h2&gt;

&lt;p&gt;The full Bot Conduct Report 2026 will cover all 421 actors observed across 19 days, with behavioral profiles, infrastructure mapping, and the methodology in detail.&lt;/p&gt;

&lt;p&gt;For now, the practical takeaway is narrow and verifiable: if your defense depends on IP reputation, 45% of hostile traffic is configured to walk past it.&lt;/p&gt;

&lt;p&gt;If you want to see what hostile traffic looks like on your specific infrastructure, our Site Risk Assessment produces an independent forensic report.&lt;/p&gt;

&lt;p&gt;Full write-up: &lt;a href="https://botconduct.org/blog/waf-bypass-45-percent/" rel="noopener noreferrer"&gt;https://botconduct.org/blog/waf-bypass-45-percent/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Methodology details available on request. Data from BotConduct Observatory, April 2026.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>agents</category>
      <category>security</category>
    </item>
    <item>
      <title>Alibaba Cloud and AWS host the anonymous bot harvesting our site. Yours could be next.</title>
      <dc:creator>BotConductStandard </dc:creator>
      <pubDate>Sat, 25 Apr 2026 01:52:11 +0000</pubDate>
      <link>https://dev.to/botconductstandard/alibaba-cloud-and-aws-host-the-anonymous-bot-harvesting-our-site-yours-could-be-next-5gbi</link>
      <guid>https://dev.to/botconductstandard/alibaba-cloud-and-aws-host-the-anonymous-bot-harvesting-our-site-yours-could-be-next-5gbi</guid>
      <description>&lt;p&gt;We run an independent observatory that measures how bots and AI agents behave on the open web. Last week we caught something that's worth writing about.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pattern
&lt;/h2&gt;

&lt;p&gt;It started with a TLS fingerprint that kept showing up across different IP addresses. Same handshake, same parameters, same JA4 hash: &lt;code&gt;t13d311100_e8f1e7e78f70_d41ae481755e&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That fingerprint is interesting on its own. It tells you the client uses TLS 1.3, with 31 cipher suites and 11 extensions. But the part that matters is the ALPN field. It's empty.&lt;/p&gt;

&lt;p&gt;Real browsers always advertise ALPN. Chrome sends &lt;code&gt;h2&lt;/code&gt;. Firefox sends &lt;code&gt;h2&lt;/code&gt;. Safari sends &lt;code&gt;h2&lt;/code&gt;. They negotiate HTTP/2 because every modern browser uses HTTP/2. A client that connects with TLS 1.3 in 2026 and announces no ALPN is not a browser. It's an HTTP library — Go's net/http, Python's requests with custom TLS, something in that family.&lt;/p&gt;

&lt;p&gt;So we already knew: not a browser. Whatever was visiting us was pretending to be one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it was pretending
&lt;/h2&gt;

&lt;p&gt;The user agents told the rest of the story. The same JA4 fingerprint cycled through 13 different browser identities: Chrome 135 on Windows, Chrome 135 with Edge, Chrome 134 on Mac, Firefox 137, Safari 18.3, Safari 18.2, Chrome with Adguard, Chrome 131, Chrome 130, Chrome 116, ChromeOS, and a few others.&lt;/p&gt;

&lt;p&gt;Thirteen browsers. One TLS handshake. The math doesn't work. Real users don't have thirteen browsers. Real browsers don't share TLS fingerprints. Someone built a list of common user agents and rotated through them on every request, while the underlying software stayed the same. That's deliberate. That's evasion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it was coming from
&lt;/h2&gt;

&lt;p&gt;We pulled the IPs and ran them through ARIN. The allocation 47.74.0.0–47.87.255.255 is assigned to Alibaba Cloud LLC (AL-3). All 107 connections from this fingerprint to our site originated from rented infrastructure inside that allocation.&lt;/p&gt;

&lt;p&gt;So we knew where the rental came from. We didn't know who rented it. Alibaba Cloud doesn't publish customer information. The trail stops at the cloud provider's perimeter.&lt;/p&gt;

&lt;h2&gt;
  
  
  The detail that made it worse
&lt;/h2&gt;

&lt;p&gt;While we were looking at the Alibaba traffic, the same JA4 fingerprint appeared once on a different IP: &lt;code&gt;3.91.x.x&lt;/code&gt;. That block belongs to Amazon Web Services, us-east-1.&lt;/p&gt;

&lt;p&gt;One hit. Same fingerprint. Different cloud.&lt;/p&gt;

&lt;p&gt;That changes the picture. It's not a bot operating from Alibaba Cloud. It's a bot whose operator runs the same software across multiple cloud providers. Multi-cloud isn't a coincidence. It's how you build infrastructure that's hard to take down and hard to attribute.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it was doing
&lt;/h2&gt;

&lt;p&gt;The behavior on our site was consistent with content harvesting. The bot consistently accessed paths that no organic visitor would reach. It never requested robots.txt. Not once across 107 connections. It never identified itself as a bot in any user agent. It hardcoded a referer header pointing to our home page on every request, regardless of where it actually came from.&lt;/p&gt;

&lt;p&gt;There's also a small technical tell. One of the first paths it visited was a malformed URL: it had tried to follow a link to a Twitter profile from our home page, and it didn't resolve the URL escapes correctly. Browsers don't do that. HTML parsers built into scraping libraries do.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we can prove and what we can't
&lt;/h2&gt;

&lt;p&gt;We can prove the TLS fingerprint. We can prove the IP ranges. We can prove the user agent rotation. We can prove the never-read-robots-txt. We can prove the multi-cloud appearance of the same software. All of this is independently verifiable: ARIN for IP attribution, the JA4 spec for fingerprint interpretation, our cryptographically signed observation chain for the request data.&lt;/p&gt;

&lt;p&gt;We can't prove who runs it. We can't prove what they do with the harvested content. We can't prove which other sites they're hitting. We can guess based on behavior — content harvesting at this scale, with this level of evasion, is consistent with AI training data collection or competitive scraping operations. But guessing isn't proof.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that should bother you
&lt;/h2&gt;

&lt;p&gt;Both Alibaba Cloud and AWS prohibit exactly this kind of activity in their Acceptable Use Policies. AWS explicitly forbids "scraping" and "unauthorized data collection." Alibaba Cloud's terms forbid using their infrastructure for "activities that violate the legitimate rights and interests of others." Both providers wrote those rules. Neither enforces them in any way that would prevent what we're describing.&lt;/p&gt;

&lt;p&gt;The infrastructure is rented. The policies are written. The enforcement is absent.&lt;/p&gt;

&lt;p&gt;If you run a website, this matters to you. The bot we measured is one operator using one software stack. If our small observatory caught it in a few days of operation, the actual scale of this activity across the web is much larger. The same anonymous infrastructure is available to anyone with a credit card. The same lack of enforcement applies to everyone using it.&lt;/p&gt;

&lt;p&gt;You probably won't see this kind of traffic in your standard analytics. Your CDN might rate-limit it, but it won't tell you what it was. Your WAF might block some of it, but it won't attribute it. The systems we built to defend the web were built when bots had names and IP reputation meant something. Anonymous operators rotating across cloud providers don't fit that model.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we're doing about it
&lt;/h2&gt;

&lt;p&gt;We're publishing what we measure. The data behind this post is part of a larger registry of observed bot behavior, classified by what bots actually do on the open web rather than what they claim. We can't identify the operators. We can identify the patterns. We think that's worth making public.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Think this bot might be hitting your site?&lt;/strong&gt; We'll run a free vulnerability report for you. Send us your domain to &lt;strong&gt;&lt;a href="mailto:hello@botconduct.org"&gt;hello@botconduct.org&lt;/a&gt;&lt;/strong&gt; with subject "Vulnerability Report" and we'll tell you what we see.&lt;/p&gt;

&lt;p&gt;The full methodology, registry, and cryptographically signed evidence chain: &lt;a href="https://botconduct.org" rel="noopener noreferrer"&gt;botconduct.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We're going to keep publishing cases like this. There will be more.&lt;/p&gt;

&lt;p&gt;— BotConduct&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>BotConduct Training Center: free adversarial evaluation for your AI agent</title>
      <dc:creator>BotConductStandard </dc:creator>
      <pubDate>Tue, 21 Apr 2026 15:18:49 +0000</pubDate>
      <link>https://dev.to/botconductstandard/botconduct-training-center-free-adversarial-evaluation-for-your-ai-agent-2f78</link>
      <guid>https://dev.to/botconductstandard/botconduct-training-center-free-adversarial-evaluation-for-your-ai-agent-2f78</guid>
      <description>&lt;p&gt;We just launched the free tier of BotConduct Training Center — an adversarial evaluation platform for AI agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;You built an AI agent. It works great in testing. But what happens when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A user tries to extract its system prompt?&lt;/li&gt;
&lt;li&gt;A caller impersonates authority to bypass restrictions?&lt;/li&gt;
&lt;li&gt;Contradictory information gets planted across a conversation?&lt;/li&gt;
&lt;li&gt;Adversarial patterns emerge across multiple interactions?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don't know until production. Now you can find out before.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Training Center does
&lt;/h2&gt;

&lt;p&gt;You point your agent at our API. We play an adversarial customer who progressively escalates pressure over multiple turns. Your agent responds naturally. We evaluate every response and tell you exactly where it breaks.&lt;/p&gt;

&lt;p&gt;Two evaluation paths:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chat/API&lt;/strong&gt; — for chatbots, voice agents, SDR agents, customer service bots&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web crawl&lt;/strong&gt; — for crawlers, scrapers, search agents (evolving signals, contradicting directives mid-session)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Free tier
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;3 evaluations&lt;/li&gt;
&lt;li&gt;2 adversarial scenarios&lt;/li&gt;
&lt;li&gt;Detailed violation report&lt;/li&gt;
&lt;li&gt;Ed25519 signed certificate&lt;/li&gt;
&lt;li&gt;Badge for your README&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No signup. No API key.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick start
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://botconduct.org/api/v3/training-center/start &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"bot_name":"MyAgent","operator":"me","scenarios":["C1","C3"]}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Full examples in Python, Node.js, and cURL:&lt;br&gt;
&lt;a href="https://github.com/alemizrahi1/agent-stress-test" rel="noopener noreferrer"&gt;https://github.com/alemizrahi1/agent-stress-test&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Interactive playground:&lt;br&gt;
&lt;a href="https://botconduct.org/playground/" rel="noopener noreferrer"&gt;https://botconduct.org/playground/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Professional tiers
&lt;/h2&gt;

&lt;p&gt;Need more? Level 1 Basic ($500), Professional ($3,500), and Full Certification ($12,000) add more adversarial scenarios, longer sessions, forensic reports, and certificates citable in enterprise procurement and regulatory filings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://botconduct.org/training-center/" rel="noopener noreferrer"&gt;https://botconduct.org/training-center/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What are you building?
&lt;/h2&gt;

&lt;p&gt;Curious what kind of agents people are working on and how they handle adversarial inputs. If you run the free test, share your results — especially the failures. That's where it gets interesting.&lt;/p&gt;

&lt;h1&gt;
  
  
  ai #agents #security #testing
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>security</category>
      <category>agents</category>
    </item>
    <item>
      <title>Static compliance checklists can't measure AI agent behavior. Here's what does.</title>
      <dc:creator>BotConductStandard </dc:creator>
      <pubDate>Mon, 20 Apr 2026 16:33:53 +0000</pubDate>
      <link>https://dev.to/botconductstandard/static-compliance-checklists-cant-measure-ai-agent-behavior-heres-what-does-1g4o</link>
      <guid>https://dev.to/botconductstandard/static-compliance-checklists-cant-measure-ai-agent-behavior-heres-what-does-1g4o</guid>
      <description>&lt;p&gt;Agent-evaluation products in 2026 fall into two generations. First-generation: static pass/fail checklists. Second-generation: evaluation under changing conditions, where behavior trajectory is measured rather than endpoint state. The first generation can't answer the questions CTOs and CISOs actually ask. The second generation can — and it works the same way across every platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with ten checks
&lt;/h2&gt;

&lt;p&gt;Most agent-readiness products shipping today work the same way. Define N rules. Test whether the bot passes each. Aggregate into a score. Ship a certificate.&lt;/p&gt;

&lt;p&gt;The appeal is obvious. It's auditable. It maps to how SOC 2 reports look. A CISO understands it without training.&lt;/p&gt;

&lt;p&gt;The problem is also obvious once you think about production incidents. The evaluation measures &lt;strong&gt;observable state at a single point in time&lt;/strong&gt;. It tells you nothing about how the agent behaves when conditions around it change — when signals evolve, when server state shifts, when adversarial inputs arrive. These are the situations that cause real production incidents, and they are precisely what static evaluation cannot measure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The community already said this
&lt;/h2&gt;

&lt;p&gt;On recent threads about agent-readiness tooling, the paraphrased reaction from sophisticated technical commenters has been: &lt;em&gt;"10 static checks is like SEO in 10 static checks. It misses the point."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That critique is correct. The market is already splitting into two camps, and first-generation tools are being read as legacy.&lt;/p&gt;

&lt;h2&gt;
  
  
  What second-generation looks like
&lt;/h2&gt;

&lt;p&gt;Instead of testing compliance with fixed rules, second-generation evaluation measures &lt;strong&gt;behavior trajectory&lt;/strong&gt; under evolving conditions. The agent is placed in environments where directives can change during the session, where signals can contradict, where adversarial inputs test discipline.&lt;/p&gt;

&lt;p&gt;What gets measured is not a state at a single point in time, but the decision trajectory across the scenario — what the agent chose when forced to interpret ambiguous inputs, how it recovered from errors, whether it held scope under pressure.&lt;/p&gt;

&lt;p&gt;The specific scenarios, thresholds, and evaluation criteria are not disclosed publicly. This is deliberate: revealing the mechanism would let operators tune agents to pass without demonstrating genuine compliance. The methodology is a closed oracle — reproducible internally, verifiable externally through cryptographically signed observation records, but not publicly described.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the report looks like
&lt;/h2&gt;

&lt;p&gt;First-generation reports produce checkmarks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[✓] Identifies as bot
[✓] Respects standard directives
[✗] Publishes declaration URL
Score: 87/100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Second-generation reports produce trajectories:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;T+0s   | Session initialized, agent fetched initial directives
...    | Scenario-specific events recorded with timestamps
T+N    | Agent made decision in response to changing conditions
...    | Multiple decision points across the session

Verdict: [PASS|FAIL] per scenario
Reason: Specific agent behaviors in context,
        with cryptographically signed observation IDs
        for each event.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first shows the state. The second shows the decision. In a production incident, only the decision matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cross-platform by design
&lt;/h2&gt;

&lt;p&gt;The certification is infrastructure-neutral. An agent certified by the methodology is recognized the same way by a site behind Cloudflare, one running DataDome, one with in-house infrastructure, and one with nothing at all. It doesn't compete with bot-management vendors — it's the independent layer they can cite. Like a passport for AI agents: issued once, honored everywhere.&lt;/p&gt;

&lt;p&gt;The same principle applies to the regulatory plane. One certification bundles compliance evidence against multiple frameworks simultaneous ly — EU AI Act, GDPR, California SB 1001, RFC 9309, W3C TDMRep, EU DSM Directive. Instead of demonstrating compliance six separate times against six separate auditors, the operator is evaluated once and the result can be cited in any jurisdiction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this distinction is urgent now
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Regulatory pressure is specific about conduct.&lt;/strong&gt; EU AI Act Article 50 requires disclosure &lt;em&gt;during interaction&lt;/em&gt;, not at deployment. GDPR rights apply per-request. California SB 1001 demands honest identification in the context of a conversation. These are dynamic obligations, not static attestations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enterprise buyers ask operational questions.&lt;/strong&gt; A CTO doesn't ask "does it pass a 10-check list." They ask how the agent behaves when conditions in the real deployment environment change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Incidents are documented.&lt;/strong&gt; Recent disclosures in the infrastructure-vendor space have confirmed AI-accelerated attacks exploiting agent platforms. The evaluation framework appropriate to this threat model is not a checklist.&lt;/p&gt;

&lt;h2&gt;
  
  
  What BotConduct is building
&lt;/h2&gt;

&lt;p&gt;BotConduct Training Center is designed second-generation from day one. Level 1 is static hygiene (basic sanity is the floor). Level 2 measures behavior under evolving conditions. Level 3 measures conduct integrity under adversarial probing. Each evaluation produces a cryptographically signed trajectory, not a checklist.&lt;/p&gt;

&lt;p&gt;Each observation is signed with Ed25519 and recorded in an append-only chain. Public key at botconduct.org/.well-known/bcs-public-key.pem. Anyone can verify any observation via botconduct.org/api/verify-observation/{id} without trusting us.&lt;/p&gt;

&lt;p&gt;If Moody's rates bonds and FICO rates people, BotConduct rates how an AI agent behaves when nobody is watching — and the certificate works across every platform.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Landing + pricing: &lt;a href="https://botconduct.org/training-center" rel="noopener noreferrer"&gt;botconduct.org/training-center&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Regulatory foundation: RFC 9309, EU AI Act Art. 50, EU DSM Directive Art. 4, California SB 1001, W3C TDMRep, GDPR.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Discussion welcomed.&lt;/strong&gt; What scenarios would you want to see in a second-generation evaluation of your own agents? What does your team currently use to measure agent behavior under change?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>security</category>
      <category>webdev</category>
    </item>
    <item>
      <title>194 IP Addresses. One Fake iPhone. Six Days Undetected. published: true</title>
      <dc:creator>BotConductStandard </dc:creator>
      <pubDate>Sat, 18 Apr 2026 14:28:43 +0000</pubDate>
      <link>https://dev.to/botconductstandard/194-ip-addresses-one-fake-iphone-six-days-undetectedpublished-true-1ofe</link>
      <guid>https://dev.to/botconductstandard/194-ip-addresses-one-fake-iphone-six-days-undetectedpublished-true-1ofe</guid>
      <description>&lt;p&gt;A scraper ran on our network for 6 days using 194 different Tencent Cloud IPs. Every request carried a fake iPhone User-Agent (iOS 13.2.3 from 2019). It never read robots.txt. It never identified itself. It averaged 1.8 requests per IP -- staying below every rate limiter, every WAF rule, every IP-based detection system.&lt;/p&gt;

&lt;p&gt;In your analytics, this looks like 194 different people casually browsing on iPhones. No alert. No anomaly. Nothing to investigate.&lt;/p&gt;

&lt;p&gt;The numbers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;194 unique IPs (all ASN 132203, Tencent Cloud)&lt;/li&gt;
&lt;li&gt;362 requests over 6 days&lt;/li&gt;
&lt;li&gt;Fake iPhone UA (iOS 13.2.3 -- released November 2019)&lt;/li&gt;
&lt;li&gt;1.8 hits per IP average (evades all IP-based detection)&lt;/li&gt;
&lt;li&gt;Never read robots.txt&lt;/li&gt;
&lt;li&gt;Hit paths across entire site including /es/, /de/, /fr/, /no/, /zh/&lt;/li&gt;
&lt;li&gt;All datacenter IPs -- no real iPhone connects from a datacenter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What this means:&lt;br&gt;
If you run e-commerce, it has your prices. If you run media, it has your content. If you run SaaS, it mapped your app. And you never saw it because every request looked like a real user.&lt;/p&gt;

&lt;p&gt;We caught it by measuring behavioral conduct -- not counting IPs.&lt;/p&gt;

&lt;p&gt;Full forensic breakdown: &lt;a href="https://botconduct.org/report/april-2026/part-2/" rel="noopener noreferrer"&gt;https://botconduct.org/report/april-2026/part-2/&lt;/a&gt;&lt;br&gt;
Part 2 of the State of Bot Conduct series. Part 1: &lt;a href="https://botconduct.org/report/april-2026/part-1/" rel="noopener noreferrer"&gt;https://botconduct.org/report/april-2026/part-1/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;BotConduct.org -- Behavioral scoring for bots and AI agents.&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>agents</category>
      <category>webdev</category>
    </item>
    <item>
      <title>GPTBot follows content invisible to humans. TwitterBot and ClaudeBot don t.</title>
      <dc:creator>BotConductStandard </dc:creator>
      <pubDate>Fri, 17 Apr 2026 19:27:17 +0000</pubDate>
      <link>https://dev.to/botconductstandard/we-scored-172-bots-on-behavioral-conduct-openai-came-in-last-4bpd</link>
      <guid>https://dev.to/botconductstandard/we-scored-172-bots-on-behavioral-conduct-openai-came-in-last-4bpd</guid>
      <description>&lt;p&gt;We run a behavioral observation network that scores how bots and AI agents conduct themselves when they visit websites. We scored 172+ operators. The results were eye-opening.&lt;/p&gt;

&lt;h2&gt;
  
  
  GPTBot: 8 content requests in 14 seconds
&lt;/h2&gt;

&lt;p&gt;On April 17, 2026, OpenAI s GPTBot visited our network from IP 74.7.241.33 -- verified against OpenAI s own published ranges at openai.com/gptbot.json.&lt;/p&gt;

&lt;p&gt;In a single session of 51 seconds, it made 39 requests. &lt;strong&gt;8 of those went to content not visible to human visitors.&lt;/strong&gt; All 8 in a 14-second burst.&lt;/p&gt;

&lt;p&gt;GPTBot does not render CSS. It parses raw HTML and follows every anchor tag it finds -- visible or not. It cannot tell the difference between content meant for users and content that is hidden from the rendered page.&lt;/p&gt;

&lt;p&gt;A 00B company s flagship crawler, navigating the web blind.&lt;/p&gt;

&lt;h2&gt;
  
  
  TwitterBot and ClaudeBot: zero
&lt;/h2&gt;

&lt;p&gt;X Corp s TwitterBot and Anthropic s ClaudeBot visited the same pages. Same HTML. Same content -- visible and hidden.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Neither followed any hidden content.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Three crawlers. Three of the biggest tech companies in the world. Same test. Two understood what humans can see. One didn t.&lt;/p&gt;

&lt;h2&gt;
  
  
  The full leaderboard
&lt;/h2&gt;

&lt;p&gt;This is not a cherry-picked comparison. We scored 172+ bot operators on behavioral conduct. Here is how the named operators rank:&lt;/p&gt;

&lt;p&gt;The pattern: the biggest name does not mean the best behavior. Some of the most well-funded AI companies run crawlers less sophisticated than open-source projects with zero budget.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happens when a crawler can t see
&lt;/h2&gt;

&lt;p&gt;Hidden content exists everywhere on the web: honeypots, bot detection systems, anti-scraping layers, admin panels, internal tooling. A crawler that follows everything blindly will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trigger every honeypot it encounters&lt;/li&gt;
&lt;li&gt;Get flagged by every bot detection system&lt;/li&gt;
&lt;li&gt;Scrape content it was never meant to access&lt;/li&gt;
&lt;li&gt;Get blocked, rate-limited, and blacklisted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not about ethics. This is about engineering. Rendering CSS is a solved problem. Google s crawler does it. Anthropic s does it. X s does it. OpenAI s does not.&lt;/p&gt;

&lt;h2&gt;
  
  
  We contacted OpenAI
&lt;/h2&gt;

&lt;p&gt;We emailed &lt;a href="mailto:opt-out@openai.com"&gt;opt-out@openai.com&lt;/a&gt; on April 17, 2026 with 48 hours notice before publication. No response as of this writing. If they respond, we will update this post.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is Part 1 of 5
&lt;/h2&gt;

&lt;p&gt;We are publishing one finding per day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Part 1 (today):&lt;/strong&gt; GPTBot and hidden content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Part 2:&lt;/strong&gt; 194 rotating IPs with a fake iPhone User-Agent. Six days. One cloud provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Part 3:&lt;/strong&gt; The crawler that ignored its own standard&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Part 4:&lt;/strong&gt; What bot traffic actually costs you&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Part 5:&lt;/strong&gt; A free tool to see what is hitting YOUR site right now&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Full report with research disclaimer: &lt;a href="https://botconduct.org/report/april-2026/part-1" rel="noopener noreferrer"&gt;botconduct.org/report/april-2026/part-1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want to see what bots do on your site?&lt;/strong&gt; Free sensor, 30 seconds, one line of code: &lt;a href="https://botconduct.org/sensor.html" rel="noopener noreferrer"&gt;botconduct.org/sensor.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I watched 145 bots visit my site for two weeks. Here is what I learned.</title>
      <dc:creator>BotConductStandard </dc:creator>
      <pubDate>Thu, 16 Apr 2026 04:13:40 +0000</pubDate>
      <link>https://dev.to/botconductstandard/i-watched-145-bots-visit-my-site-for-two-weeks-here-is-what-i-learned-1e3</link>
      <guid>https://dev.to/botconductstandard/i-watched-145-bots-visit-my-site-for-two-weeks-here-is-what-i-learned-1e3</guid>
      <description>&lt;p&gt;Two weeks ago I put a fresh site online and started logging every request. I wanted to answer a simple question: how much of my traffic is actually human?&lt;/p&gt;

&lt;p&gt;Turns out, barely any.&lt;/p&gt;

&lt;h2&gt;
  
  
  The raw numbers
&lt;/h2&gt;

&lt;p&gt;Across those two weeks I observed &lt;strong&gt;145 distinct bots&lt;/strong&gt; hitting the site. Some declared themselves honestly. Some pretended to be iPhones from 2019. Some came in through Cloudflare. Some came in through rotating AWS IPs and never stopped.&lt;/p&gt;

&lt;p&gt;I was interested in more than just counting them. I wanted to know &lt;strong&gt;how each one behaved&lt;/strong&gt; — not the identity, the conduct. Did it read &lt;code&gt;robots.txt&lt;/code&gt;? Did it respect rate limits? Did it avoid obviously private paths? Did it keep a stable user-agent across requests?&lt;/p&gt;

&lt;p&gt;I ended up with a scoring system. Each bot got a number between 0 and 100 based on observable behavior.&lt;/p&gt;

&lt;p&gt;The distribution was surprising.&lt;/p&gt;

&lt;h2&gt;
  
  
  The well-behaved majority
&lt;/h2&gt;

&lt;p&gt;The bots at the top of the ranking are exactly the ones you would expect. Major search engines. AI crawlers from the big labs. A few SEO tools. Social preview bots.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fbotconduct.org%2Fassets%2Fleaderboard.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fbotconduct.org%2Fassets%2Fleaderboard.png" alt="Top rated bots in the registry" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GPTBot (OpenAI), ClaudeBot (Anthropic), Bingbot (Microsoft), Bytespider (ByteDance), Baiduspider, YandexBot, Meta's scraper, redditbot — all landing at 100 out of 100.&lt;/p&gt;

&lt;p&gt;It makes sense once you think about it. These companies operate massive crawling infrastructure. They know every site they hit is watching. They have compliance teams. Their crawlers are boring in the best way — they announce themselves, stay within limits, and leave.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hostile minority
&lt;/h2&gt;

&lt;p&gt;The bottom of the ranking was where it got interesting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fbotconduct.org%2Fassets%2Fhostile.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fbotconduct.org%2Fassets%2Fhostile.png" alt="Hostile bots in the registry" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;About &lt;strong&gt;27% of bots scored below 50&lt;/strong&gt;. A few of them were recognizable — L9Explore, the crawler operated by LeakIX, probing sensitive paths aggressively. Keydrop Scanner doing credential probing. A stream of anonymous WordPress scanners hammering &lt;code&gt;/wp-admin&lt;/code&gt; on every domain they find.&lt;/p&gt;

&lt;p&gt;The worst offender was a single IP on AWS that sent &lt;strong&gt;2,562 requests in one day&lt;/strong&gt;. No user-agent. No interest in &lt;code&gt;robots.txt&lt;/code&gt;. Just walking through every endpoint it could find.&lt;/p&gt;

&lt;p&gt;Another favorite: a bot presenting itself as &lt;code&gt;iPhone; iPhone OS 13_2_3&lt;/code&gt; — an iOS version from late 2019. Nobody real is running that in 2026. The user-agent is a lie and the behavior matches. Distributed across dozens of residential IPs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The middle is the interesting part
&lt;/h2&gt;

&lt;p&gt;The polar ends of the distribution are easy. Known good bots are good. Obvious scanners are obviously malicious.&lt;/p&gt;

&lt;p&gt;The middle third is where real decisions live. Crawlers from cloud providers like Tencent sat around 36. Not malicious per se, but also not identifying themselves well and using rotating IPs. If I were running a site that mattered, would I let those through? Block? Rate-limit?&lt;/p&gt;

&lt;p&gt;This is the category where &lt;code&gt;block everything automated&lt;/code&gt; destroys legitimate use cases (partners, vendors, research tools) and &lt;code&gt;allow everything&lt;/code&gt; destroys your servers. It's where the real work is.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;I stopped logging and started building. The passive observations became an API — you send it a suspicious request, it sends you back a score and a recommended action.&lt;/p&gt;

&lt;p&gt;The action is one of four: &lt;code&gt;allow&lt;/code&gt;, &lt;code&gt;throttle&lt;/code&gt;, &lt;code&gt;challenge&lt;/code&gt;, &lt;code&gt;block&lt;/code&gt;. Anything my middleware can handle in three lines.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;verdict&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;bcs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;user_agent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;User-Agent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;verdict&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;action&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;block&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;403&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The rubric that produces the score is proprietary, but the verdicts are public. Every bot I scored shows up in a public registry with its current rating. Operators can claim their entries and upgrade to a cryptographically signed identity if they want higher trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it changed for me
&lt;/h2&gt;

&lt;p&gt;Before this experiment, I treated automated traffic as a nuisance. Something to filter, block, ignore.&lt;/p&gt;

&lt;p&gt;After two weeks of looking closely, I think about it differently. The web is becoming a conversation between automated agents — and most of them are trying to do their jobs well. The bad ones are loud, and they get all the attention, but they are the minority.&lt;/p&gt;

&lt;p&gt;Giving the well-behaved agents a way to prove it — and the sites a way to verify it — seems like a better answer than the status quo of blocking everything automated.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you want to try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;If you run a bot or agent&lt;/strong&gt;: there is a public certification flow. It takes 30 seconds for basic certification, a few minutes for something more serious.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If you run a site&lt;/strong&gt;: the API has a free tier (5,000 scores per month) if you want to experiment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything is at &lt;a href="https://botconduct.org" rel="noopener noreferrer"&gt;botconduct.org&lt;/a&gt;. The first production site running this end-to-end is &lt;a href="https://importsignals.com" rel="noopener noreferrer"&gt;importsignals.com&lt;/a&gt; — their &lt;a href="https://importsignals.com/security" rel="noopener noreferrer"&gt;bot policy page&lt;/a&gt; is a reasonable reference if you want to see what it looks like in the wild.&lt;/p&gt;

&lt;p&gt;Would love to hear from other people who have measured their bot traffic seriously. I suspect the 27% hostile number is conservative.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Follow-up thread and registry updates at &lt;a href="https://twitter.com/botconduct" rel="noopener noreferrer"&gt;@botconduct&lt;/a&gt;.&lt;/em&gt;&lt;br&gt;
Rafa Mizrahi&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>security</category>
      <category>datascience</category>
    </item>
    <item>
      <title>I watched 145 bots visit my site for two weeks. Here is what I learned.</title>
      <dc:creator>BotConductStandard </dc:creator>
      <pubDate>Thu, 16 Apr 2026 04:13:40 +0000</pubDate>
      <link>https://dev.to/botconductstandard/i-watched-145-bots-visit-my-site-for-two-weeks-here-is-what-i-learned-7ao</link>
      <guid>https://dev.to/botconductstandard/i-watched-145-bots-visit-my-site-for-two-weeks-here-is-what-i-learned-7ao</guid>
      <description>&lt;p&gt;Two weeks ago I put a fresh site online and started logging every request. I wanted to answer a simple question: how much of my traffic is actually human?&lt;/p&gt;

&lt;p&gt;Turns out, barely any.&lt;/p&gt;

&lt;h2&gt;
  
  
  The raw numbers
&lt;/h2&gt;

&lt;p&gt;Across those two weeks I observed &lt;strong&gt;145 distinct bots&lt;/strong&gt; hitting the site. Some declared themselves honestly. Some pretended to be iPhones from 2019. Some came in through Cloudflare. Some came in through rotating AWS IPs and never stopped.&lt;/p&gt;

&lt;p&gt;I was interested in more than just counting them. I wanted to know &lt;strong&gt;how each one behaved&lt;/strong&gt; — not the identity, the conduct. Did it read &lt;code&gt;robots.txt&lt;/code&gt;? Did it respect rate limits? Did it avoid obviously private paths? Did it keep a stable user-agent across requests?&lt;/p&gt;

&lt;p&gt;I ended up with a scoring system. Each bot got a number between 0 and 100 based on observable behavior.&lt;/p&gt;

&lt;p&gt;The distribution was surprising.&lt;/p&gt;

&lt;h2&gt;
  
  
  The well-behaved majority
&lt;/h2&gt;

&lt;p&gt;The bots at the top of the ranking are exactly the ones you would expect. Major search engines. AI crawlers from the big labs. A few SEO tools. Social preview bots.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxodo3ffxr749eiwykpwa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxodo3ffxr749eiwykpwa.png" alt="Top rated bots in the registry" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GPTBot (OpenAI), ClaudeBot (Anthropic), Bingbot (Microsoft), Bytespider (ByteDance), Baiduspider, YandexBot, Meta's scraper, redditbot — all landing at 100 out of 100.&lt;/p&gt;

&lt;p&gt;It makes sense once you think about it. These companies operate massive crawling infrastructure. They know every site they hit is watching. They have compliance teams. Their crawlers are boring in the best way — they announce themselves, stay within limits, and leave.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hostile minority
&lt;/h2&gt;

&lt;p&gt;The bottom of the ranking was where it got interesting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18fkmmwio8acrgm6a711.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18fkmmwio8acrgm6a711.png" alt="Hostile bots in the registry" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;About &lt;strong&gt;27% of bots scored below 50&lt;/strong&gt;. A few of them were recognizable — L9Explore, the crawler operated by LeakIX, probing sensitive paths aggressively. Keydrop Scanner doing credential probing. A stream of anonymous WordPress scanners hammering &lt;code&gt;/wp-admin&lt;/code&gt; on every domain they find.&lt;/p&gt;

&lt;p&gt;The worst offender was a single IP on AWS that sent &lt;strong&gt;2,562 requests in one day&lt;/strong&gt;. No user-agent. No interest in &lt;code&gt;robots.txt&lt;/code&gt;. Just walking through every endpoint it could find.&lt;/p&gt;

&lt;p&gt;Another favorite: a bot presenting itself as &lt;code&gt;iPhone; iPhone OS 13_2_3&lt;/code&gt; — an iOS version from late 2019. Nobody real is running that in 2026. The user-agent is a lie and the behavior matches. Distributed across dozens of residential IPs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The middle is the interesting part
&lt;/h2&gt;

&lt;p&gt;The polar ends of the distribution are easy. Known good bots are good. Obvious scanners are obviously malicious.&lt;/p&gt;

&lt;p&gt;The middle third is where real decisions live. Crawlers from cloud providers like Tencent sat around 36. Not malicious per se, but also not identifying themselves well and using rotating IPs. If I were running a site that mattered, would I let those through? Block? Rate-limit?&lt;/p&gt;

&lt;p&gt;This is the category where &lt;code&gt;block everything automated&lt;/code&gt; destroys legitimate use cases (partners, vendors, research tools) and &lt;code&gt;allow everything&lt;/code&gt; destroys your servers. It's where the real work is.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;I stopped logging and started building. The passive observations became an API — you send it a suspicious request, it sends you back a score and a recommended action.&lt;/p&gt;

&lt;p&gt;The action is one of four: &lt;code&gt;allow&lt;/code&gt;, &lt;code&gt;throttle&lt;/code&gt;, &lt;code&gt;challenge&lt;/code&gt;, &lt;code&gt;block&lt;/code&gt;. Anything my middleware can handle in three lines.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;verdict&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;bcs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;user_agent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;User-Agent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;verdict&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;action&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;block&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;403&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The rubric that produces the score is proprietary, but the verdicts are public. Every bot I scored shows up in a public registry with its current rating. Operators can claim their entries and upgrade to a cryptographically signed identity if they want higher trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it changed for me
&lt;/h2&gt;

&lt;p&gt;Before this experiment, I treated automated traffic as a nuisance. Something to filter, block, ignore.&lt;/p&gt;

&lt;p&gt;After two weeks of looking closely, I think about it differently. The web is becoming a conversation between automated agents — and most of them are trying to do their jobs well. The bad ones are loud, and they get all the attention, but they are the minority.&lt;/p&gt;

&lt;p&gt;Giving the well-behaved agents a way to prove it — and the sites a way to verify it — seems like a better answer than the status quo of blocking everything automated.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you want to try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;If you run a bot or agent&lt;/strong&gt;: there is a public certification flow. It takes 30 seconds for basic certification, a few minutes for something more serious.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If you run a site&lt;/strong&gt;: the API has a free tier (5,000 scores per month) if you want to experiment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything is at &lt;a href="https://botconduct.org" rel="noopener noreferrer"&gt;botconduct.org&lt;/a&gt;. The first production site running this end-to-end is &lt;a href="https://importsignals.com" rel="noopener noreferrer"&gt;importsignals.com&lt;/a&gt; — their &lt;a href="https://importsignals.com/security" rel="noopener noreferrer"&gt;bot policy page&lt;/a&gt; is a reasonable reference if you want to see what it looks like in the wild.&lt;/p&gt;

&lt;p&gt;Would love to hear from other people who have measured their bot traffic seriously. I suspect the 27% hostile number is conservative.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Follow-up thread and registry updates at &lt;a href="https://twitter.com/botconduct" rel="noopener noreferrer"&gt;@botconduct&lt;/a&gt;.&lt;/em&gt;&lt;br&gt;
Rafa Mizrahi&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>security</category>
      <category>datascience</category>
    </item>
  </channel>
</rss>
