1. 程式人生 > >爬蟲發起抓取被服務器拒絕訪問返回403禁止訪問解決方案

爬蟲發起抓取被服務器拒絕訪問返回403禁止訪問解決方案

http white 抓取 ray 現在 情況 訪問 creat exception

現在很多網站的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禁止訪問解決方案