64,648
社区成员
发帖
与我相关
我的任务
分享
#include <curl/curl.h>
#pragma comment(lib,"curllib.lib")
#define POSTURL "https://login.xiami.com/member/login"
#define POSTFIELDS "_xiamitoken=819938e694aa2024c49f2a0c362831e3&done=http://www.xiami.com&type=&email=112121212@qq.com&password=passwd&submit=登录"
#define FILENAME "curlposttest.log"
size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp);
int main(int argc, char *argv[]) {
CURL *curl;
CURLcode res;
FILE *fptr;
struct curl_slist *http_header = NULL;
if ((fptr = fopen(FILENAME, "w")) == NULL) {
fprintf(stderr, "fopen file error: %s\n", FILENAME);
exit(1);
}
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, POSTURL);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, POSTFIELDS);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fptr);
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_HEADER, 1);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curl,CURLOPT_COOKIEJAR,"cookie_login.txt");//保存登陆后的cookie
curl_easy_setopt(curl,CURLOPT_COOKIEFILE,"cookie_login.txt");//提交第一步保存的cookie
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
curl_easy_setopt(curl, CURLOPT_CAINFO, "ca-bundle.crt"); //设置证书路径
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 1L);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
system("pause");
}
size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp) {
FILE *fptr = (FILE*)userp;
return fwrite(buffer, size, nmemb, fptr);
}
<script>
_xiamitoken = '4d34e7e68d0772e9497a4891d1f54e21';
</script>
这个应该是服务端随机生成的,用来校验。
所以你要先用libcurl获取
https://login.xiami.com/member/login
这个页面,取出_xiamitoken
然后再去用这个取到的token模拟登陆。