Qt实践| HTTP知识点-Qt填充referer请求头盗取图片
生活随笔
收集整理的這篇文章主要介紹了
Qt实践| HTTP知识点-Qt填充referer请求头盗取图片
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
?
?
基本概念
代碼與實例
?
基本概念
HTTP協議頭中的Referer主要是用來讓服務器判斷來源頁面,即用戶是從那個頁面來的。網站通常用其來統計用戶來源,看用戶是從搜索頁面來的,還是從其他網站鏈接來的。或者是從書簽等訪問,以便合理的定位網站。
Referer有時候也做防盜鏈處理,即下載時判斷來源地址是不是在網站的域名內,否則不能下載或顯示,以天涯網為例!
如,直接請求某一圖片:
此時他判斷是是referer,如果referer不對(這個主要是看程序員怎么寫的),服務器那邊會會302重定向。
如果是瀏覽器接收到302的重定向,就肯定會訪問Location:后面的鏈接
如果Referer正確,即可得到對應的圖片,這里用Qt來實現下
?
代碼與實例
沒有refere時是獲取不到圖片的
Fidder抓包如下:
有referer后:
看看圖片:
源碼如下:
#include <QCoreApplication> #include <QNetworkAccessManager> #include <QNetworkReply> #include <QUrl> #include <QDebug> #include <QSslConfiguration> #include <QEventLoop> #include <QNetworkRequest> #include <QFile>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QNetworkAccessManager *manager = new QNetworkAccessManager;QNetworkRequest *request = new QNetworkRequest;QSslConfiguration config;QSslConfiguration conf = request->sslConfiguration();conf.setPeerVerifyMode(QSslSocket::VerifyNone);conf.setProtocol(QSsl::TlsV1SslV3);request->setSslConfiguration(conf);request->setUrl(QUrl("http://img3.laibafile.cn/p/m/280148719.png"));request->setRawHeader("referer", "http://www.tianya.cn");QNetworkReply *reply = manager->get(*request);QEventLoop loop;QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));loop.exec();QFile file("hehe.png");if(!file.open(QIODevice::WriteOnly)){qDebug() << "hehe文件有毒,快跑!";return 0;}file.write(reply->readAll());file.close();delete request;delete manager;qDebug() << "完成,可以關了~!";return a.exec(); }?
總結
以上是生活随笔為你收集整理的Qt实践| HTTP知识点-Qt填充referer请求头盗取图片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 混合知识实例-本地GIS定位系统Web版
- 下一篇: C++设计模式-享元模式