HTTP|Qt实践-Qt编写某平台刷评论软件(含代码与思路)
生活随笔
收集整理的這篇文章主要介紹了
HTTP|Qt实践-Qt编写某平台刷评论软件(含代码与思路)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
?
?
思路
Qt5代碼
?
思路
功能是用軟件,刷某平臺留言。以測試成功!在此不放截圖了,現在直接來看思路!
這里要先把號登上,然后人為手動留言,再抓包分析
首先是用Fidder去分析下HTTP封包:
最關鍵的就是這個包,從中我們可以知道這個是使用了POST方法。submit?id=文章的ID號。
這里還有個referer也是一個關鍵,在后面的偽造封包中,也是要填寫的!
其中Cookie就不用說了,證明了這個賬號等信息。
而HTTP中的body包含這個數據:
replyid=&content=XXXXX;
下面來解碼下這個XXX的內容
這里就知道這個內容為贊!
下面只要用Qt5偽造這個包就可以了!
?
?
Qt5代碼
程序運行截圖如下:
源碼如下:
#include <QCoreApplication> #include <QSslConfiguration> #include <QFile> #include <QNetworkReply> #include <QNetworkRequest> #include <QUrl> #include <QTimer> #include <QNetworkAccessManager> #include <QEventLoop> #include <QTime> #include <QDebug> #include <QVector> #include <windows.h>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QNetworkAccessManager *manager = new QNetworkAccessManager;QNetworkRequest *request = new QNetworkRequest;QString urlStr = "https://XXXXXXXX/XXXXXXXX/phoenix/comment/submit?id=";QString refererUrlStr = "https://XXXXXXXX/XXXXXXX/article/details/";qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));QVector<int> keyIdVec;//讀文件QFile file("D:\\papapa\\keyContent.txt");if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){qDebug() << "keyContent.txt 這文件有毒!快跑";delete manager;delete request;return 0;}while(!file.atEnd()){QString line = file.readLine();keyIdVec.append(line.remove("\n").toInt());}file.close();for(int i = 0; i < keyIdVec.size();){QString tempUrlStr = urlStr + QString::number(keyIdVec[i]);QString tempReferer = refererUrlStr + QString::number(keyIdVec[i]);QSslConfiguration config;QSslConfiguration conf = request->sslConfiguration();conf.setPeerVerifyMode(QSslSocket::VerifyNone);conf.setProtocol(QSsl::TlsV1SslV3);request->setSslConfiguration(conf);request->setUrl(QUrl(tempUrlStr));request->setRawHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0");request->setRawHeader("Accept", "*/*");request->setRawHeader("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3");request->setRawHeader("Accept-Encoding", "gzip, deflate, br");request->setRawHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");request->setRawHeader("X-Requested-With", "XMLHttpRequest");request->setRawHeader("Referer", tempReferer.toUtf8());request->setRawHeader("Cookie", "XXXXXXXXXXXX");request->setRawHeader("Connection", "keep-alive");QNetworkReply *reply = manager->post(*request, QString("replyId=&content=%e5%88%ab%e4%ba%ba%e5%ae%b6%e7%9a%84xxx%e4%bb%8e%e6%9d%a5%e6%b2%a1%e8%ae%a9%e6%88%91%e5%a4%b1%e6%9c%9b%e8%bf%87").toUtf8());QEventLoop loop;QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));loop.exec();qDebug() << "over! The size is " << reply->size();if(reply->size() >= 200){qDebug() << "content: " << QString::fromUtf8(reply->readAll());int num=qrand()%1000 * 60 + 1000 * 60 * 3;delete request;delete manager;request = new QNetworkRequest;manager = new QNetworkAccessManager;qDebug() << "sleep time: " << num;Sleep(num);}else{i++;}Sleep(qrand()%1000 * 60 + 1000 * 60);}delete request;delete manager;return a.exec(); }這里要注意源碼中的KeyContent.txt是用Qt5獲取的博文ID
以前寫過Qt5爬的博文ID,在此不再重復說明,
如何去自動更新Cookie,這里給出一個提示,可以通過QWebView或QWebEngine去實現,這樣做簡單點,但每獲取一次,需要時間的。
總結
以上是生活随笔為你收集整理的HTTP|Qt实践-Qt编写某平台刷评论软件(含代码与思路)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java工作笔记-Spring Boot
- 下一篇: Qt文档阅读笔记-Qt Quick Ex