<?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: Srichinmai Sripathi</title>
    <description>The latest articles on DEV Community by Srichinmai Sripathi (@chinmai_sri).</description>
    <link>https://dev.to/chinmai_sri</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%2F3927912%2Ffedb15b2-df07-4267-8e3f-022a87e8a0ce.png</url>
      <title>DEV Community: Srichinmai Sripathi</title>
      <link>https://dev.to/chinmai_sri</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chinmai_sri"/>
    <language>en</language>
    <item>
      <title>I Built an AI That Has to Lie to the Internet to Do Its Job</title>
      <dc:creator>Srichinmai Sripathi</dc:creator>
      <pubDate>Wed, 13 May 2026 19:51:26 +0000</pubDate>
      <link>https://dev.to/chinmai_sri/i-built-an-ai-that-has-to-lie-to-the-internet-to-do-its-job-7pj</link>
      <guid>https://dev.to/chinmai_sri/i-built-an-ai-that-has-to-lie-to-the-internet-to-do-its-job-7pj</guid>
      <description>&lt;p&gt;At PCI Oasis Inc ,  I was handed a task that sounded simple on paper:&lt;/p&gt;

&lt;p&gt;"Help build a crawler that navigates e-commerce websites from the homepage to the checkout page."&lt;/p&gt;

&lt;p&gt;Easy enough, right? Open a browser, click some buttons, reach checkout. Done.&lt;/p&gt;

&lt;p&gt;Except the internet doesn't want you to do that.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;Every major e-commerce platform, your favourite fashion brands, electronics stores, and sneaker sites run some form of bot detection. Cloudflare. DataDome. PerimeterX. Akamai. Kasada.&lt;/p&gt;

&lt;p&gt;These systems are sophisticated. They don't just check if you're sending the right HTTP headers. They watch how you behave in the browser.&lt;/p&gt;

&lt;p&gt;They measure things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does your mouse move in a straight line?&lt;/li&gt;
&lt;li&gt;Do you type at a perfectly constant speed?&lt;/li&gt;
&lt;li&gt;Does your browser have a Canvas fingerprint they've seen a thousand times before?&lt;/li&gt;
&lt;li&gt;Is your WebGL renderer showing signs of a headless cloud VM?&lt;/li&gt;
&lt;li&gt;If anything looks off and I mean anything you get a CAPTCHA, a silent redirect, or just an empty page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our crawler had to get through all of that. Autonomously. On any site. Without a human in the loop.&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%2Fpz25ctot1ayjjbkvqsje.jpg" 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%2Fpz25ctot1ayjjbkvqsje.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Fingerprint, Meet Counterfeit
&lt;/h2&gt;

&lt;p&gt;Here's what I didn't expect: your browser has a fingerprint, and headless browsers have a very obvious one.&lt;/p&gt;

&lt;p&gt;When Chrome runs in headless mode on a cloud server, several things give it away. &lt;br&gt;
The fix? Patch every one of these before the page even loads.&lt;/p&gt;

&lt;p&gt;But that's just the beginning. The really interesting stuff is the Canvas fingerprint.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Your Browser's Art Class Betrays You
&lt;/h2&gt;

&lt;p&gt;Here's something wild: websites can tell a lot about your browser by asking it to draw something.&lt;/p&gt;

&lt;p&gt;The HTML5 Canvas API lets JavaScript render graphics. But the exact pixel output of that rendering varies slightly between real hardware, operating systems, and GPU drivers. Headless Chrome on a cloud VM produces a consistent, identifiable hash — because it always runs on the same virtual GPU.&lt;/p&gt;

&lt;p&gt;Bot detection systems have a database of these hashes. If yours matches a known headless browser fingerprint blocked.&lt;/p&gt;

&lt;p&gt;The solution? Add noise to the Canvas output. Tiny, imperceptible random variations that make each session produce a unique hash.&lt;/p&gt;

&lt;p&gt;Same goes for WebGL — the GPU fingerprint. Headless Chrome on GCP returns "Google SwiftShader" as the renderer. That's a dead giveaway.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Mouse Problem
&lt;/h2&gt;

&lt;p&gt;This one is my favourite.&lt;/p&gt;

&lt;p&gt;Humans don't move their mouse in straight lines. Watch yourself right now your cursor curves, accelerates, decelerates, overshoots slightly and corrects. It's a beautiful, messy, organic path.&lt;/p&gt;

&lt;p&gt;Bots move in straight lines. Or they teleport. Both are instant flags.&lt;/p&gt;

&lt;p&gt;The solution: Bézier curve mouse simulation.&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%2Fenfiitvw05y3fj0fho5k.jpg" 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%2Fenfiitvw05y3fj0fho5k.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A Bézier curve is a mathematical curve defined by control points. By generating random control points between the current cursor position and the target, you get a realistic, curved path with natural acceleration and deceleration.&lt;/p&gt;

&lt;p&gt;Typing works the same way. Real people don't type at exactly 120ms per keystroke. They have rhythm, occasional hesitation, and natural variance. Gaussian-distributed delays simulate that.&lt;/p&gt;
&lt;h2&gt;
  
  
  But Wait!!  What About the AI Part?
&lt;/h2&gt;

&lt;p&gt;Here's the thing I learned that I didn't expect going in:&lt;/p&gt;

&lt;p&gt;The hardest part of building an AI-powered crawler isn't the AI.&lt;/p&gt;

&lt;p&gt;It's getting the browser to a state where the AI's decisions can actually execute.&lt;/p&gt;

&lt;p&gt;Once you've dealt with fingerprinting, WAFs, and cookie consent banners the AI's job of "figure out how to navigate this checkout" is almost the easy part. The browser is finally in a clean, unblocked state where clicks actually work.&lt;/p&gt;

&lt;p&gt;I can't share everything about how the AI navigation works that's the core product. But I'll say this: the most interesting design decision was figuring out when NOT to use AI.&lt;/p&gt;

&lt;p&gt;Calling an LLM for every single navigation step is slow and expensive. The real insight was building a system that handles ~60% of decisions with zero AI at all, pure pattern matching and saves the AI for the genuinely hard cases.&lt;/p&gt;

&lt;p&gt;That's the architectural principle I'm taking with me: AI is most powerful when it's used precisely, not constantly.&lt;/p&gt;
&lt;h2&gt;
  
  
  What I Took Away
&lt;/h2&gt;

&lt;p&gt;The impressive part isn't the model. It's everything around the model the infrastructure that gets it into a position where it can actually do something useful.&lt;/p&gt;

&lt;p&gt;The browser stealth work, the WAF bypass strategies, the Bézier mouse simulation none of that involves a single API call to an LLM. But without it, the AI is completely useless.&lt;/p&gt;

&lt;p&gt;That gap between "AI that works in demos" and "AI that works in production on the real internet" is enormous. And crossing it is mostly an engineering problem, not an AI problem.&lt;/p&gt;

&lt;p&gt;If this was interesting to you, the company I worked with PCI Oasis builds security tools for e-commerce payment protection. Their e-skimming labs (the other project I worked on) are open to the public at labs.pcioasis.com if you want to explore real attack simulations in a safe environment. &lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://www.pcioasis.com/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;pcioasis.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;And if you have questions about any of the techniques above, drop them in the comments. Happy to dig in.&lt;/p&gt;

&lt;p&gt;Thanks for reading my article :)&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>security</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
