您的位置:首页 > 其它

爬虫发起抓取被服务器拒绝访问返回403禁止访问解决方案

2017-09-13 14:22 1031 查看
现在很多网站的api接口返回httpcode返回码是403提示禁止访问。如果您也遇到这样的情况,请先不要急着去修改网站相关的参数

第一、先进api的网站。用浏览器访问,如果浏览器访问该api接口能成功。说明是设置了权限的问题。如果不能成功的话。很可以是该接口已修改或已失效,这时候就没办法访问了。

第二、如果浏览器能访问成功的话。那就好办了。调用该接口时,捕获异常中的responseBody,很有可能数据就在这里面,笔者就遇到的是这种问题。

直接上代码:

try
{
//这里调用api接口
}
catch (WebException ex)
{
var strm = ex.Response.GetResponseStream();
strm.Position = 0;
StreamReader reader = new StreamReader(strm);
string error = reader.ReadToEnd();
//这里看error里面的值是否有你想要的值
if (!string.IsNullOrWhiteSpace(error))
{
var result = JsonConvert.DeserializeObject<JObject>(error)["result"]["results"];
if (result == null)
return null;
var customer = JsonConvert.DeserializeObject<JArray>(result.ToString());
if (customer == null)
return null;
List<InvTitle> list = new List<InvTitle>();
foreach (var item in customer)
{
InvTitle mc = new InvTitle()
{
Name = item["entName"] != null ? item["entName"].ToString() : "",
TaxCode = item["credCode"] != null ? item["credCode"].ToString() : "",
State = "y",
CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
UpdateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
};
list.Add(mc);
if (list.Count == 4)
break;
}
return list;
}

return null;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: