分类信息采集

35 阅读1分钟
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>
#include <arpa/inet.h>

#define MAX_HOSTNAME 100
#define MAX_PROXY 200

int main()
{
    char hostname[MAX_HOSTNAME];
    char proxy[MAX_PROXY];

    // 获取代理信息
    strcpy(proxy, "www.duoip.cn:8000");

    // 解析代理信息
    char proxy_host[100];
    char proxy_port[10];
    int proxy_len = strlen(proxy);
    int i = 0;
    while (i < proxy_len)
    {
        if (proxy[i] == ':')
        {
            // 跳过冒号
            i++;
        }
        else if (proxy[i] == ' ')
        {
            // 跳过空格
            i++;
        }
        else
        {
            // 记录当前字符
            proxy_host[i] = proxy[i];
            i++;
        }
    }
    proxy_host[i] = '\0';
    proxy_port[i] = '\0';

    // 获取目标网站的 hostname
    hostname[0] = '\0';

    // 解析 hostname
    char *p = hostname;
    while (*p)
    {
        if (*p == '.')
        {
            // 跳过点号
            p++;
        }
        else
        {
            // 记录当前字符
            *p = *p - 'a' + 'A';
            p++;
        }
    }

    // 构建完整的代理信息
    char proxy_info[MAX_PROXY];
    if (proxy_len > 1)
    {
        // 代理信息为 proxy_host:proxy_port
        snprintf(proxy_info, MAX_PROXY, "%s:%s", proxy_host, proxy_port);
    }
    else
    {
        // 代理信息为 proxy_host
        snprintf(proxy_info, MAX_PROXY, "%s", proxy_host);
    }

    // 发送请求
    char request[] = "jshk.com.cn";
    request[sizeof(request) - 1] = '\0';
    sendto(sockfd, request, sizeof(request), 0, (struct sockaddr*)(&sin), sizeof(sin));
    int response_len = recv(sockfd, response, MAX_LENGTH, 0);
    response[response_len] = '\0';

    // 输出结果
    printf("Response: %s\n", response);

    return 0;
}

这个 C 程序使用了 socket API 来发送 HTTP 请求。首先,程序获取了代理信息,然后解析代理信息,获取了代理服务器的 hostname 和 port。然后,程序构建了完整的代理信息,并使用这个信息发送了 HTTP 请求。最后,程序接收了服务器的响应,并输出了响应内容。

程序中的 MAX_HOSTNAMEMAX_PROXY 是定义的最大 hostname 和 proxy 长度。在实际使用中,这两个值需要根据实际情况进行调整。

huake_00063_.jpg