作者:绿色风
分类:
时间:2022-08-17
浏览:121
楼主 xmyjk |
Q:如何运用xmlhttp绕过asp/aspx页面的文本防盗机制,下载相关文件。 例子网址:http://www.namejet.com/Pages/Downloads.aspx,如图下载Pre-Release Domains的第二个超链接的文件。
A:分析,可以使用xmlhttp去模拟文件下载的发包过程。但是,POST的时候,要POST的有VIEWSTATE和EVENTVALIDATION两个参数,经过多次测试,这两个参数是随机的,应该是页面的一种防盗机制。我们怎么破解这个机制呢。 原来在http://www.namejet.com/Pages/Downloads.aspx的源代码中,就存有这两个参数的文本了。这个是常见的通过服务器在下载前页面的随机参数,防盗链的机制。如图
我们可以先访问原页面,获取参数,后再次发送下载文件的POST消息头,即可。- Option Explicit
- Sub T()
- Dim xmlhttp As Object, Cookie As String, st As String, sd As String
- Set xmlhttp = CreateObject("Microsoft.XMLHTTP") '创建XMLHTTP对象
- With xmlhttp
- .Open "GET", "http://www.namejet.com/Pages/Downloads.aspx", False '访问下载前页面
- .send
- st = URLEncode(Split(Split(.responsetext, "VIEWSTATE"" value=""")(1), """ />")(0)) '获取viewstate参数
- sd = URLEncode(Split(Split(.responsetext, "EVENTVALIDATION"" value=""")(1), """ />")(0)) '获取eventvalidation参数
- .Open "POST", "http://www.namejet.com/Pages/Downloads.aspx", False '向服务器POST下载消息包
- .setRequestHeader "Content-Type", "application/x-www-form-urlencoded" '以下是设置发包HEAD
- .send "__EVENTTARGET=ctl00%24ContentPlaceHolder1%24hlPreRelease1&__EVENTARGUMENT=&__VIEWSTATE=" & st & "&__EVENTVALIDATION=" & sd & "&ctl00%24TextBoxSearch=Search+Domains&ctl00%24HiddenFieldFristNav="
- End With
- With CreateObject("ADODB.Stream") '创建二进制数据流的容器
- .Type = 1
- .Open
- .write xmlhttp.Responsebody '将发包后的数据流导入容器
- .savetofile ThisWorkbook.Path & "\1.text", 2 '另存为所需文件
- .Close
- End With
- Set xmlhttp = Nothing
- MsgBox "Ok"
- End Sub
- Public Function URLEncode(ByVal strParameter As String) As String 'URL的符合和中午需转码,用此函数转码
- Dim s As String
- Dim I As Integer
- Dim intValue As Integer
- Dim TmpData() As Byte
- s = ""
- TmpData = StrConv(strParameter, vbFromUnicode)
- For I = 0 To UBound(TmpData)
- intValue = TmpData(I)
- If (intValue >= 48 And intValue <= 57) Or _
- (intValue >= 65 And intValue <= 90) Or _
- (intValue >= 97 And intValue <= 122) Then
- s = s & Chr(intValue)
- ElseIf intValue = 32 Then
- s = s & "+"
- Else
- s = s & "%" & Hex(intValue)
- End If
- Next I
- URLEncode = s
- End Function
aspdown.zip |
2楼 鱼求雨 |
不是一般的强 |
3楼 水星钓鱼 |
终于找到转码函数了 |
4楼 peterchen |
月版主,本想学习XMLHTTP的用法,没想到搜到你的老贴,这么难的VBA都编得出来 |
5楼 peterchen |
月版主,本想学习XMLHTTP的用法,没想到搜到你的老贴,这么难的VBA都编得出来 |
6楼 老糊涂 |
学习 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一