Не резолвятся доменные имена через прокси
Делаю браузер на Qt с использованием QtWebEngine. Когда прикручиваю на него прокси, возникает утечка dns.
QWebEngineSettings::DnsPrefetchEnabled не работает.
Пробовал с помощью QWebEngineUrlRequestInterceptor ловить эти запросы, тоже не помогло.
Например:
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
};
#endif // MAINWINDOW_H
mainwindow.h
#include "mainwindow.h"
#include <QDebug>
#include <QWebEngineView>
#include <QWebEnginePage>
#include <QWebEngineProfile>
#include <QWebEngineSettings>
#include <QNetworkProxy>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QNetworkProxy proxy;
proxy.setType(QNetworkProxy::HttpProxy);
proxy.setHostName("proxy_host");
proxy.setPort(proxy_port);
proxy.setCapabilities(QNetworkProxy::HostNameLookupCapability);
//proxy.setUser(user);
//proxy.setPassword(pass);
QNetworkProxy::setApplicationProxy(proxy);
QWebEngineProfile *profile = QWebEngineProfile::defaultProfile();
QWebEngineSettings* sett = profile->settings();
sett->setAttribute(QWebEngineSettings::PluginsEnabled, true);
sett->setAttribute(QWebEngineSettings::XSSAuditingEnabled, false);
sett->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, true);
sett->setUnknownUrlSchemePolicy(QWebEngineSettings::AllowAllUnknownUrlSchemes);
sett->setAttribute(QWebEngineSettings::DnsPrefetchEnabled, false);
profile->setUseForGlobalCertificateVerification();
QWebEngineView *w = new QWebEngineView(this);
QWebEnginePage *p = new QWebEnginePage(profile,this);
w->setPage(p);
w->load(QUrl("https://browserleaks.com/ip"));
this->setCentralWidget(w);
this->resize(900,900);
}
Ответы (1 шт):
Автор решения: banana_cat
→ Ссылка
Написал локальный прокси сервер и с помощью флага --host-resolver-rules(в 5.15 он наконец начал работать) ссылал все на него.Задача в целом решена, но если вы знаете более элегантные решения, милости прошу к моему шалашу.