使用WinHttpRequest 偽造HTTP 頭信息,偽造Referer 等信息由於微軟封鎖了XmlHttp 對象,所以無法偽造部分HTTP 頭信息,但是WinHttp.WinHttpRequest.5.1 對象,它居然用可以成功偽造所有http 請求的header 信息!
從msdn得知,WinHttp.WinHttpRequest.5.1 是msxml 4.0 的底層對象,也就是說XMLHTTP/ServerXMLHTTP 也是在它的基礎上封裝而來,WinHttpRequest 的用法與XmlHttp 大致相同。
WaitForResponse 在使用非同步方式傳送請求時,可以用這個方法來控制請求的進程,指定的等待時間,以秒為一個非同步傳送方法來完成的值,SetTimeouts。
在服務端腳本中,不可以像客戶端那樣直接使用回調函數來控制非同步請求,也沒有對應的函數來使用程式休眠一定的時間,因此,為了等待請求返回,我們可以使用這個方法來等待一定時間。
複製代碼代碼如下:
<%
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 '二進位資料流資料
%>
Option()相關:
WinHttpRequestOption_UserAgentString = 0;
WinHttpRequestOption_URL = 1;
WinHttpRequestOption_URLCodePage = 2;
WinHttpRequestOption_EscapePercentInURL = 3;
WinHttpRequestOption_SslErrorIgnoreFlags = 4;
WinHttpRequestOption_SelectCertificate = 5; '13056 = 忽略錯誤標誌
WinHttpRequestOption_EnableRedirects = 6; '為True時,當請求的頁面中有跳轉時,抓取跳轉頁面資訊.False相反不抓取
WinHttpRequestOption_UrlEscapeDisable = 7;
WinHttpRequestOption_UrlEscapeDisableQuery = 8;
WinHttpRequestOption_SecureProtocols = 9;
WinHttpRequestOption_EnableTracing = 10;
WinHttpRequestOption_RevertImpersonationOverSsl = 11;
WinHttpRequestOption_EnableHttpsToHttpRedirects = 12;
WinHttpRequestOption_EnablePassportAuthentication = 13;
WinHttpRequestOption_MaxAutomaticRedirects = 14;
WinHttpRequestOption_MaxResponseHeaderSize = 15;
WinHttpRequestOption_MaxResponseDrainSize = 16;
WinHttpRequestOption_EnableHttp1_1 = 17;
WinHttpRequestOption_EnableCertificateRevocationCheck = 18;
方法Description 說明
Abort 中止一個WinHTTP的傳送方法。
GetAllResponseHeaders 檢索所有的HTTP回應頭。
GetResponseHeader 檢索HTTP回應頭。
Open 開啟一個HTTP連線到HTTP資源。
Send 傳送一個HTTP請求到HTTP伺服器。
SetAutoLogonPolicy 設定目前自動登入策略。
SetClientCertificate 選擇一個用戶端憑證傳送到一個安全的超文本傳輸協定(HTTPS)伺服器。
SetCredentials 設定要使用的憑證與HTTP伺服器,或是原籍國或代理伺服器。
SetProxy 設定代理伺服器資訊。
SetRequestHeader 新增,變更或刪除一個HTTP請求標頭。
SetTimeouts 指定以毫秒為單位,個人的時間超過了一個元件發送/接收操作。
WaitForResponse 指定的等待時間,以秒為一個非同步傳送方法來完成的值,SetTimeouts。
該WinHttpRequest 物件定義下列屬性。
屬性存取類型說明
Option 讀/寫設定或檢索一個WinHTTP的選項值。
ResponseBody 只讀檢索作為無符號位元組陣列的回應實體機構。
ResponseStream 只讀檢索機構作為回應實體的IStream。
ResponseText 只讀作為文字檢索回應實體機構。
Status 只讀從上次檢索回應的HTTP狀態碼。
StatusText 只會讀出取得HTTP狀態的文字。
Events 活動
The WinHttpRequest object defines the following events.
WinHttpRequest 物件定義的下列事件。
Event 事件Description說明
OnError Occurs when there is a run-time error in the application.
當發生一個應用程式運行時錯誤時發生。
OnResponseDataAvailable Occurs when data is available from the response.
當響應資料可用時發生。
OnResponseFinished Occurs when the response data is complete.
響應資料完成時發生。
OnResponseStart Occurs when the response data starts to be received.
開始收到回應資料時發生。
Remarks 備註
The WinHttpRequest object uses the IErrorInfo interface to provide error data.
該WinHttpRequest 物件使用IErrorInfo 介面來提供錯誤資料。
A description and numerical error value can be obtained with the Err object in Microsoft Visual Basic Scripting Edition (VBScript),
and the Error object in Microsoft JScript.
The lower 16 bits of an error number correspond to the values found in Error Messages.
Note For Windows XP and Windows 2000, see Run-Time Requirements.
注意:對於Windows XP 和Windows 2000,請參閱執行時間需求。
Requirements 要求
最低支援的客戶端Windows XP, Windows 2000 Professional with SP3 Windows XP
最低支援的伺服器Windows Server 2003, Windows 2000 Server with SP3
可再發行WinHTTP 5.0 and Internet Explorer 5.01 or later on Windows XP and Windows 2000.
WinHTTP的5.0和Internet Explorer 5.01或更高版本的Windows XP和Windows 2000。
IDL HttpRequest.idl HttpRequest.idl
Library Winhttp.lib Winhttp.lib
DLL Winhttp.dll Winhttp.dll