<?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: milad</title>
    <description>The latest articles on DEV Community by milad (@miladrezanezhad).</description>
    <link>https://dev.to/miladrezanezhad</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%2F3932602%2Fdf0efde5-6e2b-4a94-a0be-cdfc3934305e.jpeg</url>
      <title>DEV Community: milad</title>
      <link>https://dev.to/miladrezanezhad</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/miladrezanezhad"/>
    <language>en</language>
    <item>
      <title>I got tired of manually testing API rate limits, so I built a tool</title>
      <dc:creator>milad</dc:creator>
      <pubDate>Sat, 30 May 2026 14:02:35 +0000</pubDate>
      <link>https://dev.to/miladrezanezhad/i-got-tired-of-manually-testing-api-rate-limits-so-i-built-a-tool-2hb8</link>
      <guid>https://dev.to/miladrezanezhad/i-got-tired-of-manually-testing-api-rate-limits-so-i-built-a-tool-2hb8</guid>
      <description>&lt;p&gt;So here's the thing.&lt;/p&gt;

&lt;p&gt;I was working on an API the other day — just a small internal tool — and I realized I had no idea if it had rate limiting or not. Like, at all.&lt;/p&gt;

&lt;p&gt;I sent 200 requests in a loop with a bash script (don't judge me) and... nothing. No 429, no blocking, just happy 200s. My little API was basically begging to get brute-forced.&lt;/p&gt;

&lt;p&gt;That's when I thought: there has to be a better way than writing a janky script every single time.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;API Security Auditor Pro&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does it actually do?
&lt;/h2&gt;

&lt;p&gt;It's just a CLI tool. Nothing fancy. You give it a URL, it does three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tests for rate limiting&lt;/strong&gt; — sends a bunch of requests and checks if you ever get a 429. If not? That's a red flag.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checks security headers&lt;/strong&gt; — you know, HSTS, CSP, all those things we forget to add.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Looks for weird stuff&lt;/strong&gt; — like APIs returning way too much data or missing auth checks.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Nothing revolutionary. Just the boring stuff that actually matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here's why I like it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It's fast.&lt;/strong&gt; Like, really fast. No heavy setup, no cloud nonsense.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker support.&lt;/strong&gt; Because who wants to install Python dependencies at 2 AM? &lt;code&gt;docker run ...&lt;/code&gt; and you're done.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output formats you can actually use.&lt;/strong&gt; JSON for scripts, HTML for sending to managers who want "reports".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD ready.&lt;/strong&gt; I threw it in a GitHub Action and now it runs every night. Found a staging API with no rate limiting on day 2.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Show me the code already
&lt;/h2&gt;

&lt;p&gt;Fine. Here you go:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install it&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;api-security-auditor-pro

&lt;span class="c"&gt;# Test a public API (no rate limiting — oops)&lt;/span&gt;
api-auditor test-rate-limit https://jsonplaceholder.typicode.com/users

&lt;span class="c"&gt;# Try it on GitHub's API (they actually do it right)&lt;/span&gt;
api-auditor test-rate-limit https://api.github.com/users/octocat &lt;span class="nt"&gt;--requests&lt;/span&gt; 100

&lt;span class="c"&gt;# Save a report for your boss&lt;/span&gt;
api-auditor scan https://your-api.com &lt;span class="nt"&gt;--output&lt;/span&gt; report.json &lt;span class="nt"&gt;--format&lt;/span&gt; json
api-auditor report report.json &lt;span class="nt"&gt;--output&lt;/span&gt; look_how_secure_we_are.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Real talk — does it work?
&lt;/h2&gt;

&lt;p&gt;I tested it on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub API&lt;/strong&gt; → ✅ Has rate limiting (returns 429 like a champ)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSONPlaceholder&lt;/strong&gt; → ❌ No rate limiting at all (classic)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A random e-commerce API I found&lt;/strong&gt; → ❌ No rate limiting AND missing security headers. Yikes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So yeah. It finds problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;I just released v1.0. It's stable, it works, and I actually use it on my own projects.&lt;/p&gt;

&lt;p&gt;Future stuff I'm thinking about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication support (Bearer tokens, API keys)&lt;/li&gt;
&lt;li&gt;GraphQL support&lt;/li&gt;
&lt;li&gt;More vulnerability checks (OWASP Top 10 for APIs)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Links (because you're going to ask anyway)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/miladrezanezhad/api-security-auditor-pro" rel="noopener noreferrer"&gt;miladrezanezhad/api-security-auditor-pro&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PyPI:&lt;/strong&gt; &lt;code&gt;pip install api-security-auditor-pro&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker:&lt;/strong&gt; &lt;code&gt;docker pull miladrezanezhad/api-security-auditor-pro&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  One last thing
&lt;/h2&gt;

&lt;p&gt;If you try it and it breaks — open an issue. If you like it — drop a star. If you have ideas — I'm all ears.&lt;/p&gt;

&lt;p&gt;I built this because I needed it. But maybe you do too.&lt;/p&gt;

&lt;p&gt;Go audit your APIs. You might be surprised.&lt;/p&gt;

&lt;p&gt;— Milad&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; The tool won't attack your API. It just sends normal requests and looks at responses. Safe enough for production (but maybe test on staging first, yeah?).&lt;/p&gt;

</description>
      <category>python</category>
      <category>api</category>
      <category>security</category>
      <category>devops</category>
    </item>
    <item>
      <title>Web Security Analyzer Pro v3.0 — I built 49 security modules, but I need your help</title>
      <dc:creator>milad</dc:creator>
      <pubDate>Fri, 15 May 2026 07:54:03 +0000</pubDate>
      <link>https://dev.to/miladrezanezhad/web-security-analyzer-pro-v30-i-built-49-security-modules-but-i-need-your-help-41gl</link>
      <guid>https://dev.to/miladrezanezhad/web-security-analyzer-pro-v30-i-built-49-security-modules-but-i-need-your-help-41gl</guid>
      <description>&lt;p&gt;👇 &lt;strong&gt;The honest truth&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Three months ago, I started building a web security scanner.&lt;br&gt;&lt;br&gt;
Today, it has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;49 security modules&lt;/strong&gt; (WordPress, cPanel, SQLi, XSS, SSL, API security, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced SQL injection detection&lt;/strong&gt; (error-based, boolean blind, time-based, UNION)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WAF evasion engine&lt;/strong&gt; (detects 9 WAFs + Cloudflare, Sucuri, ModSecurity)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Built-in CVE database&lt;/strong&gt; (2024–2026 vulnerabilities with CVSS scores)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTML, PDF, Markdown, JSON reports&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;230+ automated tests&lt;/strong&gt; (99.5% pass rate)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it's &lt;strong&gt;completely free and open source&lt;/strong&gt; under MIT license.&lt;/p&gt;

&lt;p&gt;But here's the part I don't put in the README:&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;🐛 It's not perfect. And I need help.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a &lt;strong&gt;one-person project&lt;/strong&gt;. I've tested it on dozens of targets, but:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some modules fail on edge cases I haven't seen&lt;/li&gt;
&lt;li&gt;The SQLi detector works great on MySQL, less tested on PostgreSQL&lt;/li&gt;
&lt;li&gt;DOM XSS detection needs more real-world validation&lt;/li&gt;
&lt;li&gt;The evasion engine works against 9 WAFs — but new WAFs appear every week&lt;/li&gt;
&lt;li&gt;I'm sure there are bugs I don't even know about&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;I'm not looking for praise. I'm looking for people who will break this tool and tell me how.&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;🎯 Who this tool is for&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Web developers&lt;/strong&gt; who want to audit their own sites before deployment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security researchers&lt;/strong&gt; who need a free, scriptable scanner&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Penetration testers&lt;/strong&gt; who want a second opinion alongside Burp/ZAP&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DevOps engineers&lt;/strong&gt; who need CI/CD integration (REST API + JSON output)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Students&lt;/strong&gt; learning web security (the code is open, modules are simple)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What this tool is NOT:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A replacement for Burp Suite Pro or Acunetix&lt;/li&gt;
&lt;li&gt;A zero-day finder&lt;/li&gt;
&lt;li&gt;An automated hacker machine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's a &lt;strong&gt;free, honest scanner&lt;/strong&gt; that catches low-hanging fruit and helps you understand your security posture.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;🛠️ How you can help&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Run it on your sites&lt;/strong&gt; (with permission — read the LEGAL WARNING first)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open an issue&lt;/strong&gt; when it crashes, misses something, or gives a false positive&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Send a pull request&lt;/strong&gt; for a bug fix or new module&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share your test results&lt;/strong&gt; — even failures help me improve&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The code is modular. Adding a new module takes ~50 lines. The Wiki has templates.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;📦 Quick start&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/miladrezanezhad/web-security-scanner-pro.git
&lt;span class="nb"&gt;cd &lt;/span&gt;web-security-scanner-pro
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
python main.py scan https://your-test-site.com &lt;span class="nt"&gt;--mode&lt;/span&gt; stealth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or just run &lt;code&gt;python main.py&lt;/code&gt; for interactive mode.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;⚠️ One more honest thing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm a frontend developer who fell into security.&lt;br&gt;&lt;br&gt;
Some modules are better than others. Some code is messy.&lt;br&gt;&lt;br&gt;
But I ship it anyway — because someone else might need it, even if it's not perfect.&lt;/p&gt;

&lt;p&gt;Open source isn't about flawless code. It's about building together.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;🔗 GitHub:&lt;/strong&gt; &lt;a href="https://github.com/miladrezanezhad/web-security-scanner-pro" rel="noopener noreferrer"&gt;miladrezanezhad/web-security-scanner-pro&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#websecurity #opensource #bugbounty #python #infosec #helpneeded&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>security</category>
      <category>showdev</category>
      <category>sideprojects</category>
    </item>
  </channel>
</rss>
