设为首页 加入收藏

TOP

C++ LibCurl 库的使用方法(二)
2023-08-26 21:10:30 】 浏览:193
Tags:LibCurl 方法
#pragma comment (lib,"ws2_32.lib") #pragma comment (lib,"Crypt32.lib") using namespace std; // 设置CURLOPT_WRITEFUNCTION回调函数,返回为空屏蔽输出 static size_t write_data(char *d, size_t n, size_t l, void *p) { return 0; } // 获取网站返回值 void GetStatus(char *UrlPage) { CURLcode return_code; // 初始化模块 return_code = curl_global_init(CURL_GLOBAL_WIN32); if (CURLE_OK != return_code) { return; } // 初始化填充请求头 struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0)"); headers = curl_slist_append(headers, "Referer: https://www.lyshark.com"); // 初始化请求库 CURL *easy_handle = curl_easy_init(); if (NULL != easy_handle) { // CURLOPT_HTTPHEADER 自定义设置请求头 curl_easy_setopt(easy_handle, CURLOPT_HTTPHEADER, headers); // CURLOPT_URL 自定义请求的网站 curl_easy_setopt(easy_handle, CURLOPT_URL, UrlPage); // CURLOPT_WRITEFUNCTION 设置回调函数,屏蔽输出 curl_easy_setopt(easy_handle, CURLOPT_WRITEFUNCTION, write_data); // 执行CURL访问网站 return_code = curl_easy_perform(easy_handle); char *ipAddress = { 0 }; // CURLINFO_PRIMARY_IP 获取目标IP信息 return_code = curl_easy_getinfo(easy_handle, CURLINFO_PRIMARY_IP, &ipAddress); if ((CURLE_OK == return_code) && ipAddress) { std::cout << "目标IP: " << ipAddress << std::endl; } long retcode = 0; // CURLINFO_RESPONSE_CODE 获取目标返回状态 return_code = curl_easy_getinfo(easy_handle, CURLINFO_RESPONSE_CODE, &retcode); if ((CURLE_OK == return_code) && retcode) { std::cout << "返回状态码: " << retcode << std::endl; } } curl_easy_cleanup(easy_handle); curl_global_cleanup(); } int main(int argc, char *argv[]) { GetStatus("https://www.lyshark.com"); system("pause"); return 0; }

运行上述代码,则可以获取到www.lyshark.com目标主机的IP地址以及页面返回状态,如下图所示;

当然该库同样支持POST请求方式,在使用POST请求时我们可以通过CURLOPT_COOKIEFILE参数指定Cookie参数,通过CURLOPT_POSTFIELDS指定POST的数据集,而如果需要使用代理模式则可以通过CURLOPT_PROXY方式来指定代理地址,

#define CURL_STATICLIB
#define BUILDING_LIBCURL
#include <iostream>
#include "curl/curl.h"

#pragma comment (lib,"libcurl_a.lib")
#pragma comment (lib,"wldap32.lib")
#pragma comment (lib,"ws2_32.lib")
#pragma comment (lib,"Crypt32.lib")

using namespace std;

bool SendPost(char *Url, char *Cookie, char *PostVal)
{
	CURL *curl;
	CURLcode res;

	// 初始化库
	curl = curl_easy_init();
	if (curl)
	{
		// 设置请求头
		struct curl_slist *headers = NULL;
		headers = curl_slist_append(headers, "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0)");
		headers = curl_slist_append(headers, "Referer: https://www.lyshark.com");

		// 设置请求头
		curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);

		// 指定URL
		curl_easy_setopt(curl, CURLOPT_URL, Url);

		// 指定cookie参数
		curl_easy_setopt(curl, CURLOPT_COOKIEFILE, Cookie);

		// 指定post内容
		curl_easy_setopt(curl, CURLOPT_POSTFIELDS, PostVal);

		// 是否代理
		// curl_easy_setopt(curl, CURLOPT_PROXY, "10.99.60.201:8080");
		res = curl_easy_perform(curl);
		curl_easy_cleanup(curl);
	}
	return true;
}

int main(in
首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【Qt6】工具提示以及调色板设置 下一篇QT入门学习记录01

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目