|
网站菜单
|
日记 - DCMS CHECKIN
// Copyright 2026 ZiyangBai All Rights Reserved #define _CRT_SECURE_NO_WARNINGS #include <windows.h> #include <winhttp.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #pragma comment(lib, "winhttp.lib") #define HOST L"dcms.netlib.re" #define LOGIN_PATH L"/api.php?action=login" #define CHECKIN_PATH L"/user/daily_checkin.php" #define USERNAME "" #define PASSWORD "" char response[200000]; char token[2048]; wchar_t wbuffer[200000]; void PrintUTF8(const char* utf8) { int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0); MultiByteToWideChar(CP_UTF8, 0, utf8, -1, wbuffer, len); wprintf(L"%ls ", wbuffer); } void ReadResponse(HINTERNET hRequest) { DWORD dwSize = 0; DWORD dwDownloaded = 0; char buffer[8192]; response[0] = 0; do { if (!WinHttpQueryDataAvailable(hRequest, &dwSize)) break; if (dwSize == 0) break; if (!WinHttpReadData(hRequest, buffer, min(dwSize, sizeof(buffer) - 1), &dwDownloaded)) break; buffer[dwDownloaded] = 0; strcat(response, buffer); } while (dwSize > 0); } int ExtractToken() { char* start = strstr(response, ""token":""); if (!start) return 0; start += 9; char* end = strchr(start, '"'); if (!end) return 0; strncpy(token, start, end - start); token[end - start] = 0; return 1; } void ShowResult() { if (strstr(response, "已签到") || strstr(response, "今天已经")) { printf(" Already! "); return; } if (strstr(response, "签到成功") || strstr(response, "获得")) { printf(" OK!Checkin! "); return; } if (strstr(response, "Login")) { printf(" Bad! "); return; } printf(" Q! "); PrintUTF8(response); } int main() { SetConsoleOutputCP(CP_UTF8); printf("Starting Checkin "); HINTERNET hSession = WinHttpOpen( L"Kodak/1.0", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0 ); if (!hSession) { printf("WinHttpOpen failed "); return 1; } HINTERNET hConnect = WinHttpConnect( hSession, HOST, INTERNET_DEFAULT_HTTPS_PORT, 0 ); if (!hConnect) { printf("Connect failed "); return 1; } HINTERNET hLogin = WinHttpOpenRequest( hConnect, L"POST", LOGIN_PATH, NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE ); DWORD flags = SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_CERT_DATE_INVALID | SECURITY_FLAG_IGNORE_CERT_CN_INVALID | SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE; WinHttpSetOption(hLogin, WINHTTP_OPTION_SECURITY_FLAGS, &flags, sizeof(flags)); 评论: (3) |