今天在用C# + HttpWebRequest抓人家网页源代码的时候,发现一直报错,返回“远程服务器返回错误: (403) 已禁止”的错误,于是检查了几次代码,都没有看出哪里有错误。开始以为是因为对方的服务器做了限制,可以识别到不是本站的访问,所以直接拒绝抓取,结果百度后发现原来问题是因为UserAgent没有设置。
下面我们直接看看源代码:
string html = string.Empty;
Uri uri = new Uri(url);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
if (response.StatusCode == HttpStatusCode.OK)
{
using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")))
{
html = sr.ReadToEnd();
response.Close();
}
}
else
{
//失败
}
上面的代码在运行到这句:HttpWebResponse response = request.GetResponse() as HttpWebResponse;
就会报异常
百度后发现有大神说,如果报这个异常的话,是因为没有给HttpWebRequest设置UserAgent,于是我赶紧加了一句:request.UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.9.0.2800 Chrome/39.0.2146.0 Safari/537.36";
加上这句代码后马上就正常了。大家可以收藏一下这个文章,说不定以后你们也用得上~
ok
mjj通道