|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。查询网页的友谊链接数目和详细的链接网址,本例没有扫除二级(及以上)的域名,没有判别反复的外链,必要的能够本人增强一下.以下是ASP源代码:
<formaction="">URL:<inputname="url_"/><inputtype="submit"name="submit"value="查询"/></form>
<%
IfRequest("url_")""Then
SenFe_GetUrlRequest("url_")
EndIf
SubSenFe_GetUrl(sUrl)
DimsContent,sDomian,oTempReg,I,oMatches,cMatch,sUrl_
sUrl=LCase(sUrl)
IfLeft(sUrl,7)="http://"Then
sDomian=Mid(sUrl,8)
Else
sDomian=sUrl
sUrl="http://"&Url
EndIf
IfInStr(sDomian,"/")ThensDomian=Split(sDomian,"/")(0)
sContent=SenFe_GetData(sUrl)
SetoTempReg=NewRegExp
WithoTempReg
.IgnoreCase=True
.Global=True
.Pattern="(http:(//|\)(([w/+-~`@:%])+.)+([w/.=?+-~`@’:!%#]|(&)|&)+)"
SetoMatches=.Execute(sContent)
ForEachcMatchInoMatches
sUrl_=LCase(cMatch.Value)
IfInStr(sUrl_,sDomian)=0Then
Response.Write(sUrl_&"<br/>"&VbCrLf)
EndIf
Next
EndWith
SetoTempReg=Nothing
EndSub
FunctionSenFe_GetData(sUrl)
DimoXmlHttp:SetoXmlHttp=Server.CreateObject("Msxml2.ServerXMLHTTP")
WithoXmlHttp
.Open"GET",sUrl,False
.SetRequestHeader"Referer",sUrl
.Send
SenFe_GetData=SenFe_BytesToBstr(.ResponseBody,"GB2312")
EndWith
SetoXmlHttp=Nothing
EndFunction
FunctionSenFe_BytesToBstr(sBody,sCset)
DimoAdos:SetoAdos=Server.CreateObject("Adodb.Stream")
WithoAdos
.Type=1
.Mode=3
.Open
.WritesBody
.Position=0
.Type=2
.Charset=sCset
SenFe_BytesToBstr=.ReadText
.Close
EndWith
SetoAdos=Nothing
EndFunction
%>
大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧 |
|