DownloadString返回404错误:站点需要一个用户代理标头

本文关键字:一个 用户代理 返回 错误 站点 DownloadString | 更新日期: 2023-09-27 17:57:46

我有一个C#程序,直到一两天前还运行良好。我使用以下片段来抓取页面:

string strSiteListPath = @"http://www.ngs.noaa.gov/CORS/dates_sites.txt";
Uri uriSiteListPath = new Uri(strSiteListPath);
System.Net.WebClient oWebClient = new System.Net.WebClient();
strStationList = oWebClient.DownloadString(uriSiteListPath);

但它始终返回404 Not Found错误。该页面完全存在,欢迎您自己尝试。因为它在几天前就工作了,而且我的代码中没有任何变化,所以我认为网络服务器可能在某种程度上发生了变化。没关系,会发生的,但这里到底发生了什么?

为什么我可以手动浏览到文件,但DownloadString无法获取文件?

编辑:

为了完整起见,代码现在看起来像:

string strSiteListPath = @"http://www.ngs.noaa.gov/CORS/dates_sites.txt";
Uri uriSiteListPath = new Uri(strSiteListPath);
System.Net.WebClient oWebClient = new System.Net.WebClient();
oWebClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0");
strStationList = oWebClient.DownloadString(uriSiteListPath);

再次感谢,托马斯·莱维斯克!

DownloadString返回404错误:站点需要一个用户代理标头

显然,站点要求您有一个有效的User-Agent标头。如果你把标题设置成这样:

Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0

然后请求就可以正常工作了。