VBS偽造HTTP-REFERER的實(shí)現(xiàn)方法
在測(cè)試目錄寫了一個(gè)簡(jiǎn)單的referer.php,代碼如下
<?php if (!isset($_SERVER["HTTP_REFERER"])) echo "No Referer"; else echo $_SERVER["HTTP_REFERER"]; ?>
如果直接點(diǎn)擊上面的鏈接,那么頁面會(huì)顯示referer頁面的鏈接。
Set http = CreateObject("msxml2.xmlhttp") http.open "GET","http://jb51.net/test/referer.php",False http.setRequestHeader "Referer","http://jb51.net" http.send WScript.Echo http.responseText
但是如果我用VBS調(diào)用msxml2.xmlhttp組件訪問這個(gè)頁面,返回的卻是No Referer。實(shí)在匪夷所思,難道我的代碼寫錯(cuò)了?
于是Google了一下“VBS偽造HTTP REFERER”,發(fā)現(xiàn)搜出來的內(nèi)容大部分和這篇文章一樣,不用看又是復(fù)制粘貼,你抄我的,我抄你的,抄來抄去不知道到底是誰的,而且還是錯(cuò)的!
那篇文章第一個(gè)例子是ASP的
dim http set http=server.createobject("MSXML2.XMLHTTP") Http.open "GET",url,false Http.setRequestHeader "Referer","http://www.fromdomain.cn/" Http.send()
開始我還以為ASP下的VBS和我直接雙擊運(yùn)行的VBS不一樣,ASP下的比較牛,可以改Referer。為此我還專門裝了IIS測(cè)試,發(fā)現(xiàn)返回的照樣是No Referer。后來才看到下面的留言,“原諒我對(duì)asp不熟,給不了你什么幫助,自己查點(diǎn)其他資料參考一下吧”,“這我沒怎么玩asp了,代碼只是參考來的,asp的沒測(cè)試過”。
我真的不想罵人,不熟你寫也就算了,起碼測(cè)試一下吧,沒有測(cè)試過的代碼你也好意思貼上來?后來在千一網(wǎng)絡(luò)(這個(gè)網(wǎng)絡(luò)貌似不錯(cuò))看到一個(gè)比較靠譜的答案,Referer在ASP和Ajax中是無法通過設(shè)置Header來更改的。
怒了,既然xmlhttp組件不行,我用socket來寫總行了吧?。ㄗⅲ翰皇撬须娔X上都注冊(cè)了Winsock組件)
Set socket = WScript.CreateObject("MSWinsock.Winsock","Winsock_") socket.RemoteHost = "jb51.net" socket.RemotePort = 80 socket.Connect Do WScript.Sleep 100 Loop Sub Winsock_Connect() data = "GET /test/referer.php HTTP/1.1" & vbCrLf &_ "Referer: http://jb51.net" & vbCrLf &_ "Host: jb51.net" & vbCrLf & vbCrLf socket.SendData data End Sub Sub Winsock_DataArrival(bytesTotal) socket.GetData str WScript.Echo Utf8ToUnicode(str) WScript.Quit End Sub
Utf8ToUnicode函數(shù)比較長(zhǎng)就不貼出來了,以前的文章寫過。測(cè)試結(jié)果如下:
HTTP/1.1 200 OK
Date: Thu, 04 Nov 2010 14:05:20 GMT
Server: Apache
Transfer-Encoding: chunked
Content-Type: text/html
f
http://jb51.net
0
可以肯定偽造Referer成功了,但是返回的結(jié)果好像有點(diǎn)奇怪,jb51.net前面和后面一行的f和0是什么東西啊?(其實(shí)用瀏覽器訪問也是這樣返回的,只不過瀏覽器不顯示給我們看罷了)我猜想f是Referer字符串的長(zhǎng)度,但是搜了半天也找不到解釋。不管了,偽造成功就行,結(jié)果難看點(diǎn)就難看點(diǎn)吧。
曾經(jīng)寫過一篇《VBS偽造HTTP-REFERER》,是用Winsock控件實(shí)現(xiàn)的,這個(gè)控件系統(tǒng)默認(rèn)是沒有安裝的。還是那句話,這種沒有可移植性的代碼還是少寫的好。我的理念是,“一旦寫成處處可用”(聽起來好像Java)。
今天無意中發(fā)現(xiàn)還有WinHttp.WinHttpRequest.5.1這個(gè)COM,功能看起來和Msxml2.XMLHTTP差不多。測(cè)試了一下,可以在HTTP請(qǐng)求中發(fā)送Referer。
Set http = CreateObject("WinHttp.WinHttpRequest.5.1") http.Open "GET","http://demon.tw/test/referer.php",False http.SetRequestHeader "Referer","http://demon.tw" http.Send WScript.Echo http.responseText
最后,再次鄙視一下那些測(cè)試都不測(cè)試就隨便復(fù)制粘貼的(Google一下“ASP偽造REFERER”,你就知道)。
- php 偽造HTTP_REFERER頁面URL來源的三種方法
- PHP偽造來源HTTP_REFERER的方法實(shí)例詳解
- php中HTTP_REFERER函數(shù)用法實(shí)例
- 完美兼容各大瀏覽器獲取HTTP_REFERER方法總結(jié)
- php中XMLHttpRequest(Ajax)不能設(shè)置自定義的Referer的解決方法
- php中突破基于HTTP_REFERER的防盜鏈措施(stream_context_create)
- asp Http_Referer,Server_Name和Http_Host
- 一段ASP的HTTP_REFERER判斷代碼
- ASP,PHP與.NET偽造HTTP-REFERER方法及防止偽造REFERER的方法
- ASP,PHP與.NET偽造HTTP-REFERER方法及防止偽造REFERER方法探討
- ASP,PHP與.NET偽造HTTP-REFERER方法及防止偽造REFERER方法探討
- HTTP Referer詳解及Referer控制
相關(guān)文章
vbs解決處理TXT文本數(shù)據(jù)相關(guān)問題實(shí)現(xiàn)代碼
使用vbs處理txt數(shù)據(jù)時(shí),會(huì)遇到一些問題,本文將提供詳細(xì)的解決方法,希望可以幫助你們2012-12-12VBS實(shí)現(xiàn)的系統(tǒng)服務(wù)備份優(yōu)化代碼
將下面代碼保存為VBS執(zhí)行即可,服務(wù)優(yōu)化規(guī)則可以自由修改(上面是我現(xiàn)在使用的優(yōu)化規(guī)則),并且每次優(yōu)化都會(huì)在我的文檔里面生成一個(gè)對(duì)應(yīng)日期的服務(wù)備份文件.可以直接還原2013-01-01用vbs讀取index.dat內(nèi)容的實(shí)現(xiàn)代碼
用vbs讀取index.dat內(nèi)容的實(shí)現(xiàn)代碼,需要的朋友可以參考下。2010-11-11可以得到當(dāng)前系統(tǒng)信息的腳本sysinfo.vbs
可以得到當(dāng)前系統(tǒng)信息的腳本sysinfo.vbs...2007-02-02