The question title is probably not covering the whole subject as I did quite a lot of research and found a number of weird things.
So first of all, what I'm trying to implement is some kind of a client for a website that would work on a user's behalf (not doing anything illegal, just optimizing some of the user's workflow). I've done this for many websites and it worked fine. However, with the current one there's an issue.
Normally, if I encounter a captcha I just open an embedded Chrome window for the user to pass it. However, with the website I'm talking about it doesn't help as the captcha is not displayed in the browser but is sent to me when I'm mimicking the request browser is sending exactly.
So I tried to investigate the difference between the request sent by the Chrome and by my application using Fiddler. However, even requests sent by a real Chrome face the same captcha if I enable the Fiddler.
I've disabled HTTP/2, SPDY and IPv6 in the Chrome as I thought that could be the difference. It didn't help. I've tried comparing the requests sent by Chrome using the Chrome dev tools - there's no difference, both of them are using HTTP/1.1, both have exactly the same headers, exactly the same cookies (or no cookies, it makes no difference). But whenever I enable Fiddler - the website responds with a captcha.
This is the first time I'm encountering something like this and I'm almost ready to bang my head against a wall as I don't see any possible way for the website to understand that the request is being proxied by Fiddler as it's not adding any custom headers or whatever.
Unless the website is somehow detecting the exact way HTTPS connection is being set up which sounds pretty insane... it shouldn't be possible.
Looking for an advice on how to debug this further.
Update:
I didn't find a solution nor did I understand how does the website in question detect direct connections from Chrome, but managed to find a workaround:
I'm taking the page with a captcha that my code receives from the website and substitute the actual page received by the CEF with that captcha page on the fly, thus allowing the user to pass it.
Since it doesn't answer the original question I'm not posting this as an answer and will leave this question open.