本文概述:
本文将简要介绍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; }