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

如何获取需认证的AJAX请求响应?以Realtor.com爬取为例

解决Realtor.com API请求无权访问的问题

你复制的请求里的authorization Bearer令牌和Cookie都是临时会话绑定的,过期后或者脱离原浏览器会话就会失效,这就是直接模拟请求返回无权访问的原因。下面是两种可行的解决思路:

方法一:动态获取有效认证信息

  • 先访问首页初始化会话:发送GET请求到https://www.realtor.com/realestateagents/,从响应的Set-Cookie头中提取必要的会话Cookie(比如__vst、__ssn这类标识)。
  • 提取Bearer令牌:首页加载后,页面会通过JS请求获取认证令牌,你可以在浏览器DevTools的网络面板中查找返回Bearer令牌的接口,或者从页面全局变量(如window.__INITIAL_STATE__)中提取。
  • 组装有效请求:用新获取的Cookie和Bearer令牌替换原请求中的过期值,同时保持所有请求头(如user-agent、referer、sec-ch-ua系列参数)与原请求完全一致,避免被识别为非浏览器请求。

方法二:用浏览器自动化工具直接捕获响应

如果不想处理复杂的认证逻辑,用Selenium或Playwright这类工具让浏览器自动执行操作并捕获API响应,以Python+Selenium为例:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import json
import time

# 初始化浏览器
driver = webdriver.Chrome()
driver.get("https://www.realtor.com/realestateagents/")

# 启用Chrome DevTools协议监听网络请求
driver.execute_cdp_cmd("Network.enable", {})

captured_data = []

# 定义响应捕获回调
def handle_response(response):
    target_url = "realestateagents/api/v3/search"
    if target_url in response.get("url", "") and response["response"]["status"] == 200:
        # 获取响应体内容
        body = driver.execute_cdp_cmd(
            "Network.getResponseBody",
            {"requestId": response["requestId"]}
        )
        captured_data.append(json.loads(body["body"]))

# 注册响应监听
driver.execute_cdp_cmd("Network.responseReceived", {}, handle_response)

# 模拟搜索洛杉矶
search_box = driver.find_element(By.CSS_SELECTOR, 'input[placeholder="Search for an agent or office"]')
search_box.send_keys("洛杉矶")
search_box.send_keys(Keys.ENTER)

# 等待请求完成
time.sleep(4)

# 输出捕获到的数据
if captured_data:
    print(json.dumps(captured_data[0], indent=2))

driver.quit()
  • 注意事项:使用自动化工具时,需设置合理的等待时间,避免频繁触发反爬;可添加随机延迟、使用真实浏览器UA,降低被检测概率。

额外提示

  • Realtor.com有严格的反爬机制,频繁请求可能导致IP封禁,建议添加请求间隔,必要时使用代理IP分散请求来源。
  • 爬取前请确认符合网站服务条款与robots.txt规则,避免法律风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 18:12:01