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

 众所周知,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 '二进制数据流数据

%>

    相关文章

评论

发表新评论

此内容将保密,不会被其他人看见。
点击刷新验证码
  • 可用的 UBB 标签:
  • 留言最长字数:1000。