国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#模擬百度登錄并到指定網站評論回帖(四)

2019-11-14 15:48:42
字體:
來源:轉載
供稿:網友

基本的實現功能前面已經全部講完,基本上可以復制黏貼完成登錄百度的過程了

今天的這一貼就說說怎么獲取百度的驗證碼

內容回顧:還記得前面第一貼說的如果登錄發生異常,百度會發回2個值嗎?是的,就是codeType和codeString這兩個值,用前面的JSON數據解析可以分別獲取。

前面也說到codeType是不變的(至少同一次請求時不變)。請求驗證碼的時候會要求傳遞這個參數,所以要想得到正確的驗證碼,這個參數是必不可少的,否則你請求多少次都是一個錯誤的驗證碼!

具體代碼入下

//封裝更換驗證碼
        public void ReGetCode() 
        {
            string reSet_code = string.Format("https://passport.baidu.com/v2/?reggetcodestr&token={0}&tpl=zongheng&apiver=v3&tt={1}&fr=login&vcodetype={2}&callback=bd__cbs__ta1xss", token, Utility.GetTimeStamp(),vcodeType);
            string codeContent = helper.GetPageResponse_Get(reSet_code, Utility.UrlDecode("http://passport.zongheng.com/?location=http%3A%2F%2Fwww.zongheng.com%2F"),"*/*");
                    if (_regex.IsMatch(codeContent))
                        codeContent = _regex.Match(codeContent).Value;
                    var codeResult = JsonConvert.DeserializeObject<Reget_Code>(codeContent);
                    _codestring = codeResult.Data_Code.VerifyStr;
                    string url_NewCode = string.Format("https://passport.baidu.com/cgi-bin/genimage?{0}", _codestring);
                  Bitmap bp= helper.GetCode(url_NewCode, Utility.UrlDecode("http://passport.zongheng.com/?location=http%3A%2F%2Fwww.zongheng.com%2F"));
                  pictureBox1.Image = bp;
        }

 

可能這樣單獨看,有人會看不懂什么意思,這里就注釋一下

reSet_code 是代表獲取codestring的網頁,后面的參數分別是前面獲取到的token、生成的時間戳、以及codeType

codeContent 代表請求網頁后返回的內容,參數就是用到前面的HTTPHelper類的Post方法需要提供的參數

接下來是分析內容,獲取codestring,然后對驗證碼的圖片網頁重新發起請求,將驗證碼顯示回picturebox上

至于codeType怎么來的,這個在請求登錄的時候,發生異常就會返回

 

下面是檢驗驗證碼是否正確的方法,在文本框輸入了驗證碼之后按回車

 PRivate void txtcode_KeyDown(object sender, KeyEventArgs e)
        {

if (e.KeyCode == Keys.Enter)
                    {

Thread th_2 = null;
                    if (e.KeyCode == Keys.Enter)
                    {
                        th_2 = new Thread(() =>
                            {
                                verifycode = txtcode.Text;
                                //先訪問一次驗證碼校驗頁面,看看驗證碼是否正確
                                string url_checkCode = string.Format("https://passport.baidu.com/v2/?checkvcode&token={0}&tpl=zongheng&apiver=v3&tt={1}&verifycode={2}&codestring={3}&callback=bd__cbs__nm74kc", token, Utility.GetTimeStamp(), verifycode, _codestring);
                                string checkcode = helper.GetPageResponse_Get(url_checkCode, Utility.UrlDecode("http://passport.zongheng.com/?location=http%3A%2F%2Fwww.zongheng.com%2F"), "*/*");
                                if (_regex.IsMatch(checkcode))
                                    checkcode = _regex.Match(checkcode).Value;
                                var code_msg = JsonConvert.DeserializeObject<CheckvCode>(checkcode);
                                CodeMsg(code_msg.ErrInfo.No);
                                if (code_msg.ErrInfo.No != "0")
                                    return;
                                LoginStatus status = Login(verifycode, _codestring, token, raskey, userIndex);
                                GoComment_Page(status);
                                th_2.Abort();
                            });
                        th_2.Start();
                        th_2.IsBackground = true;

}

}

 

好了,今天就到這里,如果有問題,歡迎評論交流~


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新竹县| 察隅县| 泗洪县| 齐齐哈尔市| 琼中| 左权县| 梅河口市| 天镇县| 濮阳县| 石景山区| 小金县| 西乌珠穆沁旗| 阿拉善盟| 莎车县| 太谷县| 余姚市| 赞皇县| 新绛县| 陕西省| 陆丰市| 武冈市| 抚顺县| 嘉鱼县| 皮山县| 鹤岗市| 贡觉县| 泸溪县| 唐山市| 清水河县| 万宁市| 芒康县| 高平市| 老河口市| 洛浦县| 孝感市| 济宁市| 婺源县| 祁东县| 富宁县| 安福县| 福建省|