关于xmlhttp的refer伪造来路属性失效的解决方法

2015-7-9 14:29:59 | 浏览:
评论数:0

众所周知,xmlhttp可以用refer属性伪造来路,对于采集、抓取都非常有用,但是不知道何时,微软禁止了该属性。很是无语!

我 有次使用refer属性,害得我调试了几个小时一直未成功,结果一查资料,才知道微软取消掉了。然后找了好久也没找到该如何解决,最后没办法,只能换组件 了。使用winhttp,winhttp的refer属性可以照常使用,难道这又是树大招风?下面是示例代码以及参数注释。

<% 

Dim WinHttp 

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

'设置参数 

WinHttp.SetTimeouts 60000, 60000, 60000, 3000 '设置操作超时时间 

'WinHttp.SetTimeouts resolveTimeout, connectTimeout, sendTimeout, receiveTimeout 

'resolveTimeout = 10000 '解析 DNS 名字的超时时间,10000 毫秒。 

'connectTimeout = 10000 '建立 Winsock 连接的超时时间,10000 毫秒。 

'sendTimeout = 120000 '发送数据的超时时间,120000 毫秒。 

'receiveTimeout = 60000 '接收 response 的超时时间,60000 毫秒。 

WinHttp.Option(4) = 13056 '忽略错误标志 

WinHttp.Option(6) = False '为 True 时,当请求页面重定向跳转时自动跳转,False 不自动跳转,截取服务端返回的302状态。 

WinHttp.Open "GET", "http://www.baidu.com/", False 'GET 或 POST, Url, False 同步方式;True 异步方式 

'组成 HTTP 头信息 

WinHttp.SetRequestHeader "Accept", "*/*" '接受数据类型 

WinHttp.SetRequestHeader "Accept-Language", "zh-cn,zh" '用户系统语言 

WinHttp.SetRequestHeader "User-Agent", "Mozilla/6.0" '用户浏览器信息 

WinHttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" '编码方式 

WinHttp.SetRequestHeader "Referer", "http://www.baidu.com/" '来路 

WinHttp.SetRequestHeader "Connection", "Close" 'Close = 不保持连接,Keep-Alive = 保持连接(持久连接) 

'WinHttp.SetRequestHeader "Accept-Encoding", "gzip, deflate" '如果发送,会返回 gzip, deflate 压缩过的编码 

'WinHttp.SetRequestHeader "Content-Length", Len(Str) '内容长度,Post 方式用的。 

WinHttp.SetRequestHeader "Cookie", "test cookie!" '设置 Cookie 

'发送数据 

WinHttp.Send 'Post 方式:WinHttp.Send (参数) 

WinHttp.WaitForResponse '等待返回请求,XMLHTTP中也可以使用 

'输出结果 

Response.Write WinHttp.Status '当前 HTTP 状态 

'Response.Write WinHttp.ResponseText '文本数据 

Response.BinaryWrite WinHttp.ResponseBody '二进制数据流数据

%>

来源:百度经验

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。