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

来源:互联网 发布:ubuntu压缩zip文件 编辑:程序博客网 时间:2024/05/29 23:23

本文概述:

         本文将简要介绍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头协议信息。



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

         如下图所示。你就可以看到对应的url以及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;}












2 0
原创粉丝点击