確實(shí),如果在原網(wǎng)站如果存在表單提交或cookies的驗(yàn)證,對(duì)于ASP來說,不使用基于SOCKET的組件就難以完成,其實(shí),XMLHTTP的另外兩個(gè)方法被我們忽略了,而這正是問題的關(guān)鍵。
下面首先來說說這個(gè)方法
1。.send()
由于流行的小偷是使用的GET而不是POST來傳送數(shù)據(jù),所以很多人忽略了這個(gè)方法,而使用SEND發(fā)送數(shù)據(jù)也很簡(jiǎn)單,就是SEND("內(nèi)容"),可是,
發(fā)送表單就不是這么簡(jiǎn)單,因?yàn)槟惆l(fā)送的表單如果是中文的話,就要牽扯到編碼的問題了。
首先,你在OPEN時(shí)要確定是用POST即.open("POST",地址,是否異步)。
然后,在SEND里面加上你表單的內(nèi)容,比如說,你要提交的表單有3個(gè)表單域,分別是A,B,C,對(duì)應(yīng)的值分別是1,2,3,那么,你在SEND里這樣寫就可以提交表單了,.send("A=1&B=2&C=3"),怎么樣,很簡(jiǎn)單吧,是不是沒想到呢?但是別高興的太早了,我前面說到了,如果表單的值是中文的話,數(shù)據(jù)傳輸?shù)木蜁?huì)出錯(cuò)了。這里我們借助一個(gè)函數(shù)escape(),熟悉JAVASCRIPT的朋友都應(yīng)該知道這個(gè)函數(shù)的作用了,現(xiàn)在VBSCRIPT同樣支持這個(gè)函數(shù)。.send("A=escape('值1')&B=escape('值2')&C=escape('值3')")。
2。.setRequestHeader()
接著上面的所說,你的數(shù)據(jù)send出去了,對(duì)方卻不會(huì)接收到,為什么了,其實(shí),那是因?yàn)槟愕腍TTP頭少了一個(gè)東西,然后用這個(gè)函數(shù)把加上去就可以了,具體就是.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded"),告訴對(duì)方你是提交了一個(gè)urlencode編碼的表單。
好的,說完了表單的提交來說怎么傳送cookies。
其實(shí)傳送cookies也很簡(jiǎn)單了,同樣利用這個(gè)函數(shù)在HTTP頭里添加?xùn)|西,比如,我當(dāng)前在落伍的cookies是
cdb_sid=ybBiK0;cdb_cookietime=315360000;cdb_oldtopics=D869008D;cdb_visitedfid=1D45;cdb_auth=AQYHXVFDGERdsggVQA1VYUgxQDwFVV1dUAlwFAFRXVwU%2FbAIJB1lUCg;cdb_fid45=1113370145
現(xiàn)在我要發(fā)送這個(gè)cookies就直接是.setRequestHeader("Cookie","cdb_sid=ybBiK0;cdb_cookietime=315360000;cdb_oldtopics=D869008D;cdb_visitedfid=1D45;cdb_auth=AQYHXVFDGERdsggVQA1VYUgxQDwFVV1dUAlwFAFRXVwU%2FbAIJB1lUCg;cdb_fid45=1113370145")
當(dāng)然,有些網(wǎng)站頁(yè)面有頁(yè)面判斷功能,這個(gè)也不難,就是.setRequestHeader("Referer","來路的絕對(duì)地址")