如何用最简便的方法检测一个HTTP代理服务器是否有效??另外如何知道HTTP代理是否支持SSL?

111222 2002-08-16 02:18:24
如何用最简便的方法检测一个HTTP代理服务器是否有效??另外如何知道HTTP代理是否支持SSL?

另外我想探测某一HTTP代理服务器的反应速度?如何做是好?PING好象不行啊,CSDN的HTTP服务器过载的时候我PING CSDN.net还是很快的……
...全文
1775 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kevin_qing 2002-08-18
  • 打赏
  • 举报
回复
*如何用最简便的方法检测一个HTTP代理服务器是否有效??

请求一个页面试试,然后比较与直接连接得到的数据是否一致。
比如:先直接连接www.microsoft.com,请求/页面,保存得到的数据。
然后对通过代理请求该页面,比较数据是否一致,(可以只比较部分关键字)

*另外如何知道HTTP代理是否支持SSL?
通过代理请求一HTTPS地址,检查返回数据。


*另外我想探测某一HTTP代理服务器的反应速度?如何做是好?PING好象不行啊,CSDN的HTTP服务器过载的时候我PING CSDN.net还是很快的……

连接后发送请求,计算收到回复耗费的时间。


另外要注意HTTP proxy有两种,一种是通过GET URL来请求页面,还有是通过connect建立TCP tonnel。
后者比较少见。


还有你小子的QQ是好多,加我1847725
masterz 2002-08-18
  • 打赏
  • 举报
回复
回复人: moony_blue(发呆的深蓝) (2001-11-17 21:54:40) 得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代理服务。
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); //通过代理连接主站不成功
}
javanew 2002-08-16
  • 打赏
  • 举报
回复
SSL不太清楚,可能要看看有关标准,SSL一般是443端口
javanew 2002-08-16
  • 打赏
  • 举报
回复
CSocket client;
DWORD timebefore,timeafter;
timebefore=GetTickCount();
client.connect("www.csdn.net",80);
timeafter=GetTickCount();
print("connect time=%f",float(timeafter-timebefore));

beyound 2002-08-16
  • 打赏
  • 举报
回复
GZ
ttzzgg_80713 2002-08-16
  • 打赏
  • 举报
回复
喂,有眼药水没有。
ttzzgg_80713 2002-08-16
  • 打赏
  • 举报
回复
头好痛。
spwnihao 2002-08-16
  • 打赏
  • 举报
回复
up

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧