QWebView* pView = new QWebView;
pView->load(url);
m_NetManage = new QBotNetworkAccessManager;
pView->page()->setNetworkAccessManager(m_NetManage);
//pProxiEdit – IP:Port
QRegExp rx("^\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}:\\d{2,}$")
QString sProxiIP, sPRoxiPort, sTmp;
sTmp = pProxiEdit->text();
if(rx.indexIn(sTmp, 0) != -1) {
int pos = sTmp.indexOf(":");
sProxiIP = sTmp.mid(0, pos);
sPRoxiPort = sTmp.mid(pos + 1, sTmp.size() - pos - 1);
QNetworkProxy* proxy = new QNetworkProxy(QNetworkProxy::HttpProxy, sProxiIP, sPRoxiPort.toUInt());
m_NetManage->setProxy(*proxy);
}
QNetworkReply * QNetworkAccessManager::createRequest ( Operation op, const QNetworkRequest & req, QIODevice * outgoingData = 0 ) [virtual protected]
QNetworkReply * QBotNetworkAccessManager::createRequest ( Operation op, const QNetworkRequest & req, QIODevice * outgoingData) {
QNetworkRequest myReq(req);// QNetworkRequest & req
// http-
myReq.setRawHeader("User-Agent", sUA.toUtf8());
// ...
return QNetworkAccessManager::createRequest( op, myReq, outgoingData);
}
QString sUA = "MY_USER_AGENT";
...
connect(pView, SIGNAL(urlChanged(const QUrl&)), this, SLOT(OnUrlChanged(const QUrl&)));
...
void MainWindow::OnUrlChanged(const QUrl& url) {
QString jScript = QString("var navigator = new Object; navigator.appName = '%1';").arg(sUA);
pUrlEdit->setText(url.toString());
pView->page()->mainFrame()->evaluateJavaScript(jScript);
}
...
OnUrlChanged(url);
pView->load(url);
...
struct SDataArhive {
QByteArray BaseItemText;
QMap<QByteArray, QByteArray> ChItemText;
};
QVector vDataArhive;
cookie user-agent- :
QList ListCookies;
// cookie
ListCookies = pView->page()->networkAccessManager()->cookieJar()->cookiesForUrl(pView->url());
QByteArray sByteAr = "";
SDataArhive strTmp
// cookie QByteArray,
//
for(int i = 0; i < ListCookies.size(); i++) {
sByteAr += ListCookies[i].name();
sByteAr += "=";
sByteAr += ListCookies[i].value();
if(i < (ListCookies.size() - 1)){
sByteAr += "\n";
}
}
strTmp.ChItemText.insert("cookie", sByteAr);
//----------------------------------------
// User-Aget
sByteAr = sUA.toUtf8();
strTmp.ChItemText.insert("user-agent", sByteAr);
//--------------------------------------
vDataArhive.append(strTmp);
cookie . , .

, cookie, :
// QByteArray cookie
QByteArray tmp = vDataArhive[IdxTop].ChItemText[dataIdx];
// QByteArray cookie
QList ListData = tmp.split('\n');
QList ListCookies;
if(!ListData.isEmpty()) {
for(int i = 0; i < ListData.size(); i++) {
QList cooka = ListData[i].split('=');
if(cooka.size() == 2) {
ListCookies.push_back(QNetworkCookie(cooka[0], cooka[1]));
}
}
if(!ListCookies.isEmpty()){
// cookie
pView->page()->networkAccessManager()->cookieJar()->setCookiesFromUrl(ListCookies ,pView->url());
}
}
// user-agent
sUA = vDataArhive[IdxTop].ChItemText["user-agent"];
: .
PS www.free-lance.ru , Qt www.prog.org.ru .
Source: https://habr.com/ru/post/111912/
All Articles