C#模拟浏览器多线程下载软件

Go 旅城通票 2017-08-07 09:52:06
加精
  C#模拟浏览器多线程下载软件,有些网站判断了user-agent和来源地址时,使用迅雷,flashget无法下载图片。

  使用本下载软件可以模拟浏览器请求头,添加来源地址和用户代理字符串(user-agent),突破服务器下载封锁.

  C#模拟浏览器多线程下载软件操作界面如下



  核心代码如下

protected void DownLoad()
{
while (true)
{
string url = null;
lock (locker)
{
current++;
if (current >= jobNum)
{
threadEndNum++;
if (threadEndNum >= threadNum)
{
UpdateState("下载完毕,失败" + err + "个。", true);
}
break;
}
url = urls[current];
}
UpdateState("正在下载" + url, false);

int tryNum = 0;
while (true)
{
HttpWebRequest request;
try
{
string fn = Path.GetFileName(url);
if (cbReplaceSame.Checked || !File.Exists(sSavePath + fn))
{
request = (HttpWebRequest)HttpWebRequest.Create(url);
if (!string.IsNullOrEmpty(sReferer)) request.Referer = sReferer;
else request.Referer = url;
if (!string.IsNullOrEmpty(sUserAgent)) request.UserAgent = sUserAgent;
request.Headers.Add("Upgrade-Insecure-Requests", "1");
request.Accept="text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
request.Headers.Add("Accept-Encoding", "gzip, deflate");
request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Stream sr = response.GetResponseStream();
FileStream fs = new FileStream(sSavePath + fn, FileMode.OpenOrCreate);

int buffer = 1024;
byte[] data = new byte[buffer];
int bytesRead = 0;
while ((bytesRead = sr.Read(data, 0, buffer)) != 0) fs.Write(data, 0, bytesRead);

sr.Close();
fs.Close();


}
break;
}
catch (Exception ex)
{
tryNum++;
if (tryNum >= tryNumMax)
{

lock (locker) { err++; sErr += "\n" + url + "(" + ex.Message + ")"; }
break;
}
Thread.CurrentThread.Join(1000);//停止1s再重试
}
}
}
}


  下载文件原本使用webclient的,但是碰到一个网站就是判断了user-agent,user-agent webclient已经设置,但是下载的时候还是出错,然后调试的时候执行到catche语句,监视webclient实例对象的user-agent尽然变为了null,晓不得虾米意思,所以直接改HttpWebRequest下载了。

  需要VS工程文件的可以去下面地址下载哈,顺便推广下个人网站,版主手下留情,莫删,谢谢。。~

  来源:C#模拟浏览器多线程下载软件
...全文
4450 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
李敢敢 2018-02-12
  • 打赏
  • 举报
回复
可以下载国外的东东吗
Herry_zzz 2018-01-31
  • 打赏
  • 举报
回复
好像用处不大
guanhua_ren 2018-01-18
  • 打赏
  • 举报
回复
不错,学习一下了
love。 2018-01-15
  • 打赏
  • 举报
回复
不错收藏了谢谢楼主
  • 打赏
  • 举报
回复
所以这个可以用来下载美女图片了
Go 旅城通票 2017-08-08
  • 打赏
  • 举报
回复
引用 4 楼 dy00544 的回复:
你这个还要手动把图片url填进去么? 这样感觉不太实用啊。
达不到迅雷那种安装浏览器插件的高度
Go 旅城通票 2017-08-08
  • 打赏
  • 举报
回复
引用 2 楼 WM_JAWIN 的回复:
全在一个winform里实现,差评!
闲游四疯 2017-08-08
  • 打赏
  • 举报
回复
先下 有空再看
iiihavedone 2017-08-08
  • 打赏
  • 举报
回复
可以的
dy00544 2017-08-08
  • 打赏
  • 举报
回复
你这个还要手动把图片url填进去么? 这样感觉不太实用啊。
正怒月神 版主 2017-08-08
  • 打赏
  • 举报
回复
WM_JAWIN 2017-08-08
  • 打赏
  • 举报
回复
全在一个winform里实现,差评!
dy00544 2017-08-08
  • 打赏
  • 举报
回复
引用 8 楼 showbo 的回复:
[quote=引用 4 楼 dy00544 的回复:] 你这个还要手动把图片url填进去么? 这样感觉不太实用啊。
达不到迅雷那种安装浏览器插件的高度[/quote] 我觉得给一个页面的url 然后获取html 再自动解析有哪些图片的url会比较好。
homesos 2017-08-07
  • 打赏
  • 举报
回复
不错,挺好,顶!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧