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

同一网络下Lubuntu24.04用rvest爬取unjobs.org报403错误求助

解决Lubuntu 24.04下爬取unjobs.org出现HTTP 403错误的问题

以下是可能的原因及对应解决方法:

1. 系统默认请求头差异

Lubuntu 24.04和Windows的默认请求头(除User-Agent外的Accept、Accept-Encoding等字段)存在差异,网站反爬机制识别后拒绝请求。
直接模拟Windows浏览器的完整请求头:

library(httr)
library(rvest)

# 复制Windows浏览器的标准请求头
headers <- add_headers(
  `User-Agent` = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.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.7",
  `Accept-Language` = "zh-CN,zh;q=0.9",
  `Accept-Encoding` = "gzip, deflate, br",
  `Connection` = "keep-alive",
  `Upgrade-Insecure-Requests` = "1"
)

# 发送请求并解析页面
response <- GET("https://unjobs.org", headers)
content <- read_html(response)

2. 系统级网络配置差异

Lubuntu 24.04可能默认启用了代理、防火墙,或TLS版本、DNS解析和Windows不同:

  • 先检查代理:终端运行env | grep -i proxy,如果有代理变量,临时取消后再试:
    unset http_proxy https_proxy
    
  • 强制指定兼容的TLS版本:
    library(httr)
    library(rvest)
    
    response <- GET("https://unjobs.org", 
                    user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"),
                    config(sslversion = 6)) # 6对应TLS 1.2,7对应TLS 1.3
    content <- read_html(response)
    

3. 网站针对Linux环境的反爬识别

部分网站会通过操作系统特征(比如UA里的Linux标识、TCP栈指纹)拦截请求:

  • 先用curl测试模拟Windows UA的请求:
    curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" https://unjobs.org -I
    
    如果返回200状态码,就把相同UA用到R脚本;如果还是403,建议用RSelenium这类无头浏览器工具,完全模拟真实浏览器的行为。

4. polite包的封装限制

polite包默认的请求规则或附加头可能被网站识别为爬虫,直接用httr构造更贴近浏览器的请求,比依赖polite的封装更有效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 07:55:01