爬蟲發起抓取被服務器拒絕訪問返回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;
            }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM