<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ijaz Ur Rahim — Blog</title>
    <link>https://ijazurrahim.com/blog/</link>
    <atom:link href="https://ijazurrahim.com/rss.xml" rel="self" type="application/rss+xml"/>
    <description>Technical writing on reverse engineering, bot mitigation, security research, and full-stack development.</description>
    <language>en</language>
    <lastBuildDate>Tue, 22 Sep 2026 13:46:29 GMT</lastBuildDate>
    <item>
      <title>Obfuscated JavaScript vs Claude, GPT-6, Gemini, Grok and Cursor</title>
      <link>https://ijazurrahim.com/blog/obfuscated-javascript-vs-claude-gpt-6-gemini-grok-cursor.html</link>
      <guid isPermaLink="true">https://ijazurrahim.com/blog/obfuscated-javascript-vs-claude-gpt-6-gemini-grok-cursor.html</guid>
      <description>I asked 9 AI models to recover code from 8 JavaScript obfuscators. The VM-based ones fell in minutes, every time. The real danger: agents returned wrong code that passed thousands of tests.</description>
      <pubDate>Tue, 22 Sep 2026 09:00:00 GMT</pubDate>
      <category>security</category>
      <category>reverse-engineering</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Your Scraper Passes on Your Laptop and Fails on the Server</title>
      <link>https://ijazurrahim.com/blog/stealth-browsers-on-a-vps-2026.html</link>
      <guid isPermaLink="true">https://ijazurrahim.com/blog/stealth-browsers-on-a-vps-2026.html</guid>
      <description>The same seven stealth browsers, the same tests, run on a 40-core VPS instead of a laptop. Six of seven stop passing - and the reason is the machine, not the tool.</description>
      <pubDate>Fri, 18 Sep 2026 09:00:00 GMT</pubDate>
      <category>security</category>
      <category>reverse-engineering</category>
      <category>scraping</category>
      <category>architecture</category>
    </item>
    <item>
      <title>I Tested 7 Stealth Browsers Against 6 Detection Pages: Here Is What Actually Passes</title>
      <link>https://ijazurrahim.com/blog/stealth-browsers-tested-2026.html</link>
      <guid isPermaLink="true">https://ijazurrahim.com/blog/stealth-browsers-tested-2026.html</guid>
      <description>Camoufox, Patchright, SeleniumBase, Botasaurus, Zendriver and Nodriver benchmarked against real fingerprinting pages - 42 runs, a human baseline, and the headless leaks nobody mentions.</description>
      <pubDate>Fri, 18 Sep 2026 09:00:00 GMT</pubDate>
      <category>security</category>
      <category>reverse-engineering</category>
      <category>python</category>
      <category>scraping</category>
    </item>
    <item>
      <title>The Bot Identity Problem: What Happens When Bots Start Signing Their Requests</title>
      <link>https://ijazurrahim.com/blog/the-bot-identity-problem.html</link>
      <guid isPermaLink="true">https://ijazurrahim.com/blog/the-bot-identity-problem.html</guid>
      <description>Web Bot Auth lets bots cryptographically prove they are bots - and get better treatment for it. How RFC 9421 signing works, where implementations break, and what it means if you run scrapers.</description>
      <pubDate>Thu, 17 Sep 2026 09:00:00 GMT</pubDate>
      <category>security</category>
      <category>reverse-engineering</category>
    </item>
    <item>
      <title>Extracting Data from SPAs: When BeautifulSoup Isn&apos;t Enough</title>
      <link>https://ijazurrahim.com/blog/extracting-data-from-spas.html</link>
      <guid isPermaLink="true">https://ijazurrahim.com/blog/extracting-data-from-spas.html</guid>
      <description>Strategies for scraping JavaScript-rendered content - network interception, hidden APIs, and when to actually reach for a headless browser.</description>
      <pubDate>Wed, 11 Feb 2026 09:00:00 GMT</pubDate>
      <category>python</category>
      <category>scraping</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Web Scraping in 2026: The Tools That Actually Work</title>
      <link>https://ijazurrahim.com/blog/web-scraping-tools-2026.html</link>
      <guid isPermaLink="true">https://ijazurrahim.com/blog/web-scraping-tools-2026.html</guid>
      <description>An honest comparison of requests, HTTPX, Scrapy, Playwright, and when to use each. No hype, just real tradeoffs from years of production scraping.</description>
      <pubDate>Wed, 04 Feb 2026 09:00:00 GMT</pubDate>
      <category>python</category>
      <category>scraping</category>
    </item>
    <item>
      <title>Server Management for Developers Who Hate DevOps</title>
      <link>https://ijazurrahim.com/blog/server-management-for-developers.html</link>
      <guid isPermaLink="true">https://ijazurrahim.com/blog/server-management-for-developers.html</guid>
      <description>Practical cPanel and VPS guide - deploying Node.js and Python apps, SSL, cron jobs, and keeping things alive without Kubernetes or a dedicated ops team.</description>
      <pubDate>Wed, 28 Jan 2026 09:00:00 GMT</pubDate>
      <category>tooling</category>
      <category>architecture</category>
    </item>
    <item>
      <title>The Freelancer&apos;s Stack: How I Ship Full-Stack Projects Solo</title>
      <link>https://ijazurrahim.com/blog/the-freelancers-stack.html</link>
      <guid isPermaLink="true">https://ijazurrahim.com/blog/the-freelancers-stack.html</guid>
      <description>Opinionated stack choices after 100+ client projects - Next.js, Django, PostgreSQL, and why simplicity wins every time when you&apos;re a team of one.</description>
      <pubDate>Wed, 21 Jan 2026 09:00:00 GMT</pubDate>
      <category>architecture</category>
      <category>javascript</category>
      <category>python</category>
    </item>
    <item>
      <title>Packaging Python Desktop Apps with PyQt5 and PyInstaller</title>
      <link>https://ijazurrahim.com/blog/packaging-python-desktop-apps.html</link>
      <guid isPermaLink="true">https://ijazurrahim.com/blog/packaging-python-desktop-apps.html</guid>
      <description>The pain points nobody warns you about - hidden imports, asset bundling, cross-platform builds, and keeping the binary size sane.</description>
      <pubDate>Wed, 14 Jan 2026 09:00:00 GMT</pubDate>
      <category>python</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Django in Production: Lessons from 4 Years at Lobstr.io</title>
      <link>https://ijazurrahim.com/blog/django-in-production.html</link>
      <guid isPermaLink="true">https://ijazurrahim.com/blog/django-in-production.html</guid>
      <description>Real-world patterns that survived production traffic - query optimization, signals vs. Celery, connection pooling, and caching strategies from years of iteration.</description>
      <pubDate>Wed, 07 Jan 2026 09:00:00 GMT</pubDate>
      <category>python</category>
      <category>django</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Building Async Scrapers That Actually Scale</title>
      <link>https://ijazurrahim.com/blog/async-scrapers-that-scale.html</link>
      <guid isPermaLink="true">https://ijazurrahim.com/blog/async-scrapers-that-scale.html</guid>
      <description>asyncio + HTTPX patterns for scraping thousands of pages concurrently without melting your machine - connection pooling, rate limiting, and retry strategies that work.</description>
      <pubDate>Wed, 31 Dec 2025 09:00:00 GMT</pubDate>
      <category>python</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Fingerprinting Beyond JA3: HTTP/2 and the Next Generation of Bot Detection</title>
      <link>https://ijazurrahim.com/blog/fingerprinting-beyond-ja3.html</link>
      <guid isPermaLink="true">https://ijazurrahim.com/blog/fingerprinting-beyond-ja3.html</guid>
      <description>Deep-dive into HTTP/2 SETTINGS frames, header order fingerprinting, and why JA3 alone is no longer enough to evade modern anti-bot systems.</description>
      <pubDate>Wed, 24 Dec 2025 09:00:00 GMT</pubDate>
      <category>security</category>
      <category>reverse-engineering</category>
      <category>python</category>
    </item>
    <item>
      <title>Bypassing Cloudflare Turnstile: What Changed in 2026</title>
      <link>https://ijazurrahim.com/blog/bypassing-cloudflare-turnstile-2026.html</link>
      <guid isPermaLink="true">https://ijazurrahim.com/blog/bypassing-cloudflare-turnstile-2026.html</guid>
      <description>A breakdown of Cloudflare&apos;s latest challenge mechanism, how it differs from previous versions, and what signals it actually collects behind the scenes.</description>
      <pubDate>Wed, 17 Dec 2025 09:00:00 GMT</pubDate>
      <category>security</category>
      <category>reverse-engineering</category>
    </item>
    <item>
      <title>Decoding Protobuf in the Wild: Reverse Engineering Binary API Responses</title>
      <link>https://ijazurrahim.com/blog/decoding-protobuf-in-the-wild.html</link>
      <guid isPermaLink="true">https://ijazurrahim.com/blog/decoding-protobuf-in-the-wild.html</guid>
      <description>How to identify, decode, and work with Protobuf-encoded data when scraping apps that don&apos;t publish .proto files - from raw bytes to structured data.</description>
      <pubDate>Wed, 10 Dec 2025 09:00:00 GMT</pubDate>
      <category>security</category>
      <category>reverse-engineering</category>
      <category>python</category>
    </item>
    <item>
      <title>Reverse Engineering Anti-Bot Systems: A Practical Guide</title>
      <link>https://ijazurrahim.com/blog/reverse-engineering-anti-bot-systems.html</link>
      <guid isPermaLink="true">https://ijazurrahim.com/blog/reverse-engineering-anti-bot-systems.html</guid>
      <description>A deep-dive into how enterprise bot detection works under the hood - TLS fingerprinting, JavaScript challenges, and behavioral analysis - and how to think like the systems you&apos;re trying to bypass.</description>
      <pubDate>Wed, 03 Dec 2025 09:00:00 GMT</pubDate>
      <category>security</category>
      <category>reverse-engineering</category>
      <category>python</category>
    </item>
  </channel>
</rss>
