• C#用HttpWebRequest通过代理服务器验证后抓取网页内容 。。。。。


    string urlStr = "http://www.domain.com/";                            //設定要獲取的地址
    HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(urlStr);    //建立HttpWebRequest對象
    hwr.Timeout = 60000;                                                //定義服務器超時時間
    WebProxy proxy = new WebProxy();                                    //定義一個網關對象
    proxy.Address = new Uri("http://proxy.domain.com:3128/");            //網關服務器:端口
    proxy.Credentials = new NetworkCredential("f3210316", "6978233");    //用戶名,密碼
    hwr.UseDefaultCredentials = true;                                    //啟用網關認証
    hwr.Proxy = proxy;                                                    //設置網關
    HttpWebResponse hwrs = (HttpWebResponse)hwr.GetResponse();            //取得回應
    Stream s = hwrs.GetResponseStream();                                //得到回應的流對象
    StreamReader sr = new StreamReader(s, Encoding.UTF8);                //以UTF-8編碼讀取流
    StringBuilder content = new StringBuilder();                        //
    while (sr.Peek() != -1)                                                //每次讀取一行,直到
    {                                                                    //下一個字節沒有內容
        content.Append(sr.ReadLine()+"\r\n");                            //返回為止
    }                                                                    //
    return content.ToString() ;  

    /******************评论**************/

    //创建一个HTTP请求
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://某家网站的验证码服务器/getimage?0.4283556984309326");
    //设置一个代理
    WebProxy myproxy = new WebProxy("202.101.6.85",8080);
    req.Proxy = myproxy;
    //获取代理服务器的回应
    HttpWebResponse res = null;
    try
    {
    res = (HttpWebResponse)req.GetResponse();
    }
    catch
    {
    MessageBox.Show("无法连接代理!");
    return;
    }
    //判断HTTP响应状态
    if(res.StatusCode != HttpStatusCode.OK)
    {
    MessageBox.Show("访问失败!");
    res.Close();
    return;
    }
    //获取应答流
    System.IO.Stream stream = res.GetResponseStream();
    //直接加载到图片(可以直接显示到图片控件)
    System.Drawing.Bitmap bp = new Bitmap(stream);
    //关闭应答流和服务器的应答
    stream.Close();
    res.Close();
    //输出所有的Header(当然包括服务器输出的Cookie)
    for(int ii=0;ii<res.Headers.Count;ii++)
    {
    MessageBox.Show(res.Headers.GetKey(ii)+":"+res.Headers[ii]);
    }

  • 相关阅读:
    Axure RP 9 Beta 开放下载(更新激活密钥和汉化包)
    Android 解决NestedScrollView 嵌套 RecyclerView出现的卡顿,上拉刷新无效
    上周热点回顾(8.27-9.2)团队
    上周热点回顾(8.20-8.26)团队
    上周热点回顾(8.13-8.19)团队
    上周热点回顾(8.6-8.12)团队
    阿里云MVP第6期招募与博客园合作启动团队
    上周热点回顾(7.30-8.5)团队
    上周热点回顾(7.23-7.29)团队
    上周热点回顾(7.16-7.22)团队
  • 原文地址:https://www.cnblogs.com/liufei88866/p/1279322.html
Copyright © 2020-2023  润新知