代理服务器的搜索是如何实现的! RT 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该是搜索对方的端口号能否连接吧?如HTTP代理:443 说白了,就一个一个的试,比如你试某个IP和端口能否请求到网页。附一个别人的代码:------------------------------cut here isbase----------------------------- /* this codez describe how to search a PROXY server * * by * * zer9 * ==== * [email protected] * * test on slackware 2.0.33 * cc proxyht.c -o proxyht.c */#include <stdio.h>#include <string.h>#include <sys/types.h>#include <netinet/in.h>#include <netdb.h>#include <sys/socket.h>#include <signal.h>#define DefaultProxyPort 8080 //default proxy port 8080#define MSG1 "GET http://www.maxtor.com HTTP/1.1\n" //1 --change (1 ,2)#define MSG2 "Host: www.maxtor.com\n" //2 to search#define MSG3 "Accept: */*\n" // other sit e #define MSG4 "Pragma: no-cache\n"#define MSG5 "User-Agent: ProxyHT 0.01\n\n" #define KEYWORD "Maxtor Corp" // this iskeyword #define TIMEOUT 30void alarm_handler(int w){alarm(0);printf("Time Out!\n");}int main(int argc,char *argv[]){struct in_addr Target;struct hostent *he;struct sockaddr_in sin;int s,ProxyPort;char recvbuf1[5000];char recvbuf2[10000];if(argc==2)ProxyPort=DefaultProxyPort;elseif(argc==3)ProxyPort=atoi(argv[2]);else{printf("ProxyHT 0.01 by zer9 mail:[email protected]\n");printf("usage: %s [proxy_port]\n",argv[0]);return 0;}if((he=gethostbyname(argv[1]))!=NULL)bcopy(he->h_addr,(char *)&Target.s_addr,he->h_length);elseTarget.s_addr=inet_addr(argv[1]);if(Target.s_addr==-1){perror("gethostbyname");return -1;}printf("ProxyHT 0.01 by zer9 mail:[email protected]\n");if((s=socket(AF_INET,SOCK_STREAM,0))<0){perror("socket");return -1;}sin.sin_family=AF_INET;sin.sin_port=htons(ProxyPort);sin.sin_addr.s_addr=Target.s_addr;if(connect(s,(struct sockaddr*)&sin,sizeof(sin))<0){perror("connect");return -1;}bzero(recvbuf1,sizeof(recvbuf1));bzero(recvbuf2,sizeof(recvbuf2));printf("%s start verifying... waiting a while please\n",argv[1]);signal(SIGALRM,alarm_handler);send(s,MSG1,strlen(MSG1),0);send(s,MSG2,strlen(MSG2),0);send(s,MSG3,strlen(MSG3),0);send(s,MSG4,strlen(MSG4),0);send(s,MSG5,strlen(MSG5),0);1alarm(TIMEOUT);recv(s,recvbuf1,sizeof(recvbuf1),0);recv(s,recvbuf2,sizeof(recvbuf2),0);alarm(0);//if u want to debug , open follow two lines//printf("%s\n",recvbuf1);//printf("%s\n",recvbuf2);if(strstr(recvbuf1,"HTTP/1.1 200")){if(strstr(recvbuf2,KEYWORD)){printf("hahaha... there's something found! \n");close(s); return 0;}}else{if(strstr(recvbuf1,"HTTP/1.1 404")){printf("woo! I found one,but dont free...\n");close(s);return 0;}}close(s);printf("sorry.dont hit me please,nexttime i *MUST* find one.\n");return 0;}---Cut Here---------------http://www.isbase.com------------------------------ socket4、socket5的试验怎么做呢? MFC 窗口界面如何自定义窗口形状背景,设置自定义的最大化、最小化、关闭按钮的样式! socket编程连接问题 winpcap抓包问题 共享内存问题,请帮忙 ado 新增记录? 为什么? VC里有没有这样的绘图控件 关于替换windowsxp的GINA 进程问题(时间,内存) 【一个老问题】获得硬盘系列号 如何让多个RADIO执行同一个函数呢? DLL的问题~!我想在其它人机子上不用DLL就可以远行。怎样加载到EXE里啊?
------------------------------cut here isbase-----------------------------
/* this codez describe how to search a PROXY server
*
* by
*
* zer9
* ====
* [email protected]
*
* test on slackware 2.0.33
* cc proxyht.c -o proxyht.c
*/
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/socket.h>
#include <signal.h>
#define DefaultProxyPort 8080 //default proxy port 8080
#define MSG1 "GET http://www.maxtor.com HTTP/1.1\n" //1 --change (1 ,2)
#define MSG2 "Host: www.maxtor.com\n" //2 to search
#define MSG3 "Accept: */*\n" // other sit e #define MSG4 "Pragma: no-cache\n"
#define MSG5 "User-Agent: ProxyHT 0.01\n\n" #define KEYWORD "Maxtor Corp" // this is
keyword #define TIMEOUT 30
void alarm_handler(int w)
{
alarm(0);
printf("Time Out!\n");
}
int main(int argc,char *argv[])
{
struct in_addr Target;
struct hostent *he;
struct sockaddr_in sin;
int s,ProxyPort;
char recvbuf1[5000];
char recvbuf2[10000];
if(argc==2)
ProxyPort=DefaultProxyPort;
else
if(argc==3)
ProxyPort=atoi(argv[2]);
else
{
printf("ProxyHT 0.01 by zer9 mail:[email protected]\n");
printf("usage: %s [proxy_port]\n",argv[0]);
return 0;
}
if((he=gethostbyname(argv[1]))!=NULL)
bcopy(he->h_addr,(char *)&Target.s_addr,he->h_length);
else
Target.s_addr=inet_addr(argv[1]);
if(Target.s_addr==-1)
{
perror("gethostbyname");
return -1;
}
printf("ProxyHT 0.01 by zer9 mail:
[email protected]\n");
if((s=socket(AF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return -1;
}
sin.sin_family=AF_INET;
sin.sin_port=htons(ProxyPort);
sin.sin_addr.s_addr=Target.s_addr;
if(connect(s,(struct sockaddr*)&sin,sizeof(sin))<0)
{
perror("connect");
return -1;
}
bzero(recvbuf1,sizeof(recvbuf1));
bzero(recvbuf2,sizeof(recvbuf2));
printf("%s start verifying... waiting a while please\n",argv[1]);
signal(SIGALRM,alarm_handler);
send(s,MSG1,strlen(MSG1),0);
send(s,MSG2,strlen(MSG2),0);
send(s,MSG3,strlen(MSG3),0);
send(s,MSG4,strlen(MSG4),0);
send(s,MSG5,strlen(MSG5),0);
1alarm(TIMEOUT);
recv(s,recvbuf1,sizeof(recvbuf1),0);
recv(s,recvbuf2,sizeof(recvbuf2),0);
alarm(0);
//if u want to debug , open follow two lines
//printf("%s\n",recvbuf1);
//printf("%s\n",recvbuf2);
if(strstr(recvbuf1,"HTTP/1.1 200"))
{
if(strstr(recvbuf2,KEYWORD))
{
printf("hahaha... there's something found! \n");
close(s); return 0;
}
}
else
{
if(strstr(recvbuf1,"HTTP/1.1 404"))
{
printf("woo! I found one,but dont free...\n");
close(s);
return 0;
}
}
close(s);
printf("sorry.dont hit me please,nexttime i *MUST* find one.\n");
return 0;
}
---Cut Here---------------http://www.isbase.com------------------------------