zoukankan      html  css  js  c++  java
  • 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]);
    }

  • 相关阅读:
    Prometheus入门教程(二):Prometheus + Grafana实现可视化、告警
    Prometheus 入门教程(一):Prometheus 快速入门
    Prometheus 系列开篇:为什么要学 Prometheus ?
    你总是遗憾,是因为你还没想好,你的一生想怎么过!
    搞 Java 的年薪 40W 是什么水平?
    闪送,为何能从顺丰中杀出一条血路?
    安全攻击溯源思路及案例
    Windows下登录凭证窃取技巧
    Linux下登录凭证窃取技巧
    如何探测内网存活主机
  • 原文地址:https://www.cnblogs.com/liufei88866/p/1279322.html
Copyright © 2011-2022 走看看