首页 > 编程 > ASP > 正文

asp alexa查询小偷程序

2024-05-04 11:09:22
字体:
来源:转载
供稿:网友
比较简单的alexa小偷程序,喜欢这个功能的朋友,可以学习他的原理,相信不久,你也可以写出这个程序
 
 
 
<% 
'为了支持原创,请保留该处注释,谢谢! 
'作者:草上飞 
'获取主域名 
Function getDomainUrl(url) 
tempurl=replace(url,"http://","") 
if instr(tempurl,"/")>0 then 
tempurl=left(tempurl,instr(tempurl,"/")-1) 
end If 
getDomainurl=tempurl 
End Function 


Function GetHttpPage(HttpUrl) 
If IsNull(HttpUrl)=True Or Len(HttpUrl)<18 Or HttpUrl="$False$" Then 
GetHttpPage="$False$" 
Exit Function 
End If 
Dim Http 
Set Http=server.createobject("MSXML2.XMLHTTP") 
Http.open "GET",HttpUrl,False 
Http.Send() 
If Http.Readystate<>4 then 
Set Http=Nothing 
GetHttpPage="$False$" 
Exit function 
End if 
GetHTTPPage=Http.responseText 
Set Http=Nothing 
If Err.number<>0 then 
Err.Clear 
End If 
End Function 

'================================================== 
'函数名:ScriptHtml 
'作 用:过滤html标记 
'参 数:ConStr ------ 要过滤的字符串 
' TagName ------要过滤的标签 
' FType 1表示过滤左边标签 2表示过滤左右标签及中间的值 3表示过滤左边标签和右边标签,保留内容。 
'================================================== 
Function ScriptHtml(Byval ConStr,TagName,FType,includestr) 
Dim Re 
Set Re=new RegExp 
Re.IgnoreCase =true 
Re.Global=True 
Select Case FType 
Case 1 
Re.Pattern="<" & TagName & "([^>])*("&includestr&"){1,}([^>])*>" 
ConStr=Re.Replace(ConStr,"") 
Case 2 
Re.Pattern="<" & TagName & "([^>])*("&includestr&"){1,}([^>])*>.*?</" & TagName & "([^>])*>" 
'response.write constr&"<br>" 
ConStr=Re.Replace(ConStr,"") 
'response.write server.htmlencode(constr)&"<br>" 
Case 3 
Re.Pattern="<" & TagName & "([^>])*("&includestr&"){1,}([^>])*>" 
ConStr=Re.Replace(ConStr,"") 
Re.Pattern="</" & TagName & "([^>])*>" 
ConStr=Re.Replace(ConStr,"") 
End Select 
ScriptHtml=ConStr 
Set Re=Nothing 
End Function 

'================================================== 
'函数名:GetBody 
'作 用:截取字符串 
'参 数:ConStr ------将要截取的字符串 
'参 数:StartStr ------开始字符串 
'参 数:OverStr ------结束字符串 
'参 数:IncluL ------是否包含StartStr 
'参 数:IncluR ------是否包含OverStr 
'================================================== 
Function GetBody(ConStr,StartStr,OverStr,IncluL,IncluR) 
If ConStr="$False$" or ConStr="" or IsNull(ConStr)=True Or StartStr="" or IsNull(StartStr)=True Or OverStr="" or IsNull(OverStr)=True Then 
GetBody="$False$" 
Exit Function 
End If 
Dim ConStrTemp 
Dim Start,Over 
ConStrTemp=Lcase(ConStr) 
StartStr=Lcase(StartStr) 
OverStr=Lcase(OverStr) 
Start = InStrB(1, ConStrTemp, StartStr, vbBinaryCompare) 
'response.write Start&"<br>"&IncluL&"<br>" 
'response.end 
If Start<=0 then 
GetBody="$False$" 
Exit Function 
Else 
If IncluL=False Then 
Start=Start+LenB(StartStr) 
End If 
End If 
Over=InStrB(Start,ConStrTemp,OverStr,vbBinaryCompare) 
'response.write Over 
'response.end 
'response.write Start&" "&Over&" "&Over-Start 
'response.end 
If Over<=0 Or Over<=Start then 
GetBody="$False$" 
Exit Function 
Else 
If IncluR=True Then 
Over=Over+LenB(OverStr) 
End If 
End If 

GetBody=MidB(ConStr,Start,Over-Start) 
'response.write getBody 
'response.end 
End Function 

'================================================== 
'函数名:GetArray 
'作 用:提取链接地址,以$Array$分隔 
'参 数:ConStr ------提取地址的原字符 
'参 数:StartStr ------开始字符串 
'参 数:OverStr ------结束字符串 
'参 数:IncluL ------是否包含StartStr 
'参 数:IncluR ------是否包含OverStr 
'================================================== 
Function GetArray(Byval ConStr,StartStr,OverStr,IncluL,IncluR) 
If ConStr="$False$" or ConStr="" Or IsNull(ConStr)=True or StartStr="" Or OverStr="" or IsNull(StartStr)=True Or IsNull(OverStr)=True Then 
GetArray="$False$" 
Exit Function 
End If 
Dim TempStr,TempStr2,objRegExp,Matches,Match 
TempStr="" 
Set objRegExp = New Regexp 
objRegExp.IgnoreCase = True 
objRegExp.Global = True 
objRegExp.Pattern = "("&StartStr&").+?("&OverStr&")" 
Set Matches =objRegExp.Execute(ConStr) 
For Each Match in Matches 
TempStr=TempStr & "$Array$" & Match.Value 
Next 
Set Matches=nothing 

If TempStr="" Then 
GetArray="$False$" 
Exit Function 
End If 
TempStr=Right(TempStr,Len(TempStr)-7) 
If IncluL=False then 
objRegExp.Pattern =StartStr 
TempStr=objRegExp.Replace(TempStr,"") 
End if 
If IncluR=False then 
objRegExp.Pattern =OverStr 
TempStr=objRegExp.Replace(TempStr,"") 
End if 
Set objRegExp=nothing 
Set Matches=nothing 

If TempStr="" then 
GetArray="$False$" 
Else 
GetArray=TempStr 
End if 
End Function 

Function getAlexaRank(weburl) 
tempurl=getDomainUrl(weburl) 
'读取http://client.alexa.com/common/css/scramble.css中的数据 
alexacss="http://client.alexa.com/common/css/scramble.css" 
strAlexaCss=GetHttpPage(alexacss) 
'response.write strAlexaCss 
'response.end 
alexarankqueryurl="http://www.alexa.com/data/details/traffic_details/"&tempurl 

strAlexaContent=GetHttpPage(alexarankqueryurl) 

rankcontent=getBody(strAlexaContent,"Information Service.-->","<!-- google_ad_section_end(name=default) -->",false,false) 
'获取其中的span的class 
strspan=GetArray(rankcontent,"<span class=""","""",false,false) 
'response.write rankcontent&"<br>" 
'response.write strspan&"<br>" 
'response.end 
If strspan<>"$False$" Then 
aspan=split(strspan,"$Array$") 

For i=0 To UBound(aspan) 
'response.write "."&aspan(i) 
'判定aspan(i)即span的class是否在alexacss中存在,如果存在,则需要将这个span和span中的数据去掉。 
If InStr(strAlexaCss,"."&aspan(i))>=1 Then 
'response.write aspan(i)&"<br>" 
'response.end 
'表示属性为none.需要替换掉。 
rankcontent=ScriptHtml(rankcontent,"span",2,aspan(i)) 
Else 
rankcontent=ScriptHtml(rankcontent,"span",1,aspan(i)) 
End if 
Next 
'替换上面少去掉的右边的span标签。 
rankcontent=Replace(rankcontent,"</span>","") 


End If 
If rankcontent="$False$" Then 
rankcontent="No Data" 
End if 
getAlexaRank=Replace(rankcontent,",","") 

End Function 
url=request.querystring("url") 
%> 

<form name="alexaform" method=get> 
输入网址:<input type="" name="url" value="<%=url%>" size=40> <input type="submit" value="查 询">
</form> 
<% 
If url<>"" Then 

response.write "您的网站在ALEXA的排名为:" 
response.flush 
rank=getAlexaRank(url) 
response.write rank 
End if 
%> 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表