QuadProxy Starter

QNetworkProxy and Qt WebEngine

QNetworkProxy works, but QWebEngineView still ignores your proxy?

This is the exact failure pattern developers hit when a normal Qt network request returns the proxy IP, but the embedded Chromium browser path still shows the direct machine IP. The proxy may be valid; the WebEngine context may simply not be using it.

Buy when your non-WebEngine proxy check works but WebEngine still shows the direct IP.
The download gives you ready-to-run PyQt5/PyQt6 source, proxyAuthenticationRequired wiring, quadproxy doctor, public-IP verification, and the 30-day support/refund path.

Same Stripe checkout and instant download. Includes PyQt5/PyQt6 source examples, quadproxy doctor, troubleshooting docs, and 30-day support/refund path. Keep reading if you want the free diagnostic sequence first.

What this usually means

  1. QNetworkAccessManager or another non-WebEngine request is proving only the Qt network stack.
  2. QWebEngineView is proving the Chromium-backed browser stack, which has its own startup timing and authentication behavior.
  3. If QNetworkProxy.setApplicationProxy(proxy) happens after QApplication or any WebEngine object exists, Chromium can keep the direct network context.
  4. If the proxy needs credentials and WebEngine asks for them through proxyAuthenticationRequired, the page must answer that challenge explicitly.

Minimal PyQt6 shape

import sys
from PyQt6.QtCore import QUrl
from PyQt6.QtNetwork import QNetworkProxy
from PyQt6.QtWidgets import QApplication
from PyQt6.QtWebEngineWidgets import QWebEngineView

proxy = QNetworkProxy(QNetworkProxy.ProxyType.HttpProxy, "proxy.example.com", 8080)
QNetworkProxy.setApplicationProxy(proxy)

app = QApplication(sys.argv)
view = QWebEngineView()

def handle_proxy_auth(request_url, authenticator, proxy_host):
    authenticator.setUser("proxy_username")
    authenticator.setPassword("proxy_password")

view.page().proxyAuthenticationRequired.connect(handle_proxy_auth)
view.load(QUrl("https://api.ipify.org"))
view.show()
sys.exit(app.exec())

Verification checklist

  1. Run the same public-IP check outside WebEngine and inside WebEngine. They test different paths.
  2. Restart the process after changing proxy identity. Do not rely on hot-swapping a live WebEngine network context.
  3. Confirm proxyAuthenticationRequired is connected on the page that actually loads the URL.
  4. Log only pass/fail and redacted host/provider hints. Do not log proxy passwords.

Where QuadProxy fits

QuadProxy packages this pattern into a maintained PyQt5/PyQt6 starter with examples, diagnostics, redacted support bundles, and a quadproxy doctor flow. The free explanation above is enough to build your own version; the paid kit is for developers who would rather spend $29.00 than keep debugging WebEngine initialization and proxy verification.

QuadProxy is software only. It does not sell proxy bandwidth or include proxy credentials.

Related: QWebEngineView proxy authentication diagnosis