Web代理(Asp版)

  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("aa.gif","http://www.baidu.com/img/logo.gif");

  %>