ใช้ WinHttpRequest เพื่อปลอมแปลงข้อมูลส่วนหัว HTTP ปลอมผู้อ้างอิงและข้อมูลอื่น ๆ เนื่องจาก Microsoft ได้บล็อกวัตถุ XmlHttp ข้อมูลส่วนหัว HTTP บางส่วนจึงไม่สามารถปลอมแปลงได้ แต่วัตถุ WinHttp.WinHttpRequest.5.1 สามารถปลอมแปลงข้อมูลส่วนหัวของคำขอ http ทั้งหมดได้สำเร็จ!
เราเรียนรู้จาก msdn ว่า WinHttp.WinHttpRequest.5.1 เป็นออบเจ็กต์พื้นฐานของ msxml 4.0 ซึ่งหมายความว่า XMLHTTP/ServerXMLHTTP ยังถูกห่อหุ้มไว้บนพื้นฐานของมันเช่นกัน การใช้งาน WinHttpRequest นั้นเหมือนกับของ XmlHttp โดยประมาณ
WaitForResponse เมื่อส่งคำขอในลักษณะอะซิงโครนัส คุณสามารถใช้วิธีนี้เพื่อควบคุมกระบวนการของคำขอ เวลารอที่ระบุในหน่วยวินาทีคือค่าที่ต้องทำให้เสร็จโดยวิธีการส่งข้อมูลแบบอะซิงโครนัส SetTimeouts
ในสคริปต์ฝั่งเซิร์ฟเวอร์ คุณไม่สามารถใช้ฟังก์ชันการโทรกลับโดยตรงเพื่อควบคุมคำขอแบบอะซิงโครนัสเหมือนกับที่ไคลเอ็นต์ทำ และไม่มีฟังก์ชันที่เกี่ยวข้องในการใช้โปรแกรมเพื่อเข้าสู่โหมดสลีปในช่วงระยะเวลาหนึ่ง ดังนั้น เพื่อรอการร้องขอ return เราสามารถใช้วิธีนี้เพื่อรอช่วงระยะเวลาหนึ่งได้
คัดลอกรหัสรหัสดังต่อไปนี้:
-
DimWinHttp
ตั้งค่า WinHttp = Server.CreateObject (WinHttp.WinHttpRequest.5.1)
'ตั้งค่าพารามิเตอร์
WinHttp.SetTimeouts 60000, 60000, 60000, 3000 ' ตั้งค่าการหมดเวลาการทำงาน
'WinHttp.SetTimeouts แก้ไขหมดเวลา, เชื่อมต่อหมดเวลา, ส่งหมดเวลา, รับหมดเวลา
'resolveTimeout = 10,000 'หมดเวลาสำหรับการแก้ไขชื่อ DNS, 10,000 มิลลิวินาที
'connectTimeout = 10,000 ' หมดเวลาสำหรับการสร้างการเชื่อมต่อ Winsock 10,000 มิลลิวินาที
'sendTimeout = 120000 'หมดเวลาสำหรับการส่งข้อมูล 120000 มิลลิวินาที
'receiveTimeout = 60000 'หมดเวลาสำหรับการรับการตอบสนอง 60,000 มิลลิวินาที
WinHttp.Option(4) = 13056 'ละเว้นการตั้งค่าสถานะข้อผิดพลาด
WinHttp.Option(6) = False 'เมื่อเป็นจริง มันจะข้ามโดยอัตโนมัติเมื่อเพจที่ร้องขอถูกเปลี่ยนเส้นทาง False จะไม่ข้ามและขัดขวางสถานะ 302 ที่ส่งคืนโดยเซิร์ฟเวอร์โดยอัตโนมัติ
WinHttp.Open GET, http://www.baidu.com/, False 'GET หรือ POST, Url, โหมดซิงโครนัสเท็จ;
'เขียนข้อมูลส่วนหัว HTTP
WinHttp.SetRequestHeader ยอมรับ */* 'ยอมรับประเภทข้อมูล
WinHttp.SetRequestHeader ยอมรับภาษา zh-cn,zh 'ภาษาของระบบผู้ใช้
WinHttp.SetRequestHeader User-Agent, Mozilla/6.0 'ข้อมูลเบราว์เซอร์ผู้ใช้'
WinHttp.SetRequestHeader ประเภทเนื้อหา, application/x-www-form-urlencoded 'วิธีการเข้ารหัส
ผู้อ้างอิง WinHttp.SetRequestHeader, http://www.baidu.com/ 'แหล่งที่มา
การเชื่อมต่อ WinHttp.SetRequestHeader, ปิด 'ปิด = ไม่เก็บการเชื่อมต่อ, Keep-Alive = รักษาการเชื่อมต่อ (การเชื่อมต่อแบบถาวร)
'WinHttp.SetRequestHeader Accept-Encoding, gzip, deflate 'หากส่งแล้ว gzip, deflate การเข้ารหัสที่บีบอัดจะถูกส่งคืน
'WinHttp.SetRequestHeader Content-Length, Len(Str) 'ความยาวของเนื้อหา ใช้ในวิธีการโพสต์
WinHttp.SetRequestHeader Cookie ทดสอบคุกกี้!
'ส่งข้อมูล.
WinHttp.Send 'วิธีการโพสต์: WinHttp.Send (พารามิเตอร์)
WinHttp.WaitForResponse 'รอการร้องขอส่งคืน นอกจากนี้ยังสามารถใช้ได้ใน XMLHTTP
'ผลลัพธ์ที่ได้
Response.Write WinHttp.Status 'สถานะ HTTP ปัจจุบัน
'Response.Write WinHttp.ResponseText' ข้อมูลข้อความ
Response.BinaryWrite WinHttp.ResponseBody 'ข้อมูลสตรีมข้อมูลไบนารี'
-
ตัวเลือก () ที่เกี่ยวข้อง:
WinHttpRequestOption_UserAgentString = 0;
WinHttpRequestOption_URL = 1;
WinHttpRequestOption_URLCodePage = 2;
WinHttpRequestOption_EscapePercentInURL = 3;
WinHttpRequestOption_SslErrorIgnoreFlags = 4;
WinHttpRequestOption_SelectCertificate = 5; '13056 = ละเว้นแฟล็กข้อผิดพลาด
WinHttpRequestOption_EnableRedirects = 6; 'เมื่อเป็นจริง เมื่อมีการกระโดดในหน้าที่ร้องขอ ให้ดึงข้อมูลหน้ากระโดด เท็จ จะไม่คว้ามันในทางตรงกันข้าม
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;
คำอธิบายวิธีการ
ยกเลิกยกเลิกวิธีการส่ง WinHTTP
GetAllResponseHeadersดึงข้อมูลส่วนหัวการตอบสนอง HTTP ทั้งหมด
GetResponseHeader ดึงข้อมูลส่วนหัวการตอบสนอง HTTP
เปิด เปิดการเชื่อมต่อ HTTP ไปยังทรัพยากร HTTP
ส่ง ส่งคำขอ HTTP ไปยังเซิร์ฟเวอร์ HTTP
SetAutoLogonPolicy ตั้งค่านโยบายการเข้าสู่ระบบอัตโนมัติปัจจุบัน
SetClientCertificate เลือกใบรับรองไคลเอ็นต์ที่จะส่งไปยังเซิร์ฟเวอร์ Hypertext Transfer Protocol Secure (HTTPS)
SetCredentials ตั้งค่าข้อมูลประจำตัวที่จะใช้กับเซิร์ฟเวอร์ HTTP ไม่ว่าจะเป็นต้นทางหรือพร็อกซีเซิร์ฟเวอร์
SetProxy ตั้งค่าข้อมูลพร็อกซีเซิร์ฟเวอร์
SetRequestHeader เพิ่ม เปลี่ยนแปลง หรือลบส่วนหัวคำขอ HTTP
SetTimeouts ระบุเวลาที่ผ่านไปแต่ละรายการสำหรับการดำเนินการส่ง/รับส่วนประกอบในหน่วยมิลลิวินาที
WaitForResponse ระบุเวลารอเป็นวินาทีสำหรับวิธีการถ่ายโอนแบบอะซิงโครนัสเพื่อทำให้ค่าสมบูรณ์ SetTimeouts
วัตถุ WinHttpRequest กำหนดคุณสมบัติต่อไปนี้
คำอธิบายประเภทการเข้าถึงคุณสมบัติ
ตัวเลือกการอ่าน/เขียนชุดหรือดึงค่าตัวเลือก WinHTTP
ResponseBody อ่านอย่างเดียว ดึงเนื้อหาเอนทิตีการตอบสนองเป็นอาร์เรย์ไบต์ที่ไม่ได้ลงนาม
ResponseStream อ่านอย่างเดียว ดึง IStream เป็นเอนทิตีการตอบสนอง
ResponseText อ่านเฉพาะเป็นข้อความที่ดึงมาจากเนื้อหาเอนทิตีการตอบสนอง
รหัสสถานะ HTTP แบบอ่านอย่างเดียวจากครั้งล่าสุดที่มีการตอบกลับ
StatusText อ่านอย่างเดียวได้รับข้อความสถานะ HTTP
กิจกรรม
วัตถุ WinHttpRequest กำหนดเหตุการณ์ต่อไปนี้
เหตุการณ์ต่อไปนี้ถูกกำหนดโดยวัตถุ WinHttpRequest
เหตุการณ์ เหตุการณ์ คำอธิบาย
OnError เกิดขึ้นเมื่อมีข้อผิดพลาดรันไทม์ในแอปพลิเคชัน
เกิดขึ้นเมื่อมีข้อผิดพลาดรันไทม์ของแอปพลิเคชันเกิดขึ้น
OnResponseDataAvailable เกิดขึ้นเมื่อข้อมูลพร้อมใช้งานจากการตอบกลับ
เกิดขึ้นเมื่อมีข้อมูลการตอบสนอง
OnResponseFinished เกิดขึ้นเมื่อข้อมูลการตอบสนองเสร็จสมบูรณ์
เกิดขึ้นเมื่อข้อมูลการตอบสนองเสร็จสมบูรณ์
OnResponseStart เกิดขึ้นเมื่อข้อมูลการตอบสนองเริ่มได้รับ
เกิดขึ้นเมื่อข้อมูลการตอบสนองเริ่มได้รับ
หมายเหตุ
วัตถุ WinHttpRequest ใช้อินเทอร์เฟซ IErrorInfo เพื่อให้ข้อมูลข้อผิดพลาด
วัตถุ WinHttpRequest ใช้อินเทอร์เฟซ IErrorInfo เพื่อให้ข้อมูลข้อผิดพลาด
สามารถรับคำอธิบายและค่าความผิดพลาดที่เป็นตัวเลขได้ด้วยวัตถุ Err ใน Microsoft Visual Basic Scripting Edition (VBScript)
และวัตถุ Error ใน Microsoft JScript
หมายเลขข้อผิดพลาด 16 บิตล่างสอดคล้องกับค่าที่พบในข้อความแสดงข้อผิดพลาด
หมายเหตุ สำหรับ Windows XP และ Windows 2000 โปรดดูข้อกำหนดรันไทม์
หมายเหตุ: สำหรับ Windows XP และ Windows 2000 โปรดดูข้อกำหนดรันไทม์
ความต้องการ
ไคลเอนต์ที่รองรับขั้นต่ำ Windows XP, Windows 2000 Professional พร้อม SP3 Windows XP
เซิร์ฟเวอร์ขั้นต่ำที่รองรับ Windows Server 2003, Windows 2000 Server พร้อม SP3
สามารถแจกจ่ายต่อได้สำหรับ WinHTTP 5.0 และ Internet Explorer 5.01 หรือใหม่กว่าบน Windows XP และ Windows 2000
WinHTTP 5.0 และ Internet Explorer 5.01 หรือสูงกว่าสำหรับ Windows XP และ Windows 2000
IDL HttpRequest.idl HttpRequest.idl
ไลบรารี Winhttp.lib Winhttp.lib
DLL Winhttp.dll Winhttp.dll