Полочек тут три, и они действительно разные.
Первая, WinHTTP. Настройка задаётся через netsh winhttp set proxy и лежит в системе. Ей пользуются службы и часть системных компонентов: обновление, некоторые агенты, приложения на .NET, если их специально не научили другому. Проверяется командой netsh winhttp show proxy.
Вторая, WinINET. Это то, что открывается в свойствах браузера и живёт в ветке пользователя. Туда смотрят браузеры на движке системы и старые программы. К первой полочке отношения не имеет совсем, хотя настройки можно перелить одной командой:
netsh winhttp import proxy source=ie
Третья, переменные окружения. Их читают программы, пришедшие из мира юникса: curl, python, git, node. Ни первую, ни вторую полочку они не смотрят. Отсюда ваш скрипт и ходит напрямую.
| Кто настраивает | Кто читает |
|---|
| netsh winhttp | службы, обновление, часть .NET |
| свойства браузера | браузеры на системном движке |
| HTTP_PROXY и соседи | curl, python, git, node |
десять лет в поддержке, всё видел