⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpsocket.cpp

📁 功能强大的网络蜘蛛软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        }        fwrite(offset, sizeof(char), RecvBuffer+result-offset,fp);    }    fclose(fp);    close(sockfd);    return 0;}int HttpSocket::HttpProxy(){    int result=0;    int sockfd=0;    int len=0;    struct sockaddr_in address;    sockfd = socket(AF_INET, SOCK_STREAM, 0);    address.sin_family = AF_INET;    address.sin_addr.s_addr = inet_addr("203.144.160.245");    address.sin_port = htons(8080);    len = sizeof(address);    result = connect(sockfd, (struct sockaddr *)&address, len);    if (result == -1)    {        string errstr = strerror(errno);        return 2;    }    int w_rs=0;    string sendBuffer = "CONNECT 203.144.160.245:8080 HTTP/1.1\r\nUser-Agent: MyApp/0.1\r\n\r\n";    w_rs = send(sockfd,sendBuffer.c_str(),sendBuffer.size(),0);    char RecvBuffer[6001];    memset(RecvBuffer, 0, sizeof(RecvBuffer));    result = recv(sockfd,&RecvBuffer,6000,0);    RecvBuffer[result] = '\0';cout << RecvBuffer << endl;    sendBuffer = "GET /html/45.html HTTP/1.1\r\n";    sendBuffer += "Host:www.mawudi.cn\r\n";    sendBuffer += "User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)\r\n";    sendBuffer += "Cache-Control: no-cache\r\n";    sendBuffer += "Proxy-Connection: close\r\n";    sendBuffer += "Connection: close\r\n\r\n";    w_rs = send(sockfd,sendBuffer.c_str(),sendBuffer.size(),0);    while (true)    {        memset(RecvBuffer, 0, sizeof(RecvBuffer));        result = recv(sockfd,&RecvBuffer,6000,0);        cout << RecvBuffer << endl;        if (result <= 0)        {            break;        }    }    close(sockfd);    return 0;}int HttpSocket::Socks4Proxy(){    int result=0;    int sockfd=0;    int len=0;    struct sockaddr_in address;    char host[255]="221.234.24.46";    unsigned int port = 1080;    sockfd = socket(AF_INET, SOCK_STREAM, 0);    address.sin_family = AF_INET;    address.sin_addr.s_addr = inet_addr(host);    address.sin_port = htons(port);    len = sizeof(address);    result = connect(sockfd, (struct sockaddr *)&address, len);    if (result == -1)    {        string errstr = strerror(errno);        return 2;    }    char buf[100]={0};    int w_rs=0;    buf[0] = 4;    buf[1] = 1;    unsigned short int wport = htons(80);    memcpy(&buf[2],&wport,2);    //memcpy(&buf[4],&address.sin_addr.s_addr,4);    struct hostent *hostinfo=0;    hostinfo = gethostbyname("61.152.238.80");    const char *ipaddress = hostinfo->h_addr_list[0];    buf[4]=ipaddress[0];	buf[5]=ipaddress[1];	buf[6]=ipaddress[2];	buf[7]=ipaddress[3];	buf[8]=0;    w_rs = send(sockfd,(const char *)buf,9,0);    char RecvBuffer[6001]={0};    memset(RecvBuffer, 0, sizeof(RecvBuffer));    result = recv(sockfd,&RecvBuffer,6000,0);    RecvBuffer[result] = '\0';    if(RecvBuffer[0]!=0)    {        return 1;//error    }    if(RecvBuffer[1]!=90)    {        return 2;//    }    string sendBuffer = "GET /html/45.html HTTP/1.1\r\n";    sendBuffer += "Host:www.mawudi.cn\r\n";    sendBuffer += "User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)\r\n";    sendBuffer += "Cache-Control: no-cache\r\n";    sendBuffer += "Proxy-Connection: close\r\n";    sendBuffer += "Connection: close\r\n\r\n";    w_rs = send(sockfd,sendBuffer.c_str(),sendBuffer.size(),0);    while (true)    {        memset(RecvBuffer, 0, sizeof(RecvBuffer));        result = recv(sockfd,&RecvBuffer,6000,0);        cout << RecvBuffer << endl;        if (result <= 0)        {            break;        }    }    close(sockfd);    return 0;}int HttpSocket::Socks5Proxy(){    int result=0;    int sockfd=0;    int len=0;    struct sockaddr_in address;    string proxy_server = "202.105.182.87";    unsigned int proxy_port = 1080;    string username = "netmwd";    string userpwd = "netwmdnetwmdnetwmdnetwmdnetwmd";    sockfd = socket(AF_INET, SOCK_STREAM, 0);    address.sin_family = AF_INET;    address.sin_addr.s_addr = inet_addr(proxy_server.c_str());    address.sin_port = htons(proxy_port);    len = sizeof(address);    result = connect(sockfd, (struct sockaddr *)&address, len);    if (result == -1)    {        string errstr = strerror(errno);        return 1;    }    char buf[100]={0};    int w_rs=0;    buf[0] = 5;    buf[1] = 2;    buf[2] = 0;    buf[3] = 2;    w_rs = send(sockfd,(const char *)buf,4,0);    char RecvBuffer[6001]={0};    memset(RecvBuffer, 0, sizeof(RecvBuffer));    result = recv(sockfd,&RecvBuffer,6000,0);    RecvBuffer[result] = '\0';    if(RecvBuffer[0]!=5)    {        cout << strerror(errno) << endl;        return 2;    }    if(RecvBuffer[1]==2)//添加用户名密码作为验证    {        const char *puser = username.c_str();        char buf[1000]={0};        int ulen = strlen(puser);        int i = 0;        buf[i++] = 1;        buf[i++] = ulen;        int j = 0;        while(j < ulen)        {            buf[i++] = *(puser++);            j++;        }        puser = userpwd.c_str();        ulen = strlen(puser);        buf[i++] = ulen;        j = 0;        while(j < ulen)        {            buf[i++] = *(puser++);            j++;        }        w_rs = send(sockfd,(const char *)buf,i-1,0);        memset(RecvBuffer, 0, sizeof(RecvBuffer));        result = recv(sockfd,&RecvBuffer,6000,0);        if(result <= 0)        {            cout << strerror(errno) << endl;            return 3;        }        RecvBuffer[result] = '\0';        if(RecvBuffer[0]!=1)        {            return 4;        }        if(RecvBuffer[1]!=0)        {            return 5;        }    }    memset(buf, 0, sizeof(buf));    buf[0]=5;    buf[1]=1;    buf[2]=0;    buf[3]=1;    struct hostent *hostinfo=0;    hostinfo = gethostbyname("61.152.238.80");    const char *ipaddress = hostinfo->h_addr_list[0];    buf[4]=ipaddress[0];	buf[5]=ipaddress[1];	buf[6]=ipaddress[2];	buf[7]=ipaddress[3];    unsigned short int wport = htons(80);    memcpy(&buf[8],&wport,2);    w_rs = send(sockfd,(const char *)buf,10,0);    memset(RecvBuffer, 0, sizeof(RecvBuffer));    result = recv(sockfd,&RecvBuffer,6000,0);    if(result <= -1)    {        cout << strerror(errno) << endl;        return 6;    }    RecvBuffer[result] = '\0';    if(RecvBuffer[0]!=5)    {        return 7;    }    if(RecvBuffer[1]!=0)    {        return 8;    }    string sendBuffer = "GET /html/45.html HTTP/1.1\r\n";    sendBuffer += "Host:www.mawudi.cn\r\n";    sendBuffer += "User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)\r\n";    sendBuffer += "Cache-Control: no-cache\r\n";    sendBuffer += "Proxy-Connection: close\r\n";    sendBuffer += "Connection: close\r\n\r\n";    w_rs = send(sockfd,sendBuffer.c_str(),sendBuffer.size(),0);    while (true)    {        memset(RecvBuffer, 0, sizeof(RecvBuffer));        result = recv(sockfd,&RecvBuffer,6000,0);        cout << RecvBuffer << endl;        if (result <= 0)        {            break;        }    }    close(sockfd);    return 0;}int HttpSocket::RequestSSL(){    string sslhost = "91.189.90.19";    unsigned int sslport = 443;    SSL_CTX *ctx;	SSL *ssl;    int result=0;    int sockfd=0;    int len=0;    SSL_library_init();	SSL_load_error_strings();	SSLeay_add_ssl_algorithms();    ctx = SSL_CTX_new(SSLv3_client_method());    struct sockaddr_in address;    sockfd = socket(AF_INET, SOCK_STREAM, 0);    address.sin_family = AF_INET;    address.sin_addr.s_addr = inet_addr(sslhost.c_str());    address.sin_port = htons(sslport);    len = sizeof(address);    result = connect(sockfd, (struct sockaddr *)&address, len);    if (result == -1)    {        string errstr = strerror(errno);        return 1;    }    ssl=SSL_new(ctx);    SSL_set_fd(ssl,sockfd);    result=SSL_connect(ssl);    if(result == -1)	{		cout << SSL_get_error(ssl, result) << endl;		return 2;	}    string sendBuffer = "GET / HTTP/1.1\r\n";    sendBuffer += "Host:help.ubuntu.com\r\n";    sendBuffer += "User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)\r\n";    sendBuffer += "Cache-Control: no-cache\r\n";    sendBuffer += "Proxy-Connection: close\r\n";    sendBuffer += "Connection: close\r\n\r\n";    result=SSL_write(ssl,sendBuffer.c_str(), sendBuffer.size());    if(result <= 0)    {        cout << SSL_get_error(ssl, result) << endl;        return 3;    }    char RecvBuffer[6001];    while (true)    {        memset(RecvBuffer, 0, sizeof(RecvBuffer));        result = SSL_read(ssl, RecvBuffer, 6000);        cout << RecvBuffer << endl;        if (result <= 0)        {            break;        }    }    SSL_shutdown(ssl);    SSL_free(ssl);    SSL_CTX_free(ctx);    close(sockfd);    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -