Xmlhttp/ServerXmlhttp無法傳送/偽造 Referer 問題解決方案
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
最近遇到點(diǎn)頭大的問題,網(wǎng)站采集一些數(shù)據(jù)時(shí)總是失敗,采不到東西,后來手動(dòng)用瀏覽器測(cè)試時(shí)發(fā)現(xiàn)是人家做了防盜鏈,直接采是采不到了,不過一般防盜也就是加個(gè)referer識(shí)別,試著加了一下,結(jié)果失敗。。。但還是不死心,為了一探究竟,載了個(gè)sniffer,對(duì)比了用瀏覽器可以正常瀏覽的數(shù)據(jù)和采集程序發(fā)送的數(shù)據(jù),發(fā)現(xiàn)采集系統(tǒng)發(fā)送的請(qǐng)求中referer為空,但是代碼中的確是設(shè)置了referer的,是用ServerXmlhttp做的,以前一直都是好使的,但這次不知道為什么死活就是不聽話。 后來百度了半天,終于看到一條有用的信息,說是微軟出于安全方面考慮,禁止了xmlhttp組件發(fā)送referer等,看來用這個(gè)組件采集數(shù)據(jù)的站點(diǎn)有很多都要受影響了,偷點(diǎn)東西是真累呀,不過好在微軟還給咱留了個(gè)小窗口,那就是winhttp組件,這個(gè)組件暫時(shí)還是可以用的,測(cè)試了一下果真可以寫referer了,這回OK了,折騰了半天總算是有點(diǎn)收獲,不敢獨(dú)享,發(fā)上來給遇到同樣問題的朋友參考。 以下為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 %> 更多關(guān)于winhttp組件的用法自己百度。 該文章在 2012/8/18 9:54:09 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |