5.20模拟浏览器环境(爬虫检测)
创建于 2026 年 8 月 17 日约 1 分钟读完
在开发爬虫程序时,目标网站可能会根据用户代理(User-Agent)或其他因素提供不同的页面版本,如 PC 端和移动端。此外,一些网站还具备反爬虫机制,能够识别并阻止爬虫程序的访问。为应对这些问题,我们可以配置请求标头以模拟真实的浏览器环境进行请求。
HTTP 声明式请求通过 SimulateBrowserAttribute 特性来模拟浏览器环境。相应的 HTTP 声明式提取器实现为 SimulateBrowserDeclarativeExtractor 类型,该类型负责解析 SimulateBrowserAttribute 特性并构建 HttpRequestBuilder 实例所需的模拟浏览器环境配置。
// 在接口定义上应用,影响所有方法[SimulateBrowser]public interface IHttpService : IHttpDeclarative{ [Get("https://furion.net/")] Task<string> GetStringAsync(); // 在方法上应用 [SimulateBrowser(IsMobile = true)] // 模拟移动端浏览器环境 [Get("https://furion.net/")] Task<string> GetStringAsync();}在添加该特性之后,HTTP 请求将在发送前自动附带以下请求标头,以确保服务器能够准确识别并处理请求:
# PC 浏览器代理Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36 Edg/142.0.0.0# 移动端浏览器代理Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Mobile Safari/537.36 Edg/142.0.0.0SimulateBrowserAttribute 包含以下构造函数和属性:
-
构造函数:
new():作用于方法或接口,启用模拟浏览器环境。
-
属性:
IsMobile:是否为移动端(bool类型),默认值为false(即桌面端)。