用 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
- javascript動態實現的表單提交效果程式碼例項JavaScript
- 用phpmailer實現網頁表單提交傳送郵件功能PHPAI網頁
- 輕鬆玩轉花樣表單表單提交(轉)
- EasyUI實現的form表單提交簡單程式碼例項UIORM
- 訂單自動過期實現方案 - 轉
- AngularJS實現的表單編輯提交功能簡單介紹AngularJS
- 點選enter和ctrl實現表單提交效果
- 自繪選單的實現 (轉)
- jQuery 數秒後自動提交form表單程式碼例項jQueryORM
- Spring 表單提交,後臺自動封裝有集合物件的物件Spring封裝物件
- javascrip 按下ctrl和enterEnter鍵實現提交表單Java
- **PHP分步表單提交思路(分頁表單提交)PHP
- 前端頁面上實現表單提交檔案上傳功能前端
- ASP.NET下的表單提交問題 (轉)ASP.NET
- 阻止點選回車實現的表單提交程式碼例項
- 【react】實現動態表單中巢狀動態表單React巢狀
- 用C++Builder實現Word 97自動化 (轉)UI
- 用ISAPI方式實現Web頁面的自動更新 (轉)APIWeb
- php表單提交PHP
- javascript提交表單JavaScript
- Delphi自動提交網頁表單和獲取框架網頁原始碼網頁框架原始碼
- 實現動態表單的一種思路
- 用自訂函式實現功能-------根據指定表名得到表的結構 (轉)函式
- 巧妙利用 iframe,實現和 Ajax 一樣的非同步提交表單效果非同步
- 點選回車實現表單提交效果程式碼例項
- 基於vue自動化表單實踐Vue
- DDL操作的自動提交
- Java+MyEclipse+Tomcat (二)配置Servlet及簡單實現表單提交JavaEclipseTomcatServlet
- Web 應用程式中提交表單時處理 GIF 動畫的最佳實踐Web動畫
- Ctrl+Enter鍵實現提交表單內容例項程式碼
- 使用jQuery.form外掛,實現完美的表單非同步提交jQueryORM非同步
- Python 實現自動化 Excel 報表PythonExcel
- 自動提交(AUTOCOMMIT)的配置MIT
- Js提交表單的兩種方法JS
- 把HTML表單提交的資料轉化成XML檔案的補充 (轉)HTMLXML
- 點選提交按鈕實現彈出警告框表單驗證效果
- Ajax 提交表單資料