1. BurpSuite抓包

1.1 设置代理

burpsuite代理设置

浏览器代理设置(chrome),其他浏览器同理。

地址栏输入 chrome://settings/

打开代理设置

设置代理端口

如果使用了代理插件,比如switchomega,可以这么设置

这样当选择使用代理选项的时候,请求包的数据也会被burpsuite拦截到。

1.2 导入证书

浏览器地址栏输入 http://burp/,如果有使用代理插件,建议先停用插件,待正确导入证书后开启使用,后续不再有影响。

点击CA Certificate,下载证书cacert.der

浏览器地址栏输入chrome://settings/

选择 “受信任的根证书颁发机构”,导入证书

下一步,选择证书,导入成功。

1.3 拦截抓包

浏览器地址栏输入地址访问,www.baidu.com

intercept is off 拦截已关闭

intercept is on 拦截已开启

可以看到请求包已经被我们拦截下来了。

选择放行Forward或者点击Intercept is on关闭拦截就会把数据包放行出去。

HTTP history中可以观察到已经拦截到的请求地址

如果有过滤的需求,可点击过滤

点击链接,会显示请求和响应等数据

下面自我发挥……

Qt发起http/https请求

1. 配置openssl

qt自身是不支持https的,如果想要使用https发起请求,要进行相关配置。

1.1 查看qt支持哪些协议

可以通过以下代码查看使用的qt版本支持哪些协议。

pro文件设置

添加network支持,QT += network

查看qt支持哪些协议

#include <QNetworkAccessManager>

#include <QDebug>


QNetworkAccessManager *manager = new QNetworkAccessManager(this);

qDebug() << manager->supportedSchemes();
2 配置ssl2.1 下载openssl

http://slproweb.com/products/Win32OpenSSL.html

选择版本,就选择这个版本了

2.2 下载后直接安装,然后加入到系统环境变量(我的安装目录是D:\OpenSSL-Win32\bin)

2.3 配置qt支持https


LIBS += -L"D:/OpenSSL-Win32/lib" -llibeay32

LIBS += -L"D:/OpenSSL-Win32/lib" -lssleay32

INCLUDEPATH += $$quote(D:/OpenSSL-Win32/include)

可以测试ssl是否配置成功或者查看ssl的错误提示。

#include <QSslSocket>

qDebug() <<"ssl:" << QSslSocket::sslLibraryBuildVersionString();

2.4 编写程序这里不必要的业务逻辑就不在写了,主要放上https请求的代码,着重关注和http请求的不同点。

bool MainWindow::SendHttp()
{
/*QNetworkAccessManager *manager = new QNetworkAccessManager(this);
qDebug() << manager->supportedSchemes();*/ qDebug() <<"ssl:" << QSslSocket::sslLibraryBuildVersionString(); QNetworkRequest request;
QSslConfiguration config; QNetworkProxy proxy;
proxy.setType(QNetworkProxy::HttpProxy);
proxy.setHostName("127.0.0.1");
proxy.setPort();
QNetworkProxy::setApplicationProxy(proxy); //url
request.setUrl(QUrl(strWww)); QSslConfiguration conf = request.sslConfiguration();
config.setPeerVerifyMode(QSslSocket::VerifyNone);
config.setProtocol(QSsl::TlsV1_0);
request.setSslConfiguration(config); //header
auto it = m_headerMap.begin();
while(it != m_headerMap.end())
{
//qDebug() << it->second.m_skey.toLatin1() << it->second.m_sval.toLatin1() << '\n';
request.setRawHeader(it->second.m_skey.toLatin1(), it->second.m_sval.toLatin1());
++it;
} //nam
QNetworkAccessManager qnam;
qDebug() << qnam.supportedSchemes(); // 开启一个局部的事件循环,等待响应结束,退出
QEventLoop loop;
QTimer timer;
//发出请求
QNetworkReply *reply = qnam.get(request);
QObject::connect(&qnam,SIGNAL(finished(QNetworkReply *)),&loop,SLOT(quit()));
//请求结束并下载完成后,退出子事件循环
QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
//超时退出
QObject::connect(&timer,SIGNAL(timeout()),&loop,SLOT(quit()));
//超时设置5秒钟
timer.start();
//开启子事件循环
loop.exec();
//.... if (reply->error() == QNetworkReply::NoError)
{
QVariant statusCodeV =
reply->attribute(QNetworkRequest::HttpStatusCodeAttribute); if(statusCodeV.toInt() ==
/*这里写了这个readAll(),
* 下面readAll()就取不出数据了
* && !reply->readAll().isEmpty()
*/
)
{ //写入文件
std::ofstream ofile;
ofile.open("test.txt");
if(ofile.fail())
{
qDebug() << "error ofile" << '\n';
}
//reply->readAll().isEmpty()
ofile << reply->readAll().toStdString();
ofile.flush();
ofile.close();
}
} return true;
}

Qt发起Http/Https请求的更多相关文章

  1. HttpClient发起Http/Https请求工具类

    <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcl ...

  2. [QT] QT5.12 HTTPS请求 TLS initialization failed

    #前言 接触到了Qt的网络编程 然后尝试对一个http页面请求获取源码 是可以的 但是当对https界面发出请求的时候总是错误 TLC什么的初始化失败 百度也是没有结果 然后网上各种方法 比如说编译O ...

  3. php 使用curl发起https请求

    今天一个同事反映,使用curl发起https请求的时候报错:“SSL certificate problem, verify that the CA cert is OK. Details: erro ...

  4. 使用curl发起https请求

    "SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:S ...

  5. http 使用curl发起https请求报错的解决办法

    使用curl发起https请求的时候报错:“SSL certificate problem, verify that the CA cert is OK. Details: error:1409008 ...

  6. 用curl发起https请求

    使用curl发起https请求 使用curl如果想发起的https请求正常的话有2种做法: 方法一.设定为不验证证书和host. 在执行curl_exec()之前.设置option $ch = cur ...

  7. 用curl获取https请求时出现错误的处理

    今天一个同事反映,使用curl发起https请求的时候报错:“SSL certificate problem, verify that the CA cert is OK. Details: erro ...

  8. requests发送HTTPS请求(处理SSL证书验证)

    1.SSL是什么,为什么发送HTTPS请求时需要证书验证? 1.1 SSL:安全套接字层.是为了解决HTTP协议是明文,避免传输的数据被窃取,篡改,劫持等. 1.2 TSL:Transport Lay ...

  9. Qt 之 使用 https发送 HTTP请求(使用OPENSSL库)

    一.简述 在使用Qt发送HTTP请求中一般使用的链接都是http://前缀,而有的服务器支持 https://前缀的链接,而Qt本身是支持https的,但是https访问需要用到SSL认证,而QT默认 ...

随机推荐

  1. java导出excel时合并同一列中相同内容的行

    一.有时候导出Excel时需要按类别导出,一大类下好几个小类,小类下又有好几个小小类,就像下图: 要实现这个也不难, 思路如下:按照大类来循环,如上就是按照张江校区.徐汇校区.临港校区三个大类循环,然 ...

  2. webpack4 系列教程(九): CSS Tree Shaking

    教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步原文地址 有空就来看看个人技术小站, 我一直都在 0. 课程介绍和资料 本次课程的代码目录(如下图所示): >>> ...

  3. ubuntu安装docker以及基本用法

    ubuntu安装docker以及基本用法 一.安装 安装前先更新apt-get源到最新版本 apt-get update 使用ubuntu自带的docker安装包安装docker apt-get in ...

  4. blfs(systemd版本)学习笔记-前几章节的脚本配置

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 记录blfs书籍前几个章节的配置内容. bash shell启动文件章节 1.切换root用户 su 2.创建/etc/prof ...

  5. Docker 轻量级图形管理软件 Portainer

    安装 docker swarm :https://www.cnblogs.com/klvchen/p/9437758.html portainer 集群启动 docker volume create ...

  6. PHP 在WIN10 下配置

    apache: https://www.apachehaus.com/ php: https://windows.php.net/ https://windows.php.net/ 集成安装配置版:h ...

  7. 【代码笔记】Web-HTML-标题

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  8. IDEA项目搭建十一——添加拦截器、忽略URL大小写、启动事件

    程序启动时如果需要添加某些初始化代码可以使用以下事件处理 import org.springframework.context.ApplicationEvent; import org.springf ...

  9. Salesforce的翻译工作台

    翻译工作台 Salesforce提供了翻译工作台.在这里管理员可以对各种数据进行翻译设置,包括对象信息.字段信息.验证规则.错误信息等. 翻译工作台集中了翻译的内容,从而使得管理员或开发者不需要在其他 ...

  10. Nginx 反向代理工作原理简介与配置详解

    Nginx反向代理工作原理简介与配置详解   by:授客  QQ:1033553122   测试环境 CentOS 6.5-x86_64 nginx-1.10.0 下载地址:http://nginx. ...