zoukankan      html  css  js  c++  java
  • 程序用伪链进行下载

    今天在做资源抓取程序时遇到一个问题,用于下载资源的url并不是资源的真实url,在浏览器中点击,可以下载,但用代码下载回来的东西是一堆html源码。

    后来设置了http referer,下载正常了。

    1,HttpWebRequest下载

    Encoding encode = Encoding.GetEncoding(pagecode);
    //请求URL
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
    req.Referer = url;//referer的作用是签定用户是从何处引用连接的, 很多网站都是通过这个referer来防止盗链
    //设置超时(10秒)
    req.Timeout = 10000;
    //获取Response
    HttpWebResponse rep = (HttpWebResponse)req.GetResponse();
    //创建StreamReader与StreamWriter文件流对象
    StreamReader sr = new StreamReader(rep.GetResponseStream(), encode);
    StreamWriter sw = new StreamWriter(filename, false, encode);
    //写入内容
    sw.Write(sr.ReadToEnd());
    //清理当前缓存区,并将缓存写入文件
    sw.Flush();
    //释放相关对象资源
    sw.Close();
    sw.Dispose();
    sr.Close();
    sr.Dispose();

    2,System.Net.WebClient 下载

    public void DownFile(string url, string filepath)
    {
    try
    {
    WriteLog("filepath:" + filepath + " 下载" + url + "开始");
    client.Headers.Add("Referer", url);//referer的作用是签定用户是从何处引用连接的, 很多网站都是通过这个referer来防止盗链
                    client.DownloadFile(url, filepath);

    WriteLog("filepath:" + filepath + " 下载" + url + "结束");
    }
    catch (Exception ex)
    {
    WriteLog("getSource请求" + url + "发生了异常:" + ex.ToString());
    }
    }




  • 相关阅读:
    二叉树逻辑结构重点
    循环链表
    数据结构 单链表
    《深入理解计算机系统》第7章:重定位PC相对引用的理解
    一个关于空指针的思考
    简单解决python安装中的Unable to find vcvarsall.bat问题
    解决python本地离线安装requests问题
    使用共享内存和信号量模拟实现多进程会话
    使用openssl演练数字签名
    简单了解C语言内嵌汇编
  • 原文地址:https://www.cnblogs.com/crazy29/p/2387706.html
Copyright © 2011-2022 走看看