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

当爬虫遇到403禁止访问错误时,可尝试通过浏览器访问API接口来排查问题。如果浏览器能成功访问,可能是权限设置导致,可检查返回的responseBody寻找解决方案。代码示例来源于博客。

现在很多网站的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;
            }

 

转载于:https://www.cnblogs.com/xuwendong/p/7514736.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值