我正在写一个简单的网络蜘蛛。想法是使用 QNetworkAccessManager、QNetworkReply 和 QNetworkRequest 以编程方式获取页面,一切正常。
我遇到的问题是(对于某些页面)我以编程方式或通过使用浏览器“手动”访问页面得到不同/不匹配的结果。我总是得到语法正确的 HTML 页面,但在我看来它们就像某种“蜘蛛保护”的答案。我指的页面不是 POST 页面,我正在做的测试是非常简单的 url 页面,有时带有参数(例如 www.sample.com/index.php?param=something),有时甚至是普通页面.html 网址。
伪代码如下:
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() 插槽中,我正在打印来自networkreply 的数据,有时我会从浏览器中通过手动访问url 获得的简单“查看源代码”操作中得到不匹配的结果。
有时我会得到一个自定义的“未找到”页面,有时是一些带有登录表单或其他意外内容的更奇怪的页面。也许这是某种蜘蛛保护?任何人都可以帮忙吗?