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




  • 相关阅读:
    win10下VMware15运行ubuntu18.04无法和主机之间复制粘贴问题
    Redis的五种数据类型
    celery的入门使用
    Django/Flask的一些实现方法
    Python3实现简单的钉钉机器人调用
    装饰者模式
    pyhdfs安装
    使用setup.py安装python包和卸载python包的方法
    zookeeper搭建
    S3C6410裸奔之旅——RVDS2.2编译、仿真、调试过程 LED流水灯---转的
  • 原文地址:https://www.cnblogs.com/crazy29/p/2387706.html
Copyright © 2011-2022 走看看