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

添加请求头仍触发requests 403 Forbidden错误,请求排查原因

排查Vivareal爬虫403 Forbidden问题的思路和解决办法

常见原因及对应方案

1. User-Agent版本过于老旧

你用的Chrome 50版本UA太陈旧,Vivareal的反爬系统可能直接判定为异常请求。换成当前主流浏览器的UA,补充必要请求头字段模拟真实访问:

hdr = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.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": "pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3",
    "Referer": "https://www.vivareal.com.br/",
    "Connection": "keep-alive"
}

2. 未维持会话Cookie

直接请求详情页可能缺少网站要求的会话Cookie,改用requests.Session()保持会话,先访问首页获取Cookie再请求详情页:

session = requests.Session()
# 先访问首页初始化会话
session.get("https://www.vivareal.com.br/", headers=hdr)
# 再请求目标详情页
response = session.get(pagina_produto, headers=hdr)
response.raise_for_status()

3. 请求频率过高触发拦截

爬虫请求速度远快于人类操作,需在请求间添加随机延迟:

import time
import random

# 每次请求后随机延迟1-3秒
time.sleep(random.uniform(1, 3))

4. 网站启用进阶反爬防护

如果上述方法都无效,说明网站用了Cloudflare之类的人机验证机制,普通requests无法绕过,需用undetected_chromedriver模拟真实浏览器行为:

from undetected_chromedriver import Chrome, ChromeOptions
from bs4 import BeautifulSoup

options = ChromeOptions()
options.add_argument("--headless=new")  # 无头模式运行浏览器
driver = Chrome(options=options)

# 先访问首页建立会话
driver.get("https://www.vivareal.com.br/")
# 跳转至详情页
driver.get(pagina_produto)
# 获取页面源码解析
html = driver.page_source
sp = BeautifulSoup(html, "html.parser")

额外注意事项

  • 避免一次性批量爬取大量页面,分批次加延迟,防止IP被封禁。
  • 定期更新请求头的UA字段,避免因UA过期被拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 08:18:11