如何判断对方是否 http 代理服务器(proxy)?[ExitWindows求教]
我想做一个类似于“代理猎手”的软件,找出网上的代理服务器。
现在的问题是:已知一个IP和它的port,如何判断它是否 http 代理服务器?(即如何判断该端口是否提供http proxy连接?)
问题点数:300、回复次数:22Top
1 楼ExitWindows(void)回复于 2001-11-17 20:32:44 得分 0
请指教。Top
2 楼Jneu(沧海桑田)回复于 2001-11-17 21:43:50 得分 0
g~zTop
3 楼moony_blue(发呆的深蓝)回复于 2001-11-17 21:54:39 得分 300
//通过HTTP方式代理
if( !ClientSock.Connect( g_ProxyInfo.m_strProxyIP,g_ProxyInfo.m_nProxyPort) )
{
m_sError = _T("不能连接到代理服务器!");
ClientSock.Close();
return FALSE;
}
char buff[600];
sprintf( buff, "%s%s:%d%s","CONNECT ",GetServerHostName(),GetPort()," HTTP/1.0\r\nUser-Agent: MyApp/0.1\r\n\r\n");
ClientSock.Send(buff,strlen(buff)); //发送请求
memset(buff,0,600);
ClientSock.Receive(buff,600);
if(strstr(buff, "200 Connection established") == NULL) //连接不成功
{
m_sError = _T("通过代理连接主站不成功!");
ClientSock.Close();
return FALSE;
}
大多数的代理服务器HTTP代理的端口为8080,先和它做一个tcp连接,接着发送CONNECT命令,获得相应的反馈后就可以得知其是否提供HTTP代理服务。Top
4 楼ExitWindows(void)回复于 2001-11-17 22:26:01 得分 0
moony_blue(发呆的深蓝):
再打扰一下。
GetServerHostName(),GetPort(),在这里会得到谁的IP及Port? buff 中最后一般会得到一个形如什么样的结果?Top
5 楼moony_blue(发呆的深蓝)回复于 2001-11-17 22:44:46 得分 0
GetServerHostName(),GetPort() 分别是目标服务器的地址与端口
关于反馈BUFF的内容可参看RFC1945、2068 以及 google上搜索"draft-luotonen-web-proxy-t
unneling-01.txt"
下边是一些典型的反馈,仅供参考:
if( strstr(buff, "Error 403") )
{
return GoError(PROXYERROR_PROXYDISABLE); //代理服务器拒绝请求
}
if( strstr(buff, "407 Proxy authentication required") ) //需要身份验证
{
return GoError(PROXYERROR_USERNAMEORPASSWORD); //用户身份校检不成功
}
if( strstr(buff, "Connection refuesed") )
{
return GoError(PROXYERROR_CONNECTHOSTSERVER); //通过代理连接主站不成功
}
if( strstr(buff, "Access Denied") )
{
return GoError(PROXYERROR_USERNAMEORPASSWORD); //用户身份校检不成功
}
if(strstr(buff, "Connection refused by Remote Host") )
{
return GoError(PROXYERROR_CONNECTHOSTSERVER); //通过代理连接主站不成功
}Top
6 楼ExitWindows(void)回复于 2001-11-18 10:22:27 得分 0
还是给不了分?Top
7 楼moony_blue(发呆的深蓝)回复于 2001-11-18 10:32:15 得分 0
不给分?难道是调试不成功么?Top
8 楼MSVCer(家宝)回复于 2001-11-18 10:35:14 得分 0
是现在CSDN有毛病,给不了分Top
9 楼Hover_cn(翔)(:public IUnknown)回复于 2001-11-18 10:39:40 得分 0
GZTop
10 楼xtky_limi(窗外细雨)回复于 2001-11-18 10:48:12 得分 0
旁听Top
11 楼MSVCer(家宝)回复于 2001-11-18 16:24:51 得分 0
推Top
12 楼moony_blue(发呆的深蓝)回复于 2001-11-18 16:36:33 得分 0
:~))Top
13 楼study_vc(博)回复于 2001-11-19 19:31:39 得分 0
学习Top
14 楼cairuibin()回复于 2001-11-21 00:35:06 得分 0
是给不了!Top
15 楼jerry_baimor(崇拜starfish)回复于 2001-11-22 12:47:28 得分 0
bu cuoTop
16 楼guywei(测试)回复于 2001-11-23 23:46:07 得分 0
1Top
17 楼NowCan(城市浪人)回复于 2001-11-24 10:16:02 得分 0
自己先回一下帖子就可以分了Top
18 楼ExitWindows(void)回复于 2001-11-25 19:56:22 得分 0
给分了。Top
19 楼MSVCer(家宝)回复于 2001-11-25 20:23:20 得分 0
能给分了,我也把我的帖子结了去Top
20 楼ydprtm(ydprtm)回复于 2001-11-27 13:39:10 得分 0
http代理用的port一般就是80,8080,3280吧。
Top
21 楼moony_blue(发呆的深蓝)回复于 2001-11-29 15:43:37 得分 0
呵呵 一下子吃了300分,太刺激了!! :))Top
22 楼zgc_7622(.nlk)回复于 2002-02-05 14:26:09 得分 0
2:如何判断对方是否 http 代理服务器(proxy)?Top




