C# 错误500 Web请求可以';t刮网站

C# 错误500 Web请求可以';t刮网站,c#,httpwebrequest,C#,Httpwebrequest,我用浏览器访问网站没有问题,但是当我以编程方式尝试访问网站进行抓取时,我得到以下错误 The remote server returned an error: (500) Internal Server Error. 这是我正在使用的代码 using System.Net; string strURL1 = "http://www.covers.com/index.aspx"; WebRequest req = WebRequest.Create(strURL1); // Get the

我用浏览器访问网站没有问题,但是当我以编程方式尝试访问网站进行抓取时,我得到以下错误

The remote server returned an error: (500) Internal Server Error.
这是我正在使用的代码

using System.Net;

string strURL1 = "http://www.covers.com/index.aspx";
WebRequest req = WebRequest.Create(strURL1);

// Get the stream from the returned web response
StreamReader stream = new StreamReader(req.GetResponse().GetResponseStream());
System.Text.StringBuilder sb = new System.Text.StringBuilder();
string strLine;
// Read the stream a line at a time and place each one
while ((strLine = stream.ReadLine()) != null)
{
  if (strLine.Length > 0)
    sb.Append(strLine + Environment.NewLine);
}

stream.Close();
这件事把我难住了。TIA是用户代理

许多站点,比如您正在尝试删除的站点,都会验证用户代理字符串,以阻止您删除它们。和您一样,这很快就阻止了初级程序员尝试使用这种方法。这并不是一个很好的解决擦伤的方法,但是它让一些人感到困惑

设置用户代理字符串将起作用。将代码更改为:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strURL1);
req.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"; // Chrome user agent string

…一切都会好起来的。

看起来它正在进行某种用户代理检查。我可以在PowerShell中复制您的问题,但我注意到PowerShell cmdlet
Invoke-WebRequest
工作正常

所以我连接了Fiddler,重新运行它,并从Fiddler中偷走了用户代理字符串

尝试将
UserAgent
属性设置为:
用户代理:修复它的Mozilla/5.0(Windows NT;Windows NT 6.2;en-US)Windows PowerShell/4.0

。他们无法阻止这个“初级程序员”。我有权访问StackOverflow。您可以在此处找到您的用户代理: