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());
    }
    }




  • 相关阅读:
    驱动调试常见问题_Camera
    如何从零开始开发一款嵌入式产品(20年的嵌入式经验)
    git入门与实践
    ramfs, rootfs, initrd and initramfs
    Living a Fulfilling Life: A Guide to Following Your Heart
    有关 jffs2_scan_eraseblock 问题小结
    JS_imgload
    JS_闭包和内存.
    JS_textarea自适应高度
    Css_制作旋转字体
  • 原文地址:https://www.cnblogs.com/crazy29/p/2387706.html
Copyright © 2011-2022 走看看