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

Posted 一指流砂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫发起抓取被服务器拒绝访问返回403禁止访问解决方案相关的知识,希望对你有一定的参考价值。

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

 

以上是关于爬虫发起抓取被服务器拒绝访问返回403禁止访问解决方案的主要内容,如果未能解决你的问题,请参考以下文章

403 - 禁止访问: 访问被拒绝。您无权使用所提供的凭据查看此目录或页面。 怎么解决 ?

Spring Security 总是返回 403 被禁止,访问被拒绝

windows server 2003 iis配置 出现 http 403 禁止访问,怎么办,网页内显示“你无权查看该网页”

403 - 禁止访问: 访问被拒绝(IIS)

获取 403:禁止访问:当用户意外关闭登录会话时,访问被拒绝

HTTP 错误 403.9 - 禁止访问:连接的用户过多