Webオンラインエージェント(ASP版)
著者:Eve Cole
更新時間:2009-06-23 17:01:33
ASP で書かれた Web プロキシ ソフトウェアは、ゲートウェイ制限などを突破するために使用できます。主に Ajax で使用されます (Firefox のクロスドメイン アクセスの問題のため) バージョン 0.1 著者 LlinZzi
この機能は Web サイトのコードを決定し、あらゆる言語のハイパーリンクの自動変換をサポートします。また、画像をリモートでダウンロードするための未解決の機能があり、現在は Web サイトのコードをプロキシするためにのみ使用でき、画像やその他のデータのプロキシ転送はまだ行われていません。完成しました。
[このコードをコピー]コード:
< %@LANGUAGE="JAVASCRIPT " CODEPAGE="65001"%>
<%Response.Charset = "utf-8"%>
<%
Server.ScriptTimeout=9999999;
var Surl = String(Request.QueryString("url"));
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("<form action="#" method="get" >");
Response.Write("<p style="font-size:9pt;margin:5px;text-align:center;">URL を入力してください</p>");
Response.Write("<p><input style="background-color: #FFCCCC;border: 1px 実線 #999999;" type="text" name="url"></p>" );
Response.Write("<p><input style="background-color: #FFCCCC;border: 1px 実線 #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>");
}
それ以外{
Surl = (Surl.substr(0,7) != "http://") " http://"+Surl : Surl;
Response.Write(send_request(Surl));
}
関数 send_request(url) {
var コード化されたテキスト;
http_request = Server.CreateObject("Microsoft.XMLHTTP");
試す{
http_request.Open("GET",url,false);
http_request.Send(null);
}
キャッチ(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"}
//エンコードの終了を自動的に判断する
コード化されたテキスト = bytesToBSTR(http_request.Responsebody,Cset);
}それ以外{
コード化されたテキスト = "エラー";
}
// ハイパーリンクを置き換えます
コード化テキスト = コード化テキスト.replace(/href="/?/ig,"href=""+url+"/");
コード化テキスト = コード化テキスト.replace(/(<a.*href=")/ig,"$1servergate.asp?url=");
return(コード化されたテキスト);
}
関数 bytesToBSTR(body,Cset){
変数オブジェクトストリーム;
objstream = Server.CreateObject("Adodb.Stream");
objstream.Type = 1;
objstream.Mode = 3;
objstream.Open();
objstream.Write(本体);
objstream.Position = 0;
objstream.Type = 2;
objstream.Charset = Cset;
bytesToBSTR = objstream.Readtext;
objstream.Close;
return(バイトからBSTR);
}
function SaveRemoteFile(LocalFileName,RemoteFileUrl){
var 取得、広告;
取得 = Server.CreateObject("Microsoft.XMLHTTP");
Retrieval.Open("GET",RemoteFileUrl,false);
取得.送信(null);
if (Retrieval.ReadyState == 4){
Ads = Server.CreateObject("Adodb.Stream");
広告タイプ = 1;
Ads.Open();
Ads.Write(Retrieval.Responsebody);
Ads.SaveToFile(Server.MapPath(LocalFileName),2);
広告.キャンセル;
広告.閉じる;
}
}
//SaveRemoteFile("aa.gif","/images/XrssFile/2007-1/12/2007112124640411.gif");
%>