程序用伪链进行下载

今天在做资源抓取程序时遇到一个问题,用于下载资源的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());
}
}




posted @ 2012-03-09 15:38  疯狂二十九笔  阅读(187)  评论(0编辑  收藏  举报