When I make a normal python request to some site without any proxies I am getting a 429 response, too many requests. However when I open up burpsuite proxy and add

proxies = {
    "http": "", "https": ""

In my python request, somehow the request goes through and I get 200 response. Why is that? I sent the proxied request to repeater and it matches up identically to the python request to so it does not look like burpsuite is changing it in any way. Why is this happening? Dont get me wrong this is a good thing but I just want to know how burpsuite is getting around the error.

1 Answer 1


Part 1: Why you're getting a 429 error

429 too many requests is often sent as a catch all by websites that have anti-bot protection. It is trivially easy for servers to fingerprint web requests made by most 'vanilla' libraries (i.e. requests in Python, HttpClient in .NET). Because regular users aren't going to be using these libraries it's safe for the server to completely block access.

Side note: there are many methods to bypass anti-bot protection, the most basic one is to change your user agent header. Though this alone will only work on servers with very poorly implemented protection.

Part 2: Why is Burpsuite proxied traffic getting through?

I'm not familiar with the intricacies of Burpsuite's proxy and I don't know what library you're using nor the server's protections so I can't really give you an exact answer here. However, it seems clear to me that the request must be modified by Burpsuite somehow. It could have something to do with how your library formats proxied requests vs regular requests. (Proxied requests are often formatted slightly differently.) Or, it may have something to do with how Burpsuite parses proxied requests. It could also be something entirely different - there's no way for me to know for sure.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .