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

请求协助解决网页爬取时的403 Forbidden错误

解决爬取G2网站时的403 Forbidden错误

爬取G2网站数据时,仅设置User-Agent仍返回403 Forbidden,可从以下几个方向排查解决:

  • 补充完整请求头:网站反爬校验通常不止User-Agent,需模拟真实浏览器的请求头字段,比如Accept、Accept-Language、Referer等,让请求更接近正常用户访问。
  • 校验目标URL有效性:你使用的https://www.g2.com/O大概率是错误路径,G2的合法URL格式一般为https://www.g2.com/或https://www.g2.com/products/xxx,先确认目标地址是否正确。
  • 使用会话维持连接:单次请求容易被识别为爬虫,用会话(Session)模拟浏览器的持续连接状态,提升请求的真实性。
  • 控制请求频率:短时间内频繁请求会触发网站反爬机制,添加请求间隔避免被拦截。

修改后的示例代码(使用requests库)

import requests
from time import sleep

# 模拟Chrome浏览器的完整请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
    'Referer': 'https://www.g2.com/'
}

# 替换为正确的目标URL,以G2首页为例
target_url = "https://www.g2.com/"

# 初始化会话,维持连接状态
session = requests.Session()
session.headers.update(headers)

try:
    # 添加2秒请求间隔,避免触发反爬
    sleep(2)
    response = session.get(target_url)
    response.raise_for_status()  # 主动抛出HTTP错误
    # 打印响应前500字符验证结果
    print(response.text[:500])
except requests.exceptions.HTTPError as e:
    print(f"HTTP错误详情: {e}")
except Exception as e:
    print(f"其他错误详情: {e}")

如果以上方法仍无效,说明网站可能启用了更严格的反爬机制(如验证码、JavaScript渲染校验),此时需要使用Selenium、Playwright等工具模拟真实浏览器的交互行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:42:38