Curl库加wireshark抓取表单并模拟web的post方法

本文概述:

         本文将简要介绍wireshark抓包web数据以及模拟post、get方法。

         在当下的各种应用中,在web方面,很多功能会经常使用到post以及getweb方法。

         其中有这样一种情况,在我们的产品或者项目中,供应商提供了web的应用界面,可以控制,但是我们需要将这样的应用做到自己的app中,这样的话,如果获得web功能对应url、post数据、以及模拟方法成为关键。

          本文将简要介绍这种抓包web数据以及模拟post、get方法。本文出自csdn-固本培元--leoluopy@gmail.com。

开始:

wireshark抓包

         打开wireshark后,选择对应网卡,将获取很多数据,filter填写http过滤其他数据。当点击你想要模拟的post表单后,post的网络数据就被wireshark捕获了。当然由于数据很多,需要点击 Info 按钮 排序,这样更好找到对应捕获的post数据。如下图所示,数据以及相对于的http头协议信息。

Curl库加wireshark抓取表单并模拟web的post方法


          在抓取到如上图信息后,展开Hypertext Transfer Protocl 以及 Line-based text data.

         如下图所示。你就可以看到对应的url以及post的真实数据。他们就是我们下文需要模拟发送的地址以及模拟数据了。


Curl库加wireshark抓取表单并模拟web的post方法



下载编译curl,编写模拟函数


           仅仅抓到数据包以及获取对应的url地址还不足够,我们还需要得到对应的模拟方法。目前参考方法很多。有Qt的网络库,有MFC对应的http接口,还有很多对应方法。就笔者而言,认为linux开源组织的curl一套方案,简单高效,可移植性高。因此选择了这种方法。如下,是笔者封装的curl发送post方法的接口。

           当然了,在这之前,你需要下载curl库,编译他,然后在你的工程中载入curl库以及头文件。都是很简单的过程,这里不再阐述。祝你好运。本文出自csdn-固本培元。

#include <string.h>
#include <stdio.h>
#include <curl/curl.h>

int CurlPost(const char* url,const char* usr,const char *password,const char* data)
{
  CURL *curl;
  CURLcode res;

  char auth[200];memset(auth,0,200);

  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL,url );
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
    curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);

    curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt");

    strcat(auth,usr);
    strcat(auth,":");
    strcat(auth,password);

    curl_easy_setopt(curl, CURLOPT_USERPWD, auth);

    /* Now specify the POST data */
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS,data );

    /* Perform the request, res will get the return code */
    res = curl_easy_perform(curl);
    /* Check for errors */
    if(res != CURLE_OK){
      printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
              curl_easy_strerror(res));
    }
    /* always cleanup */
    curl_easy_cleanup(curl);
  }
  return 0;
}












Curl库加wireshark抓取表单并模拟web的post方法,布布扣,bubuko.com

Curl库加wireshark抓取表单并模拟web的post方法

上一篇:be a geek-从零开始学编程:无处不在的Javascript


下一篇:返璞归真 asp.net mvc (2) - 路由(System.Web.Routing)