<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Bot-Detection on Zeeshan Khan</title><link>https://www.zkhan.in/tags/bot-detection/</link><description>Recent content in Bot-Detection on Zeeshan Khan</description><generator>Hugo -- 0.155.0</generator><language>en-us</language><lastBuildDate>Sat, 25 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.zkhan.in/tags/bot-detection/index.xml" rel="self" type="application/rss+xml"/><item><title>Building My Own Browser MCP: why I stopped faking a browser and started borrowing a real one</title><link>https://www.zkhan.in/posts/draft/build-your-own-browser-mcp/</link><pubDate>Sat, 25 Jul 2026 00:00:00 +0000</pubDate><guid>https://www.zkhan.in/posts/draft/build-your-own-browser-mcp/</guid><description>I wanted my coding agent to read the web the way I do — logged in, past the Cloudflare interstitial, on my own IP. I spent a weekend making Playwright lie about being a real browser, lost that fight, and then realised I was solving the wrong problem. This is the story of that pivot, and the MV3-extension-plus-WebSocket-bridge MCP server I ended up with.</description></item></channel></rss>