zoukankan      html  css  js  c++  java
  • libcurl 设置代理,通过Fiddler可以进行抓包

    转载:https://blog.csdn.net/jaryguo/article/details/53021923

    转载:https://www.cnblogs.com/miantest/p/7289694.html

    转载:https://www.cnblogs.com/joshua317/p/8670923.html

    转载:https://www.cnblogs.com/woaixuexi9999/p/9247705.html(Fiddler配置教程)

    转载:https://blog.csdn.net/u013908944/article/details/85076833(Fidler抓postman模拟请求的包)

    转载:https://www.cnblogs.com/TankXiao/archive/2013/01/08/2818542.html(HTTP协议 (六)状态码详解)

    转载:https://blog.csdn.net/wangjun5159/article/details/54024413(fiddler 图标解释)

    用libcurl在项目开发过程中,调试阶段需要进行抓包测试,但Fiddler不能收到应用的Http连接。

    Google了一下,因为应用用了libcurl的接口来创建HTTP连接,如果要使用Fiddler,需要在代码中插入类似如下的代码:

    curl_easy_setopt(m_curl, CURLOPT_PROXY, "127.0.0.1:8888");

    其中8888是Fiddler默认设置的一个监听端口,如果在Option中修改了,则需要替换为响应的端口号。

    代理就是在客户端和服务器之间设置一道关卡,客户端先将请求数据发送出去后,代理服务器会将数据包进行拦截,代理服务器再冒充客户端发送数据到服务器;同理,服务器将响应数据返回,代理服务器也会将数据拦截,再返回给客户端。

    void Test()
    {
        CURL* curl;
        char *url = "http://develop.test.com";
        std::stringstream out;
        curl = curl_easy_init();
    
        //设置url
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_PROXY, "127.0.0.1:8888");
        curl_easy_setopt(curl, CURLOPT_POST, 0);//设置为非0表示本次操作为POST
    
        // 设置接收数据的处理函数和存放变量
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);//设置回调函数
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &out);
    
        // 执行HTTP GET操作
        CURLcode res = curl_easy_perform(curl);
        if (res != CURLE_OK) {
            fprintf(stderr, "curl_easy_perform() failed: %s
    ", curl_easy_strerror(res));
        }
    
        // 接受数据存放在out中,输出之
        //cout << out.str() << endl;
        string str_json = out.str();
    
    
        printf("%s", str_json.c_str());
        curl_easy_cleanup(curl);
    
    }

    注:如果代码中加入了设置代理,只有在抓包工具运行的情况下,http才能请求成功,进而能抓到数据;否则http会请求失败;

    WireShark则纯粹是在底层监听计算机的所有出入数据(需要安装WinPCap),什么数据都能检测到。

    WireShark的使用教程:https://www.cnblogs.com/Jerry-zhao2110/p/8282427.html

    二、Fiddler 抓取https请求配置

    转载:https://www.cnblogs.com/joshua317/p/8670923.html

    1.清除C:UsersAdministratorAppDataRoamingMicrosoftCryptoRSA 目录下所有文件(首次安装fiddler请忽略)

    2.清除电脑上的根证书,WIN+R快捷键,输入:certmgr.msc, 然后回车,查找所有fiddler证书,然后删除。(首次安装fiddler请忽略)

    3.清除浏览器上的证书文件 ,此处需要仔细查找带有FiddlerRoot的字样,并删除,以谷歌浏览器为例说明,在浏览器上输入: chrome://settings/,(首次安装fiddler请忽略)

     4.打开fiddler,点击工具栏中的Tools—>Options,点击Actions,选择最后一项,Reset All certificates,然后关闭

    注意:以上步骤假设是已经安装fiddler的情况下需要做的处理 ,若已安装,建议执行上述步骤,然后进行重新安装;

    用Fiddler抓libcurl发起的https的包,需要在代码中设置

    /*
            * If you want to connect to a site who isn't using a certificate that is
            * signed by one of the certs in the CA bundle you have, you can skip the
            * verification of the server's certificate. This makes the connection
            * A LOT LESS SECURE.
            *
            * If you have a CA cert for the server stored someplace else than in the
            * default bundle, then the CURLOPT_CAPATH option might come handy for
            * you.
    */
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);

     Fiddler中session前面快捷图标的含义

  • 相关阅读:
    [CocosCreator]-12-音频播放
    [CocosCreator]-11-文本输入-EditBox 组件
    [CocosCreator]-10-Button(按钮)
    深入理解正则表达式高级教程
    正则表达式匹配次数
    如何理解正则表达式匹配过程
    正则表达式工具RegexBuddy使用教程
    正则表达式批量替换通过$
    正则前面的 (?i) (?s) (?m) (?is) (?im)
    Net操作Excel_NPOI
  • 原文地址:https://www.cnblogs.com/chechen/p/9934586.html
Copyright © 2011-2022 走看看