Xmlhttp/ServerXmlhttp無法傳送/偽造 Referer 問題解決方案
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
最近遇到點頭大的問題,網站采集一些數據時總是失敗,采不到東西,后來手動用瀏覽器測試時發現是人家做了防盜鏈,直接采是采不到了,不過一般防盜也就是加個referer識別,試著加了一下,結果失敗。。。但還是不死心,為了一探究竟,載了個sniffer,對比了用瀏覽器可以正常瀏覽的數據和采集程序發送的數據,發現采集系統發送的請求中referer為空,但是代碼中的確是設置了referer的,是用ServerXmlhttp做的,以前一直都是好使的,但這次不知道為什么死活就是不聽話。 后來百度了半天,終于看到一條有用的信息,說是微軟出于安全方面考慮,禁止了xmlhttp組件發送referer等,看來用這個組件采集數據的站點有很多都要受影響了,偷點東西是真累呀,不過好在微軟還給咱留了個小窗口,那就是winhttp組件,這個組件暫時還是可以用的,測試了一下果真可以寫referer了,這回OK了,折騰了半天總算是有點收獲,不敢獨享,發上來給遇到同樣問題的朋友參考。 以下為asp代碼 <%
Function GetURL(psReqURL) dim oWinHttp Set oWinHttp =Server.CreateObject("WinHttp.WinHttpRequest.5.1") oWinHttp.SetTimeouts 60000, 60000, 60000, 3000 oWinHttp.Option(4) =13056 oWinHttp.Option(6) =True oWinHttp.Open "GET", psReqURL, False oWinHttp.SetRequestHeader "Referer", psReqURL oWinHttp.SetRequestHeader "Connection", "Close" oWinHttp.Send oWinHttp.WaitForResponse If oWinHttp.Status =200 Then GetURL =oWinHttp.ResponseBody Else GetURL =Null End If Set oWinHttp =Nothing End Function %> 更多關于winhttp組件的用法自己百度。 該文章在 2012/8/18 9:54:09 編輯過 |
關鍵字查詢
相關文章
正在查詢... |