用 VB 實現表單的自動提交 (轉)
【序】
以摩托羅拉的九月大獎賽為例,下面介紹用 VB 實現帶校驗碼的網頁表單的自動提交。我們現看看摩托羅拉的投票頁面:?id={525147E1-C4A7-41EE-9190-95800AC81E29}" target=_blank>{525147E1-C4A7-41EE-9190-95800AC81E29}
如果要對投票的話就必須先填寫驗證碼!由於驗證碼是圖片,而且是隨即的,所以對自動提交資料增加了很大的難度。因此,如果要提交投票就必須先得到驗證碼!
難點:(1)取得驗證碼圖片並識別成相應資料;(2)提交資料表單。
首先我們來剖析一下本頁面的 HTML ,程式碼如下:
… …
… …
為了保證程式碼的易讀性,進行了相應的處理,並省略了部分無用的程式碼!不難看出的是:
(1)表單的名稱是:form1 ; 提交的頁面是:Photo_Vote.asp ; 提交方式是:Post
(2)表單提交的資料有:id 和 CheckCode 。其中 id 為隱藏域,內容是:{525147E1-C4A7-41EE-9190-95800AC81E29}
(3)驗證碼的圖片為:count.asp?sksid=624BE861D1FF9641DE7F1D1FF967C1E711D1FF95CD5E9B1D1FF9|3812D0|1AF2D7 它是由 Count.asp 隨即動態生成,存在不確定性!
(4)在網頁的驗證碼的圖片上按右鍵,儲存圖片時顯示為:Count.XBM 即圖片的格式為:XBM
透過上面的分析,問題就可以一個一個解決了。
【表單的提交】
表單的提交有幾種方式,常用的有兩種:一是直接提交含表單提交資料的網址;二是修改原表單,然後提交新資料!
對於第一種,我們在得到驗證碼後可以這樣傳送:{525147E1-C4A7-41EE-9190-95800AC81E29}&CheckCode=6793 然而由於摩托羅拉的網站對 進行了操作,這樣做起來不是很好,而且也難成功,所以我們直能改用第二種方法,修改原有的表單。
首先,利用 Browers 取得網頁原始碼(具體方法,請參考:tips/showdoc.asp?detail_id=1337" target=_blank>http://www.cndevx.com/tips/showdoc.asp?detail_id=1337)利用VB中的 Replace 將原表單網頁的程式碼修改成:
… …
… …
然後利用 Webbrowers.Document.write HTMLCodes 方式,講替換的 HTML 程式碼重新寫入 Webbrowers 控制元件裡面, Webbrowers 控制元件將自動執行新的程式碼,即自動提交了資料!
這樣,整個提交過程就自動完成了,如果我們再加上相應的時間控制或者其他網站的話,就可以實現自動重新整理和訊息群發了!
【XBM 圖片檔案】
XBM(X BitMap)一種圖形檔案格式
檔案結構類似如下:
#define counter_width 32 //定義圖片寬(象素)
#define counter_height 10 //定義圖片高(象素)
static unsigned char counter_bits[]={
0x3c,0x3c,0xfe,0x3c,0x66,0x66,0xfe,0x66,0xc3,0xc3,0x06,0x60,0x66,0x66,0x06,0x60,0x3c,0x3c,0x3e,0x30,0x66,0x66,0x60,0x18,0xc3,0xc3,0xc0,0x0c,0xc3,0xc3,0xc3,0x06,0x66,0x66,0x66,0x06,0x3c,0x3c,0x3c,0x7e}; //影像資料,採取16進位制格式的,還原影像時需轉換成二進位制後資料反向,否則圖片將是反的
得到 XBM 圖片,分離成相應的字元,然後與預先的圖片檔案比較,即可得出此影像代表的數字,即所謂的識別!
演示:UPLOADfile/941042070557.rar">http://www.cndevx.com/club/uploadfile/2003941042070557.rar
源 代 碼:http://www.cndevx.com/club/uploadfile/20039410421872749.rar
=========================
附:使用VB獲得一頁的HTML程式碼
加入WebBrowser、Timer、Commanutton控制元件各一個,然後使用以下程式碼:
Private Sub Command1_Click()
WebBrowser1.Navigate "{525147E1-C4A7-41EE-9190-95800AC81E29}"
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Dim doc, objhtml As
Dim i As Integer
Dim strhtml As String
If Not WebBrowser1.Busy Then
Set doc = WebBrowser1.Document
i = 0
Set objhtml = doc.body.createtextrange()
If Not IsNull(objhtml) Then
Text1.Text = objhtml.htmltext
End If
Timer1.Enabled = False
End If
End Sub
這是網上流行的一種方法,但是從我使用來看,因為 WebBrowers 控制元件本身有 DocumentComplete 事件,也就是說並不需要使用 Timer 控制元件!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-962200/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java實現動態的匯出Excel表功能--用form表單提交JavaExcelORM
- 觸發form表單自動提交的方式有哪些?ORM
- form表單按enter鍵自動提交的問題ORM
- 用phpmailer實現網頁表單提交傳送郵件功能PHPAI網頁
- 訂單自動過期實現方案 - 轉
- 提交表單
- 前端頁面上實現表單提交檔案上傳功能前端
- 表單提交出現400錯誤(SSM)SSM
- 【react】實現動態表單中巢狀動態表單React巢狀
- 巧妙利用 iframe,實現和 Ajax 一樣的非同步提交表單效果非同步
- 實現動態表單的一種思路
- form表單提交方式ORM
- 基於vue自動化表單實踐Vue
- Python 實現自動化 Excel 報表PythonExcel
- 用slot和component實現表單共用
- SpringMvc上傳圖片及表單提交(單檔案+實體類引數提交)SpringMVC
- 如何避免表單的重複提交?
- js表單檔案提交JS
- Ajax 提交表單資料
- python+requests 實現介面自動化 [更新 提交原始碼至 GitHub]Python原始碼Github
- 怎樣實現填報表定時提交
- 網站開發之MyEclipse簡單實現JSP網頁表單提交及傳遞值網站EclipseJS網頁
- 如何優雅的提交一個表單
- Vuejs基本知識(十三)【表單的提交】VueJS
- 觸發器實現表資料自動更新觸發器
- 4.2.13 主備庫實現自動故障轉移
- java 表單避免重複提交?Java
- jFinal避免表單重複提交
- PHP 防止表單重複提交PHP
- form表單提交注意事項ORM
- 用ListView簡單實現滑動列表View
- Laravel-admin 表單提交兩級聯動功能編寫Laravel
- Form 表單提交知識的總結(全)ORM
- 用 Python(PyVISA) 實現儀器自動化Python
- 用python實現selenium 自動化測試Python
- 實現MySQL表結構自動分割槽指令碼MySql指令碼
- 訂單超時自動關閉的實現方案總結
- 基於element-ui實現的vue版的動態表單UIVue
- C# Post 模擬表單提交C#