You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R语言httr2爬取adondevivir网站失败的原因与解决咨询

网站请求失败原因及httr2解决方案

一、请求失败的核心原因

  • 反爬机制拦截:目标网站大概率做了UA检测、请求头完整性验证,甚至会检测环境特征(比如系统标识、请求库指纹)。read_html()偶尔成功是因为它默认的请求头可能刚好绕过部分检测,或者网站反爬规则有随机性;而你用httr2构造请求时,可能遗漏了关键请求头(比如Referer、Accept-Language),或者请求头格式不符合网站预期,直接触发了拦截。
  • Cookie的时效性与环境绑定:Cookie可能和会话、浏览器环境、系统特征绑定,你在Linux下自行生成的Cookie可能已失效,或者网站通过Cookie验证请求环境的一致性(比如UA和Cookie是否匹配)。而Windows下能成功的代码复制到Linux可执行,说明那套Cookie+请求头的组合刚好符合网站验证规则——Cookie仍在有效期,且请求头的UA等信息没有暴露Linux环境特征。

二、用httr2解决的具体步骤

  1. 复刻浏览器完整请求头
    • 打开Chrome/Firefox开发者工具(F12),访问目标网站,复制请求的所有头字段(包括User-Agent、Accept、Accept-Encoding、Referer、Accept-Language、Cookie等)。
    • 在httr2中完整复刻这些请求头,示例代码:
      library(httr2)
      req <- request("https://www.adondevivir.com/proyectos-etapa-pre-venta-en-construccion.html") %>%
        req_headers(
          `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",
          `Accept` = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
          `Accept-Encoding` = "gzip, deflate, br",
          `Accept-Language` = "zh-CN,zh;q=0.9",
          `Referer` = "https://www.adondevivir.com/",
          `Cookie` = "粘贴浏览器中复制的有效Cookie字符串"
        ) %>%
        req_perform()
      html <- resp_body_html(req)
      
  2. 维护Cookie有效性
    • 定期从浏览器更新Cookie,避免过期失效;不要手动修改Cookie内容,直接复制完整字符串。
  3. 模拟人类访问行为
    • 添加随机延迟(比如Sys.sleep(runif(1, 2, 5))),避免高频请求触发拦截;优先沿用Windows下验证有效的请求头参数(比如UA不要改成Linux版本)。

三、补充说明

网站反爬规则可能随时更新,若当前方案失效,需重新抓包获取最新的请求头和Cookie。

内容的提问来源于stack exchange,提问作者Amarullazo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 05:17:03