Я пишу простой веб-паук. Идея состоит в том, чтобы получить страницу программно с помощью QNetworkAccessManager, QNetworkReply и QNetworkRequest, все отлично работает.
Проблема, с которой я сталкиваюсь, заключается в том, что (для некоторых страниц) я получаю разные/несоответствующие результаты программно или при посещении страницы вручную с помощью браузера. Я всегда получаю синтаксически правильные HTML-страницы, но они выглядят для меня своего рода ответами «защиты от пауков». Страницы, на которые я ссылаюсь, НЕ ЯВЛЯЮТСЯ POST-страницами, тесты, которые я делаю, это очень простые URL-страницы, иногда с параметрами (например, www.sample.com/index.php?param=something), иногда даже с простой страницей. .html URL-адреса.
Псевдокод выглядит следующим образом:
QNetworkRequest req;
req.setUrl(QUrl(myurl));
req.setRawHeader(*I did try this one with no success*);
QNetworkAccessManager man;
QNetworkReply rep = man->get(req);
//finish and error slots connection code here
. . .
void replyFinished()
{
QNetworkReply* rep = qobject_cast<QNetworkReply *>(sender());
if (rep->error() == QNetworkReply::NoError)
{
// read data from QNetworkReply here
QByteArray bytes = rep->readAll();
QString stringa(bytes);
qDebug() << stringa;
}
}
В слоте finish () я печатаю данные из сетевого ответа, и иногда я получаю несоответствующие результаты из простой операции «Просмотр исходного кода» в браузере, полученной путем посещения вручную URL-адреса.
Иногда я получаю пользовательскую страницу «Не найдено», иногда более странные страницы с формами входа или другим неожиданным содержимым. Может быть, это какая-то защита от пауков? Кто-нибудь может помочь?