作者jackiechin (jackiechin)
看板Visual_Basic
標題Re: 請問我想要直接控制網頁,但找不到方向
時間Mon Apr 3 10:36:48 2017
※ 引述《waiter337 (給開司一罐蘇格登)》之銘言:
: 因為工作上的需求,我想寫個小程式
: 我找個網頁來練習
: https://login.104.com.tw/login.cfm?frombar=jbbar_login
: 這是104的登入網頁
: 假設說,我想要在身份證字號 密碼 輸入值
: 會員登入click
: 因為我其他的電腦,沒有裝excel
: 想說我該從哪個軟體下手
: 是vb6,.net,還是asp?
: 順序是這樣
: 1.手動開啟ie網頁
: 2.手動開啟程式(程式會自動上私人雲端伺服器抓資料,並放入程式中的資料庫)
: 在程式中的資料庫搜尋"登入資料"
: 選擇想要用的登入資料
: 將資料用vb from上設定好的按鈕觸發傳入ie網頁
: 補充:
: 每次開啟程式時,或者按下"F12"特定按鈕,
: 程式本身會去我的雲端伺服器,找資料庫,下載最新資料,儲存在程式內的資料庫
: 平常在搜尋登入資料時,並不會上伺服器下載資料
: 如果搜尋出的登入資料,覺得有錯,可以當下修改後按儲存,
: 儲存時,更新的資料會上傳雲端伺服器
: 因為我只有vba的底子
: vb只有很基礎的認知,
: 想問幾個問題
: 1.我該看哪些書
: 2.我該上網查哪些關鍵字
: 3.yotutbe中有沒有相關的影片可供教學
: 如果有人願意指引一下方向,一人300P 寄信 推文皆可算
: 3Q
給一個範例的流程,須要使用到Visual Studio 開一個WindowsForm專案來寫
要注意post login原來網頁有無包含到Hidden的欄位以及postURI是否會每次變動
以下為程式碼:
---------------------------------------------------------
Dim URI As String = "
https://login.104.com.tw/login.cfm?frombar=jbbar_login"
Dim postURI As String = "
https://login.104.com.tw/act_login.cfm?qazplm=805266_898335_132674"
Dim userName As String = "myname"
Dim passWord As String = "mypassword"
Dim cookieContainer As New CookieContainer()
Dim outputStream As System.IO.Stream = Nothing
'Get Login頁面
Dim request As HttpWebRequest = TryCast(WebRequest.Create(URI), HttpWebRequest)
request.Method = "GET"
request.KeepAlive = False
'接收回傳的Login頁面
Dim response As HttpWebResponse = TryCast(request.GetResponse(), HttpWebResponse)
Dim responseStream As System.IO.Stream = response.GetResponseStream()
Dim reader As New System.IO.StreamReader(responseStream, Encoding.UTF8)
Dim srcString As String = reader.ReadToEnd()
'自動填寫並送出Login頁面, 需要的參數名稱要自行查閱網頁原始碼的輸入框的name
Dim postString As String = "username={0}&password={1}"
postString = String.Format(postString,userName, passWord)
'轉換Post String data為 Byte
Dim postData As Byte() = Encoding.ASCII.GetBytes(postString)
'設定Login Post的相關參數
request = TryCast(WebRequest.Create(postURI), HttpWebRequest)
request.Method = "POST"
request.KeepAlive = False
request.ContentType = "application/x-www-form-urlencoded"
request.CookieContainer = cookieContainer
request.ContentLength = postData.Length
'接收回傳的Login資訊
response = TryCast(request.GetResponse(), HttpWebResponse)
responseStream = response.GetResponseStream()
reader = New System.IO.StreamReader(responseStream, Encoding.UTF8)
srcString = reader.ReadToEnd()
---------------------------------------------------------
透過程式登入的流程大致是這樣,srcString 就是登入成功看到畫面的網頁原始碼。
若登入後還需要多點很多層取得資料,基本上也可以仿照這個流程繼續接著寫
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.140.15.56
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Visual_Basic/M.1491187010.A.D78.html
※ 編輯: jackiechin (223.140.15.56), 04/03/2017 10:41:01
※ 編輯: jackiechin (223.140.15.56), 04/03/2017 10:47:24
1F:推 waiter337: 讚,順便跟你說一下,當時我也找到相關的解法 04/22 02:26
2F:→ waiter337: 我當時只有回在office版,查同樣的文章名稱 04/22 02:27
3F:→ waiter337: 你的我要在研究研究,感覺更深入 04/22 02:27