使用RestSharp请求Picnob返回Forbidden错误的解决咨询
解决RestSharp请求picnob.com返回Forbidden的问题
问题核心是网站的反爬机制识别出你的请求并非来自真实浏览器,因此返回403并提示需要启用JS和Cookies。按以下步骤修改代码即可解决:
- 移除无用请求头:Postman生成的
postman-token是Postman自身的标识,目标网站不认可,直接删除即可。 - 添加浏览器核心请求头:模拟真实浏览器的请求特征,至少要补充
User-Agent、Accept、Accept-Language这几个关键头,让网站判定你是正常浏览器访问。 - 启用Cookie容器:网站可能需要通过Cookies维持会话状态,RestSharp默认不处理Cookies,需手动开启容器保存会话数据。
修改后的代码示例:
var client = new RestClient("https://www.picnob.com/"); // 启用Cookie容器,保存会话Cookies client.CookieContainer = new System.Net.CookieContainer(); var request = new RestRequest(Method.GET); // 添加浏览器请求头,模拟真实访问 request.AddHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"); request.AddHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"); request.AddHeader("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3"); request.AddHeader("cache-control", "no-cache"); IRestResponse response = client.Execute(request);
如果以上操作后仍无法解决,说明网站可能存在JS渲染验证(比如Cloudflare人机校验),此时需要使用支持JS渲染的工具,比如PuppeteerSharp(C#版Puppeteer),它能模拟完整浏览器环境,执行JS并处理验证逻辑。
内容的提问来源于stack exchange,提问作者vaibhav shah
相关产品推荐
相关产品推荐

