前些天临时写的一脚本级反向代理程序,用法很简单,设置好目标站地址,然后放到你网站根目录:index.asp,再将404页面自定义为:index.asp,即可。

由于暂时没有 url 替换需要,所以没有写 url 替换规则,如果你有需要的话,可以在末尾写个函数替换 http.ResponseBody 中的内容。

<%
'**************************************************
'Asp反向代理程序,调用远程站点全站数据,脚本级反向代理,一款脚本级反向代理程序
'By: Nuclear'Atk, https://lcx.cc/
'Created: 2014-03-27 19:30:56
'Last Update: 2014-3-28 11:10:56
'**************************************************

'On Error Resume Next
Server.ScriptTimeout = 300

'----------

'组合Url地址

Dim url

If Instr(Request.QueryString, "404;http://") > 0 Then '提取参数
    url = Mid(Request.QueryString, Len("404;http://" & Request.ServerVariables("HTTP_HOST") & ":" & Request.ServerVariables("Server_Port") & "/") + 1)
Else
    If Request.QueryString <> "" Then
        url = "?" & Request.QueryString
    End IF
End IF

url = "https://lcx.cc/" & url '完整地址

'----------

'获取远程数据

Dim http
Set http = Server.CreateObject("WinHttp.WinHttpRequest.5.1")

http.Open "GET", url, False
    If Request.ServerVariables("HTTP_REFERER") <> "" then
        http.SetRequestHeader "Referer", Request.ServerVariables("HTTP_REFERER")
    End IF
    If Request.Cookies <> "" then
        http.SetRequestHeader "Cookie", Request.Cookies
    End IF
    http.SetRequestHeader "User-Agent", Request.ServerVariables("HTTP_USER_AGENT")
    http.SetRequestHeader "X-Forwarded-For", Request.ServerVariables("REMOTE_ADDR") & ", " & Request.ServerVariables("LOCAL_ADDR")
    http.SetRequestHeader "Connection", "Close"
    http.SetRequestHeader "Nuclear-Atk", "http://" & Request.ServerVariables("HTTP_HOST") & Request.ServerVariables("SCRIPT_NAME") & "?" & Request.QueryString
    http.SetRequestHeader "Nuclear-Atk-Host", Request.ServerVariables("HTTP_HOST")
http.Send

Response.Status = http.Status & " " & http.StatusText '照搬远程HTTP状态码与状态描述文本
Response.ContentType = http.GetResponseHeader("Content-Type") '照搬远程内容类型
Response.BinaryWrite http.ResponseBody '输出二进制内容
%>

留言评论(旧系统):

jianbing @ 2014-03-29 11:38:23

核总又出教程了

本站回复:

一个小脚本。

helen的吊没蛋 @ 2014-03-29 21:53:08

哈,用404来获取内容,聪明的手法

本站回复:

You Are Welcome!

helen的吊没蛋 @ 2014-03-29 21:56:46

看来404还可以叼炸天的模拟url重写,iis要省去配置url重写文件了,爽

本站回复:

是呀,很风骚的小技巧,多年以前经常用,用处很多……

脑残粉 @ 2014-03-30 22:35:46

核总,我试了下,发现图片无法显示,排版也乱了,如何解决呢? 测试地址 116.255.227.113/tt.asp

本站回复:

IE按F12-->网络-->开始捕获,看什么文件404错误,八成是css文件错误(路径问题)。

雨中风铃 @ 2014-04-01 20:25:40

Function GetUrl() GetUrl = "http://" & Request.ServerVariables("SERVER_NAME") If Request.ServerVariables("SERVER_PORT") <> 80 Then GetUrl = GetUrl &":" & Request.ServerVariables("SERVER_PORT") GetUrl = GetUrl & Request.ServerVariables("Script_Name") If Trim(Request.QueryString) <>"" Then GetUrl = GetUrl &"?" & Trim(Request.QueryString) End Function

本站回复:

很不错的获取完整url函数,Good JB!

佚名 @ 2014-04-02 09:57:03

这个脚本在加个批量替换就很不错!

本站回复:

嗯,如果你有需要的话,可以在末尾写个函数替换 http.ResponseBody 中的内容。

佚名 @ 2014-04-02 11:43:50

貌似对百度无效。。。

本站回复:

嗯,需要修改。