HttpWebRequest获取百度的网页
2007-06-26 02:49
465 查看
运行后总是返回403错,这是远程主机强制关闭了连接
按照上文朋友样的评论,用WebRequest改成HttpWebRequest还是出现403
看来的确是BaiDu服务器终止了连接
抓包后发现,请求百度是在Header中有一段Cookie
是不是没有该cookie时baidu就会终止连接?
于是先请求一次news.baidu.com用工具获取它的cookie
在程序中加入该cookie,果然成功!而且未出现过错误
于是,修改了源代码:
request = (HttpWebRequest)WebRequest.Create(url);
#region start
HttpWebResponse response = null;
try
{
try
{
response = (HttpWebResponse)request.GetResponse(); //在这里可能出错,因为没有cookie
}
catch (WebException exp)
{
if (exp.Status == WebExceptionStatus.ProtocolError)
{
HttpWebRequest request_baidu = (HttpWebRequest)WebRequest.Create("http://news.baidu.com/"); //通过访问news.baidu.com获取一个cookie
using (HttpWebResponse response_baidu = (HttpWebResponse)request_baidu.GetResponse())
{
string str = response_baidu.Headers["Set-Cookie"];
baidu_cookie = str.Split(';')[0]; //得到cookie
request = (HttpWebRequest)WebRequest.Create(url);
request.Headers.Add(HttpRequestHeader.Cookie, baidu_cookie); //再次Create原始搜索地址,并加入cookie
response = (HttpWebResponse)request.GetResponse();
}
}
}
按照上文朋友样的评论,用WebRequest改成HttpWebRequest还是出现403
看来的确是BaiDu服务器终止了连接
抓包后发现,请求百度是在Header中有一段Cookie
是不是没有该cookie时baidu就会终止连接?
于是先请求一次news.baidu.com用工具获取它的cookie
在程序中加入该cookie,果然成功!而且未出现过错误
于是,修改了源代码:
request = (HttpWebRequest)WebRequest.Create(url);
#region start
HttpWebResponse response = null;
try
{
try
{
response = (HttpWebResponse)request.GetResponse(); //在这里可能出错,因为没有cookie
}
catch (WebException exp)
{
if (exp.Status == WebExceptionStatus.ProtocolError)
{
HttpWebRequest request_baidu = (HttpWebRequest)WebRequest.Create("http://news.baidu.com/"); //通过访问news.baidu.com获取一个cookie
using (HttpWebResponse response_baidu = (HttpWebResponse)request_baidu.GetResponse())
{
string str = response_baidu.Headers["Set-Cookie"];
baidu_cookie = str.Split(';')[0]; //得到cookie
request = (HttpWebRequest)WebRequest.Create(url);
request.Headers.Add(HttpRequestHeader.Cookie, baidu_cookie); //再次Create原始搜索地址,并加入cookie
response = (HttpWebResponse)request.GetResponse();
}
}
}
相关文章推荐
- HttpWebRequest 获取验证码的图片 并针对有验证码的网页进行Winform登陆。
- HttpWebRequest获取网页html源代码(并自动获取encoding)
- WebClient HttpWebRequest从网页中获取请求数据
- 利用HttpWebRequest获取网页内容,由于Gzip压缩导致乱码的情况
- asp.net 利用HttpWebRequest自动获取网页编码并获取网页源代码
- C# HttpWebRequest 绝技 根据URL地址获取网页信息
- C# HttpWebRequest 绝技 根据URL地址获取网页信息
- HttpWebRequest、HttpWebResponse获取网页
- 用asp.net c# HttpWebRequest获取网页源代码
- C# 利用HttpWebRequest模拟登陆获取数据设置Accept-Encoding为gzip,deflate后返回的网页是乱码处理
- C# HttpWebRequest 绝技 根据URL地址获取网页信息
- HttpWebRequest获取网页html源代码(并自动获取encoding)
- 利用HttpWebRequest来实现提交和获取网页数据
- HttpWebRequest获取网页源代码时自动识别网页编码
- C#获取网页内容 (WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
- 京东价格监控软件开发技术探讨二:通过HttpWebRequest获取指定网页数据
- asp.net 利用HttpWebRequest自动获取网页编码并获取网页源代码
- HttpWebRequest和Stream获取网页验证码图片
- 使用HttpWebRequest访问网页及获取数据
- WebRequest 获取网页乱码