当前位置: 首页 > 图文教程 > 网络编程 > ASP > Web代理(Asp版)

ASP
ADO如何提供异动功能?(BIG5)
从数据库中动态选取下拉列表的方法
数 据 库 设 计 经 验 谈
用SQL实现分布式数据复制
NT4的ODBC与SQL7相连,不支持中文?
大部分ADO的错误码对应的含义
ASP+中取代ASP的RS(Remote Scripting)技术的Framework
利用Page.IsPostBack属性保持用户输入的Framework
用VB6读写数据库中的图片
VisualInterDev6.0七种实现分页显示的方法
利用ASP获得图象的实际尺寸的示例
5个实用的ASP网站功能(GIB5)
在ASP中用集合成批操作数据库
用asp管理sql server数据库
用asp处理access数据库
使用速度更快的OLEDB取代ODBC连结
对Query字段进行Encode操作的一点看法
用ASP语言实现对SQL SERVER 数据库的操作
Microsoft SQL Server 7.0 备份及恢复相关问题
Microsoft SQL Server 7.0数据库升级转换问题

ASP 中的 Web代理(Asp版)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-12   浏览: 191 ::
收藏到网摘: n/a

asp写Web代理软件,可以用作突破网关限制等,主要是为了配合Ajax使用的(因Firefox存在跨域访问的问题) 版本 0.1 作者 LlinZzi
功能
判断网站编码,支持任何语言
超连接自动转换
附带一个远程下载图片的函数
未解决问题,目前只能用来代理网站代码,图片等其他数据的代理转发尚未完成。
复制代码 代码如下:

<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<%Response.Charset = "utf-8"%>
<%
Server.ScriptTimeout=9999999;
var Surl = String(Request.QueryString("url"));
if(Surl == "undefined"){
Response.Write("<p style=\"font-size:9pt;margin:30px;padding:10px;text-align:center;background-color:#FFCCCC;border: 1px solid #999999;\">Asp代理 by Llinzzi</p>");
Response.Write("<div style=\"font-size:9pt;margin:30px;text-align:center;background-color:#FFFFCC;border: 1px solid #999999;\">");
Response.Write("<form action=\"#\" method=\"get\" >");
Response.Write("<p style=\"font-size:9pt;margin:5px;text-align:center;\">请输入网址</p>");
Response.Write("<p><input style=\"background-color: #FFCCCC;border: 1px solid #999999;\" type=\"text\" name=\"url\"></p>");
Response.Write("<p><input style=\"background-color: #FFCCCC;border: 1px solid #999999;\" type=\"submit\" value=\"GoWeb\"></p>");
Response.Write("</div>");
}
else if(Surl == ""){
Response.Write("<p style=\"font-size:9pt;margin:30px;padding:10px;text-align:center;background-color:#FFCCCC;border: 1px solid #999999;\">Asp代理 by Llinzzi</p>");
Response.Write("<div style=\"font-size:9pt;margin:30px;text-align:center;background-color:#FFFFCC;border: 1px solid #999999;\">");
Response.Write("<p>地址为空,请格式输入 如 www.tom.com </p>");
Response.Write("</div>");
}
else{
Surl = (Surl.substr(0,7) != "http://") ? "http://"+Surl : Surl;
Response.Write(send_request(Surl));
}
function send_request(url) {
var codedtext;
http_request = Server.CreateObject("Microsoft.XMLHTTP");
try{
http_request.Open("GET",url,false);
http_request.Send(null);
}
catch(e)
{
Response.Write(e.description);
}
if (http_request.ReadyState == 4){
//自动判断编码开始
var charresult = http_request.ResponseText.match(/CharSet=(\S+)"/i);
if (charresult != null){
var Cset = charresult[1];
}else{Cset = "utf-8"}
//自动判断编码结束
codedtext = bytesToBSTR(http_request.Responsebody,Cset);
}else{
codedtext = "Erro";
}
//替换超连接
codedtext = codedtext.replace(/href="\/?/ig,"href=\""+url+"/");
codedtext = codedtext.replace(/(<a.*href=")/ig,"$1servergate.asp?url=");
return(codedtext);
}
function bytesToBSTR(body,Cset){
var objstream;
objstream = Server.CreateObject("Adodb.Stream");
objstream.Type = 1;
objstream.Mode = 3;
objstream.Open();
objstream.Write(body);
objstream.Position = 0;
objstream.Type = 2;
objstream.Charset = Cset;
bytesToBSTR = objstream.Readtext;
objstream.Close;
return(bytesToBSTR);
}
function SaveRemoteFile(LocalFileName,RemoteFileUrl){
var Retrieval,Ads;
Retrieval = Server.CreateObject("Microsoft.XMLHTTP");
Retrieval.Open("GET",RemoteFileUrl,false);
Retrieval.Send(null);
if (Retrieval.ReadyState == 4){
Ads = Server.CreateObject("Adodb.Stream");
Ads.Type = 1;
Ads.Open();
Ads.Write(Retrieval.Responsebody);
Ads.SaveToFile(Server.MapPath(LocalFileName),2);
Ads.Cancel;
Ads.Close;
}
}
//SaveRemoteFile("/upload/tech/20091012/20091012011826_c20ad4d76fe97759aa27a0c99bff6710.gif","http://www.baidu.com/img/logo.gif");
%>