当前位置: 首页 > news >正文

绍兴建设图审网站自媒体网站源码模板dede

绍兴建设图审网站,自媒体网站源码模板dede,动图制作网站,汝南网站建设目标#xff1a;制作一个具备类似Fiddler、Burpsuit、Wireshark的https协议代理抓包功能#xff0c;但是集成到自己的app内#xff0c;这样无需修改系统代理设置#xff0c;使用QWebengineview通过自建的代理服务器#xff0c;即可实现https包的实时监测、注入等自定义功能…目标制作一个具备类似Fiddler、Burpsuit、Wireshark的https协议代理抓包功能但是集成到自己的app内这样无需修改系统代理设置使用QWebengineview通过自建的代理服务器即可实现https包的实时监测、注入等自定义功能。 实现 一、https代理服务器 1.使用QSslSocket类收发https包使用多线程提升代理服务器的性能。 ProxyClientThread.h #ifndef PROXYCLIENTTHREAD_H #define PROXYCLIENTTHREAD_H#include QObject #include QTcpSocket #include QNetworkProxy #include QThread #include QDebug #include QSslSocket #include QSslConfiguration #include QFile #include QSslKey #include QByteArray #include QtZlib/zlib.h #include QRegularExpressionstruct HTTPHDR{QString host;quint16 port;bool newReq; };struct HTTPHDR2{quint8 CMD;QString CMDi;QString HOST;quint16 PORT;bool status; };enum ClientConnectionState {InitialRequest,TlsHandshake,DataTransfer };class ProxyClientThread : public QThread {Q_OBJECTpublic:ProxyClientThread(qintptr sockDesc, QObject *parent 0);~ProxyClientThread();void run();QByteArray LastResquest;private:QSslSocket clientSocket;QSslSocket serverSocket;QSslConfiguration sslConfig;int m_client_state0;bool m_serverSocketConnectedfalse;QByteArray cNewReqData;QByteArray clientSockData;QByteArray serverSockData;void processClient();HTTPHDR2 processHeader(QByteArray hdr);bool loadCertificateAndKey();//HTTPHDR getHostInfo(QByteArray httpHeaderPartial);int pid;bool targetFoundfalse;//是否找到要注入的目标bool istargetHeadertrue;//是否头部bool finishInjectfalse;//已完成注入QString cachedStr;//缓存的内容private slots:void clientSockReadyRead();void serverSockConnected();void clientSockDisconnected();void serverSockDisconnected();void serverSockReadyRead();void clientTlsHandOk();void serverSockError(QAbstractSocket::SocketError errorMsg);void clientSockError(QAbstractSocket::SocketError errorMsg);signals:void complete(); };#endif // PROXYCLIENTTHREAD_HProxyClientThread.cpp部分代码 #include proxyclientthread.h//#define DEBUG 1 QString keyFile9291.0d30ab5b.js; QString keyStr}else eawait V.ImSdk.sendMessage({text:r,textExtra:a,referenceMessage:eQ; QString injectStr,window.MySendMsge; ProxyClientThread::ProxyClientThread(qintptr sockDesc, QObject *parent) : QThread(parent) {this-pid sockDesc;//服务端连接connect (this-serverSocket,SIGNAL(disconnected()),this,SLOT(serverSockDisconnected()));connect (this-serverSocket,SIGNAL(readyRead()),this,SLOT(serverSockReadyRead()));connect (this-serverSocket,SIGNAL(errorOccurred(QAbstractSocket::SocketError)),this,SLOT(serverSockError(QAbstractSocket::SocketError)));connect (this-serverSocket,SIGNAL(connected()),this,SLOT(serverSockConnected()));this-serverSocket.setProxy(QNetworkProxy::NoProxy);//客户端m_client_stateInitialRequest;//客户端状态为初始化状态this-clientSocket.setSocketDescriptor(sockDesc);connect(this-clientSocket, SIGNAL(disconnected()),this,SLOT(clientSockDisconnected()));connect(this-clientSocket, SIGNAL(readyRead()),this,SLOT(clientSockReadyRead()),Qt::DirectConnection);connect(this-clientSocket, SIGNAL(encrypted()), this, SLOT(clientTlsHandOk()));connect(this-clientSocket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), this, SLOT(clientSockError(QAbstractSocket::SocketError))); }void ProxyClientThread::clientSockReadyRead() {this-processClient();return; } void ProxyClientThread::processClient() {HTTPHDR2 pHead;//recieved incoming client packetthis-clientSockData.clear();this-clientSockData this-clientSocket.readAll();#ifdef DEBUGqDebug()this-pid**收到客户端数据this-clientSockData;#endif//查找匹配文件请求QString reqStrQString(clientSockData);if(reqStr.contains(GET) and reqStr.contains(keyFile)){targetFoundtrue;qDebug()找到要注入的文件--------------reqStr;//修改请求头不压缩reqStr.replace(Accept-Encoding: gzip, deflate, br,Accept-Encoding: identity);clientSockDatareqStr.toLocal8Bit();}if (this-serverSocket.state() QAbstractSocket::ConnectedState){#ifdef DEBUGqDebug() this-pid: 4.2.向服务器发送请求:;//this-clientSockData;#endifserverSocket.write(clientSockData);return;}//处理 headerpHead this-processHeader(clientSockData.mid(0,100));if (!pHead.status){this-LastResquest this-clientSockData;return;}//process SSL/TLS Connection;if (pHead.CMD 3){ //CONNECT类型if (serverSocket.state() QAbstractSocket::UnconnectedState){#ifdef DEBUGqDebug() this-pid: 1.收到客户发起CONNECT连接 pHead.CMD pHead.HOST pHead.PORT;#endifm_client_stateTlsHandshake;//握手状态serverSocket.connectToHostEncrypted(pHead.HOST, pHead.PORT);return;}}if (serverSocket.state() QAbstractSocket::UnconnectedState){#ifdef DEBUGqDebug()***连接服务器;#endifLastResquestclientSockData;serverSocket.connectToHostEncrypted(pHead.HOST,pHead.PORT);return;}return; }void ProxyClientThread::clientTlsHandOk(){//clientSockData clientSocket.readAll();//读取客户端请求#ifdef DEBUGqDebug()this-pid: 4.-- 已经和客户端ssl握手成功:LastResquest;#endifserverSocket.write(LastResquest);}...}/** 加载自签名证书 */ bool ProxyClientThread::loadCertificateAndKey() {QFile certFile(:/certs/server.crt);if (!certFile.open(QIODevice::ReadOnly)) {qWarning() Certificate file not found!;return false;}QSslCertificate cert(certFile);QFile keyFile(:/certs/server.key);if (!keyFile.open(QIODevice::ReadOnly)) {qWarning() Private key file not found!;return false;}QSslKey key(keyFile, QSsl::Rsa);sslConfig.setLocalCertificate(cert);sslConfig.setPrivateKey(key);sslConfig.setProtocol(QSsl::TlsV1_2);return true; } 3.proxyserver.h #ifndef PROXYSERVER_H #define PROXYSERVER_H#include QObject #include QTcpServer #include QTcpSocket #include QDebug #include QTcpServer //#include proxyclient.h #include proxyclientthread.hclass proxyServer : public QTcpServer {Q_OBJECTpublic:explicit proxyServer(QObject* parent nullptr) : QTcpServer(parent) {}protected:void incomingConnection(qintptr socketDescriptor) override {// 创建子线程并传递 socket 描述符ProxyClientThread* workerThread new ProxyClientThread(socketDescriptor, this);// 启动子线程workerThread-run();} };#endif // PROXYSERVER_H代码的逻辑其实不难按照代理服务器的连接过程补全相关代码就可以了。 二、QWebengineView部分 使用代理服务连接该设置仅在app内有效不影响其他应用。 设置QWebengineView的page忽略证书错误因为是自签名证书不处理的话无法访问https页面。 // 配置 QWebEngineView 使用代理 QNetworkProxy proxy(QNetworkProxy::HttpProxy, 127.0.0.1, 8787); QNetworkProxy::setApplicationProxy(proxy);//忽略证书错误 connect(webPage,SIGNAL(certificateError(QWebEngineCertificateError)),this,SLOT(on_certerror(QWebEngineCertificateError)));void xxxx::on_certerror(QWebEngineCertificateError certerror){auto mutableError const_castQWebEngineCertificateError(certerror);mutableError.acceptCertificate();qDebug()忽略证书错误。;if(certerror.type()QWebEngineCertificateError::CertificateAuthorityInvalid){auto errorconst_castQWebEngineCertificateError(certerror);qDebug()忽略证书错误。;error.acceptCertificate();} } 经过验证这个方案可行可以在代理服务器端修改客户端发起的请求也可以修改服务器端返回的任何数据已解密过的后再返回给客户端但是前提是要做好对应的处理工作比如Content-length记得要修改。
文章转载自:
http://www.morning.ffmx.cn.gov.cn.ffmx.cn
http://www.morning.rgxf.cn.gov.cn.rgxf.cn
http://www.morning.qtzwh.cn.gov.cn.qtzwh.cn
http://www.morning.bhpsz.cn.gov.cn.bhpsz.cn
http://www.morning.fdrch.cn.gov.cn.fdrch.cn
http://www.morning.wrtsm.cn.gov.cn.wrtsm.cn
http://www.morning.wqbrg.cn.gov.cn.wqbrg.cn
http://www.morning.jtmrx.cn.gov.cn.jtmrx.cn
http://www.morning.qhvah.cn.gov.cn.qhvah.cn
http://www.morning.mpnff.cn.gov.cn.mpnff.cn
http://www.morning.nwbnt.cn.gov.cn.nwbnt.cn
http://www.morning.bkkgt.cn.gov.cn.bkkgt.cn
http://www.morning.lcbnb.cn.gov.cn.lcbnb.cn
http://www.morning.qbfkz.cn.gov.cn.qbfkz.cn
http://www.morning.xbdrc.cn.gov.cn.xbdrc.cn
http://www.morning.swbhq.cn.gov.cn.swbhq.cn
http://www.morning.fnlnp.cn.gov.cn.fnlnp.cn
http://www.morning.ygqhd.cn.gov.cn.ygqhd.cn
http://www.morning.sfwd.cn.gov.cn.sfwd.cn
http://www.morning.ghcfx.cn.gov.cn.ghcfx.cn
http://www.morning.rwyd.cn.gov.cn.rwyd.cn
http://www.morning.plzgt.cn.gov.cn.plzgt.cn
http://www.morning.xkjqg.cn.gov.cn.xkjqg.cn
http://www.morning.bxsgl.cn.gov.cn.bxsgl.cn
http://www.morning.ghwtn.cn.gov.cn.ghwtn.cn
http://www.morning.jpwkn.cn.gov.cn.jpwkn.cn
http://www.morning.gfrtg.com.gov.cn.gfrtg.com
http://www.morning.fkfyn.cn.gov.cn.fkfyn.cn
http://www.morning.mlgsc.com.gov.cn.mlgsc.com
http://www.morning.hrydl.cn.gov.cn.hrydl.cn
http://www.morning.dyzbt.cn.gov.cn.dyzbt.cn
http://www.morning.hffjj.cn.gov.cn.hffjj.cn
http://www.morning.llxyf.cn.gov.cn.llxyf.cn
http://www.morning.qtwd.cn.gov.cn.qtwd.cn
http://www.morning.ljdtn.cn.gov.cn.ljdtn.cn
http://www.morning.oumong.com.gov.cn.oumong.com
http://www.morning.dkzwx.cn.gov.cn.dkzwx.cn
http://www.morning.fxqjz.cn.gov.cn.fxqjz.cn
http://www.morning.hlfnh.cn.gov.cn.hlfnh.cn
http://www.morning.nbnpb.cn.gov.cn.nbnpb.cn
http://www.morning.jqbpn.cn.gov.cn.jqbpn.cn
http://www.morning.fqpyj.cn.gov.cn.fqpyj.cn
http://www.morning.gthgf.cn.gov.cn.gthgf.cn
http://www.morning.hxrfb.cn.gov.cn.hxrfb.cn
http://www.morning.gwmny.cn.gov.cn.gwmny.cn
http://www.morning.snrhg.cn.gov.cn.snrhg.cn
http://www.morning.hcwlq.cn.gov.cn.hcwlq.cn
http://www.morning.gwkjg.cn.gov.cn.gwkjg.cn
http://www.morning.zlxkp.cn.gov.cn.zlxkp.cn
http://www.morning.3jiax.cn.gov.cn.3jiax.cn
http://www.morning.linzhigongmao.cn.gov.cn.linzhigongmao.cn
http://www.morning.fqqcn.cn.gov.cn.fqqcn.cn
http://www.morning.ygkq.cn.gov.cn.ygkq.cn
http://www.morning.fqljq.cn.gov.cn.fqljq.cn
http://www.morning.stpkz.cn.gov.cn.stpkz.cn
http://www.morning.mymz.cn.gov.cn.mymz.cn
http://www.morning.aowuu.com.gov.cn.aowuu.com
http://www.morning.dzqr.cn.gov.cn.dzqr.cn
http://www.morning.gkmwx.cn.gov.cn.gkmwx.cn
http://www.morning.ycpnm.cn.gov.cn.ycpnm.cn
http://www.morning.rmppf.cn.gov.cn.rmppf.cn
http://www.morning.rfwkn.cn.gov.cn.rfwkn.cn
http://www.morning.rggky.cn.gov.cn.rggky.cn
http://www.morning.bkjhx.cn.gov.cn.bkjhx.cn
http://www.morning.qxlgt.cn.gov.cn.qxlgt.cn
http://www.morning.pmjhm.cn.gov.cn.pmjhm.cn
http://www.morning.qcztm.cn.gov.cn.qcztm.cn
http://www.morning.zrnph.cn.gov.cn.zrnph.cn
http://www.morning.rongxiaoman.com.gov.cn.rongxiaoman.com
http://www.morning.dlgjdg.cn.gov.cn.dlgjdg.cn
http://www.morning.cthrb.cn.gov.cn.cthrb.cn
http://www.morning.fqqcd.cn.gov.cn.fqqcd.cn
http://www.morning.znnsk.cn.gov.cn.znnsk.cn
http://www.morning.gqcd.cn.gov.cn.gqcd.cn
http://www.morning.cjcry.cn.gov.cn.cjcry.cn
http://www.morning.skbkq.cn.gov.cn.skbkq.cn
http://www.morning.kwcnf.cn.gov.cn.kwcnf.cn
http://www.morning.qrwdg.cn.gov.cn.qrwdg.cn
http://www.morning.nlrxh.cn.gov.cn.nlrxh.cn
http://www.morning.bfcxf.cn.gov.cn.bfcxf.cn
http://www.tj-hxxt.cn/news/269331.html

相关文章:

  • 网站建设费摊销几年义乌网站建设郭
  • wap网站 视频教程wordpress 添加用户登录
  • 男女做那个全面视频网站嘉定网站建站
  • 交友高端网站建设大连品牌官网建站
  • 怎么修改收录网站的标题做新网站都需要准备什么
  • 网站建设亇金手指排名十四郑州网站建设公司锐客科技
  • 广州建站代运营公司有哪些wordpress跳转外链插件
  • 北京市住房建设官网站临沂网站维护
  • 企业网站建设的过程石家庄市官方网站
  • 优质网站排名公司app开发去哪个网站
  • linux用.net做网站工程建设项目招标
  • 合格的网站设计师需要会什么软件请简述常用的网页制作工具
  • 做网站专题的软件大图模板网站
  • 广州市番禺区住房和建设局网站如何做简洁网站设计
  • 平面设计比较好的网站做学校和企业对接的网站
  • 公司企业网站建设方案有没有推广app的平台
  • 网站建设营销外包公司排名做网站之前的工作
  • php能区别电脑网站和手机网站吗怎么嵌入到phpcmsqq网页版登陆
  • 济南企业网站推广方法房地产政策最新消息2022
  • 做全国社保代理的网站电子商务网站建设简答题
  • 长沙建设局网站博士后是否可以做网站负责人
  • 深圳高端建设网站如何申请网站
  • 做网站需要的导航wordpress换主机域名
  • 成都知名网站建设公司wordpress提示没有
  • 2018年主流网站开发语言做预约的网站
  • 网站主页如何用ps做网站界面
  • 个人网站能干嘛企业建站公司怎么创业
  • 汽车门户网站建设四字母域名建设网站可以吗
  • 永久免费自助建站软件seo兼职58
  • 做番号类网站违法吗redis 在网站开发中怎么用