iT邦幫忙

0

c#模擬登入

dog830228 11 月前915 瀏覽

如提
小弟在做一個模擬登入的小程式
目前遇到驗證碼的問題
我用HttpWebRequest 取得網站資訊
但是我不知道要怎麼直接獲的此次的驗證碼
因為它是tag 如

fillano iT邦超人 1 級 ‧ 11 月前 檢舉
你的問題沒完成?
dog830228 iT邦新手 4 級 ‧ 11 月前 檢舉
不好意思
我的發問不知道為啥被斷掉了
如果模擬登入 遇到驗證碼要怎麼辦

2 個回答

1
fillano
iT邦超人 1 級 ‧ 11 月前
最佳解答

感覺他問的是相反地solution...

可以用System.Xml.XmlDocuemnt來處理接獲的Response Stream,然後用XmlDocument的方法來取得你要的Node資訊,不過驗證碼會比較麻煩...

驗證碼通常會存在伺服器端的Session,而Session常常是依賴Session Cookie來辨識,所以你在這個過程中會需要自己管理cookie。另外,他是圖片...你要想辦法自己破解出驗證碼XD

流程大概像這樣:

  1. 發出第一次HttpWebRequest,取得Response跟Cookie
  2. 用XmlDocument剖析Response,取得驗證碼使用的圖片
  3. 破解驗證碼使用的圖片,讀出驗證碼(不知道有什麼工具可以做,自己google吧)
  4. 根據步驟2取得的表單,送出適當的Request
看更多先前的回應...收起先前的回應...
dog830228 iT邦新手 4 級 ‧ 11 月前 檢舉

我有取得驗證碼的圖片
將它用Bitmap存起來
但我發現那和我第一次請求的驗證碼不一樣

fillano iT邦超人 1 級 ‧ 11 月前 檢舉

你有用一樣的cookie去請求驗證碼的圖嗎?

dog830228 iT邦新手 4 級 ‧ 11 月前 檢舉

我有用 response.Headers.Get("Set-Cookie");
取得server第一次給我的cookie
之後再用此cookie去請求圖片

dog830228 iT邦新手 4 級 ‧ 11 月前 檢舉

我有用 response.Headers.Get("Set-Cookie");
取得server第一次給我的cookie
之後再用此cookie去請求圖片

fillano iT邦超人 1 級 ‧ 11 月前 檢舉

這樣有點麻煩,你用CookieContainer去管理就好。(自己new CookieContainer(),然後之後的HttpWebRequest都沿用就好,你只是需要Cookie管理機制,但是並不太需要處理他的內容)

驗證碼圖片應該是每次request都不一樣,而且在request之後,session中存的驗證碼也會跟著改。

fillano iT邦超人 1 級 ‧ 11 月前 檢舉

補充:剛剛試用tesseract,破解效果還算OK。

話說目前還不少雲端破Captcha服務,還提供API做整合,只是要錢XD

dog830228 iT邦新手 4 級 ‧ 11 月前 檢舉

你是說我用CookieContainer來獲取管理cookie
並在之後的請求中一並將他傳過去是嗎?

fillano iT邦超人 1 級 ‧ 11 月前 檢舉

HttpWebRequest有一個CookieContainer屬性...,只要每次都用同一個就好。

0
kk8606
iT邦新手 5 級 ‧ 11 月前

好像沒問完? 如果是要取圖形驗證碼, goo一下就有

https://dotblogs.com.tw/shadow/archive/2011/10/05/38823.aspx

我要發表回答

立即登入回答