• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    asp.net c#采集需要登錄頁面的實現原理及代碼

    來源:懂視網 責編:小采 時間:2020-11-27 22:41:51
    文檔

    asp.net c#采集需要登錄頁面的實現原理及代碼

    asp.net c#采集需要登錄頁面的實現原理及代碼:首先說明:代碼片段是從網絡獲取,然后自己修改。我想好的東西應該拿來分享。 實現原理:當我們采集頁面的時候,如果被采集的網站需要登錄才能采集。不管是基于Cookie還是基于Session,我們都會首先發送一個Http請求頭,這個Http請求頭里面就包含了網站需要的
    推薦度:
    導讀asp.net c#采集需要登錄頁面的實現原理及代碼:首先說明:代碼片段是從網絡獲取,然后自己修改。我想好的東西應該拿來分享。 實現原理:當我們采集頁面的時候,如果被采集的網站需要登錄才能采集。不管是基于Cookie還是基于Session,我們都會首先發送一個Http請求頭,這個Http請求頭里面就包含了網站需要的

    首先說明:代碼片段是從網絡獲取,然后自己修改。我想好的東西應該拿來分享。

    實現原理:當我們采集頁面的時候,如果被采集的網站需要登錄才能采集。不管是基于Cookie還是基于Session,我們都會首先發送一個Http請求頭,這個Http請求頭里面就包含了網站需要的Cookie信息。當網站接收到發送過來的Http請求頭時,會從Http請求頭獲取相關的Cookie或者Session信息,然后由程序來處理,決定你是否有權限訪問當前頁面。

    好了,原理搞清楚了,就好辦了。我們所要做的僅僅是在采集的時候(或者說HttpWebRequest提交數據的時候),將Cookie信息放入Http請求頭里面就可以了。

    在這里我提供2種方法。
    第一種,直接將Cookie信息放入HttpWebRequest的CookieContainer里。看代碼:
    代碼如下:


    protected void Page_Load(object sender, EventArgs e)
    {
    //設置Cookie,存入Hashtable
    Hashtable ht = new Hashtable();
    ht.Add("username", "youraccount");
    ht.Add("id", "yourid");
    this.Collect(ht);
    }
    public void Collect(Hashtable ht)
    {
    string content = string.Empty;
    string url = "http://www.ibest100.com/需要登錄后才能采集的頁面";
    string host = "http://www.ibest100.com";
    try
    {
    //獲取提交的字節
    byte[] bs = Encoding.UTF8.GetBytes(content);
    //設置提交的相關參數
    HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
    req.Method = "POST";
    req.ContentType = "application/json;charset=utf-8";
    req.ContentLength = bs.Length;
    //將Cookie放入CookieContainer,然后再將CookieContainer添加到HttpWebRequest
    CookieContainer cc = new CookieContainer();
    cc.Add(new Uri(host), new Cookie("username", ht["username"].ToString()));
    cc.Add(new Uri(host), new Cookie("id", ht["id"].ToString()));
    req.CookieContainer = cc;
    //提交請求數據
    Stream reqStream = req.GetRequestStream();
    reqStream.Write(bs, 0, bs.Length);
    reqStream.Close();
    //接收返回的頁面,必須的,不能省略
    WebResponse wr = req.GetResponse();
    System.IO.Stream respStream = wr.GetResponseStream();
    System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.GetEncoding("utf-8"));
    string t = reader.ReadToEnd();
    System.Web.HttpContext.Current.Response.Write(t);
    wr.Close();
    }
    catch (Exception ex)
    {
    System.Web.HttpContext.Current.Response.Write("異常在getPostRespone:" + ex.Source + ":" + ex.Message);
    }
    }

    第二種,每次打開采集程序時,需要先到被采集的網站模擬登錄一次,獲取CookieContainer,然后再采集。看代碼:
    代碼如下:

    protected void Page_Load(object sender, EventArgs e)
    {
    try
    {
    CookieContainer cookieContainer = new CookieContainer();
    string formatString = "username={0}&password={1}";//***************
    string postString = string.Format(formatString, "youradminaccount", "yourpassword");
    //將提交的字符串數據轉換成字節數組
    byte[] postData = Encoding.UTF8.GetBytes(postString);
    //設置提交的相關參數
    string URI = "http://www.ibest100.com/登錄頁面";//***************
    HttpWebRequest request = WebRequest.Create(URI) as HttpWebRequest;
    request.Method = "POST";
    request.KeepAlive = false;
    request.ContentType = "application/x-www-form-urlencoded";
    request.CookieContainer = cookieContainer;
    request.ContentLength = postData.Length;
    // 提交請求數據
    System.IO.Stream outputStream = request.GetRequestStream();
    outputStream.Write(postData, 0, postData.Length);
    outputStream.Close();
    //接收返回的頁面,必須的,不能省略
    HttpWebResponse response = request.GetResponse() as HttpWebResponse;
    System.IO.Stream responseStream = response.GetResponseStream();
    System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, Encoding.GetEncoding("gb2312"));
    string srcString = reader.ReadToEnd();
    //打開您要訪問的頁面
    URI = "http://www.ibest100.com/需要登錄后才能采集的頁面";//***************
    request = WebRequest.Create(URI) as HttpWebRequest;
    request.Method = "GET";
    request.KeepAlive = false;
    request.CookieContainer = cookieContainer;
    // 接收返回的頁面
    response = request.GetResponse() as HttpWebResponse;
    responseStream = response.GetResponseStream();
    reader = new System.IO.StreamReader(responseStream, Encoding.GetEncoding("gb2312"));
    srcString = reader.ReadToEnd();
    //
    輸出獲取的頁面或者處理
    Response.Write(srcString);
    }
    catch (WebException we)
    {
    string msg = we.Message;
    Response.Write(msg);
    }
    }

    也許有人會問,如果對方登錄的時候要驗證碼怎么辦?那你就用第一種方式吧,只不過需要你分析對方的Cookie。

    應用范圍:采集數據、論壇發帖、博客發文。

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    asp.net c#采集需要登錄頁面的實現原理及代碼

    asp.net c#采集需要登錄頁面的實現原理及代碼:首先說明:代碼片段是從網絡獲取,然后自己修改。我想好的東西應該拿來分享。 實現原理:當我們采集頁面的時候,如果被采集的網站需要登錄才能采集。不管是基于Cookie還是基于Session,我們都會首先發送一個Http請求頭,這個Http請求頭里面就包含了網站需要的
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产av无码专区亚洲国产精品| 欧美人与动牲交a欧美精品| 国产精品亚洲αv天堂无码| 熟妇无码乱子成人精品| 久久精品中文字幕一区| 国产一区二区精品| 无码国产精品一区二区免费3p| 久久精品中文字幕有码| 99久久免费国产精品| 国产AV无码专区亚洲精品| 日韩经典精品无码一区| 国产精品高清在线观看| 51午夜精品免费视频| 欧美肥屁VIDEOSSEX精品| 亚洲午夜精品一级在线播放放| 久久精品中文字幕一区| 国产精品亚洲不卡一区二区三区 | 亚洲AV永久无码精品一百度影院| 惠民福利中文字幕人妻无码乱精品 | 亚洲精品国产精品乱码不卡| 国产A∨免费精品视频| 99re6在线视频精品免费| 无码日韩精品一区二区免费暖暖 | 国产精品免费AV片在线观看| 中文精品无码中文字幕无码专区| 久久精品国产精品亚洲下载| 国产乱人伦偷精品视频免观看| 99精品国产福利在线观看| 麻豆精品成人免费国产片| 国产精品免费观看| 国产成人精品天堂| 国产精品免费看久久久| 欧美精品v欧洲精品| 日韩人妻精品一区二区三区视频| 亚洲精品国产美女久久久| 亚洲韩国精品无码一区二区三区| 在线观看91精品国产网站| 无码国产精品一区二区免费模式| 嫩草伊人久久精品少妇AV| 国产亚洲精品岁国产微拍精品| 国产精品无码午夜福利|