跳转到内容
Use Cases 3 分钟阅读 1272 次浏览

房地产数据抓取代理

了解 GProxy 的专用代理如何实现对 CIAN、Zillow 和 Realtor.com 房地产数据的高效匿名抓取,确保数据采集顺利完成。

Parsing
房地产数据抓取代理

在 CIAN、Zillow 和 Realtor.com 等平台上抓取房地产数据时,代理必不可少:它们用于绕过地理限制、突破基于 IP 的封锁、控制请求频率,并在数据采集过程中保持匿名。

房地产数据抓取面临的挑战

房地产网站会实施多种反爬措施来保护其数据和基础设施,这些措施包括:
* 基于 IP 的封锁: 检测并封禁请求过多或浏览行为不像真人的 IP 地址。
* 速率限制: 对特定 IP 或 user agent 的请求进行限流。
* 地理限制: 根据用户所在地区展示不同内容或直接阻止访问。
* CAPTCHA: 通过验证码确认是真人操作,通常由可疑行为触发。
* 高级机器人检测: 使用 JavaScript 挑战、浏览器指纹和行为分析识别自动化脚本。
* 动态内容加载: 使用 JavaScript 加载数据,需要无头浏览器或高级解析技术。

要实现有效抓取,必须有稳固的代理基础设施来规避这些挑战,从而稳定地访问公开数据。

房地产抓取适用的代理类型

代理类型的选择会显著影响抓取成功率和成本。

住宅代理

住宅代理通过互联网服务提供商(ISP)分配给家庭用户的真实 IP 地址转发流量。
* 优点: 匿名度高,难以被识别为代理,非常适合绕过地理限制和复杂的反爬系统,能够模拟真实用户流量。
* 缺点: 与数据中心代理相比,每 GB 成本通常更高。
* 建议: 由于 CIAN、Zillow 和 Realtor.com 的反爬防护很强,住宅代理是首选。

数据中心代理

数据中心代理来自商业数据中心。
* 优点: 速度快,每 GB 成本低,IP 池规模大。
* 缺点: 容易被高级反爬系统识别,IP 常常共用已知网段,在防护严格的站点上会很快被封。
* 建议: 不推荐用于 CIAN、Zillow 或 Realtor.com,主要适合防护较弱的目标或初期探测。

移动代理

移动代理使用移动网络运营商分配给移动设备的 IP 地址。
* 优点: 在目标网站眼中信任度最高,移动 IP 很少被封禁,对高级机器人检测非常有效。
* 缺点: 成本非常高,与住宅代理相比可用 IP 有限。
* 建议: 可用于极难攻克的目标,或其他代理类型都失效时;但对常规房地产抓取而言通常大材小用且成本过高。

轮换代理与 sticky 会话

  • 轮换代理: 每次请求或每隔一段时间自动分配新的 IP 地址。这样可以把请求分散到大量 IP 上,降低单个 IP 被封的概率,是大规模数据采集的必备手段。
  • sticky 会话: 在指定时长内(例如 10 分钟、30 分钟)保持同一个 IP 地址。当抓取需要维持会话,或需要浏览多页房源列表、IP 一致性有帮助时非常有用。

具体房地产平台的抓取要点

每个平台都有独特的挑战,需要相应的代理策略。

CIAN (ЦИАН)

  • 主要市场: 俄罗斯及独联体国家。
  • 挑战: CIAN 采用复杂的反爬措施和地理限制,会主动封禁非俄罗斯 IP 或可疑流量。站点结构可能较复杂,且常使用动态内容加载。
  • 代理策略:
    • 住宅代理: 必须使用。将 IP 定位到俄罗斯,或俄罗斯境内的特定大城市(例如莫斯科、圣彼得堡)。
    • 轮换: 使用频繁的 IP 轮换以避开速率限制,尤其是在抓取房源详情或翻阅搜索结果时。
    • User-Agent: 轮换真实、类似浏览器的 User-Agent 字符串。
    • 请求头: 确保 Accept-Language 请求头设置为俄语(ru-RU,ru;q=0.9)。
  • 关键数据: 房源详情、价格、经纪人联系方式、房产特征、位置数据。

Zillow

  • 主要市场: 美国。
  • 挑战: Zillow 以激进的反爬和 CAPTCHA 策略著称。没有妥善的代理管理就进行大批量抓取,会立即导致 IP 封禁或验证码挑战。该站点严重依赖 JavaScript 渲染内容。
  • 代理策略:
    • 住宅代理: 必不可少。将 IP 定位到所抓取的具体美国州或地区。
    • sticky 会话: 在浏览多页房源或操作搜索筛选时,可考虑使用短时间(例如 5-10 分钟)的 sticky 会话,以保持一致的浏览身份。
    • User-Agent: 模拟常见的桌面和移动浏览器 User-Agent。
    • 无头浏览器: 通常需要配合 Puppeteer 或 Selenium 等工具执行 JavaScript 并渲染动态内容;如果代理不够稳固,这会增加触发反爬系统的概率。
  • 关键数据: 房产详情、历史成交数据、Zestimate 估值、税务信息、经纪人信息、社区数据。

Realtor.com

  • 主要市场: 美国和加拿大。
  • 挑战: 与 Zillow 类似,Realtor.com 也部署了稳固的反爬防护。虽然有时被认为比 Zillow 稍温和,但持续且不加管理的抓取同样会被封禁。动态内容加载十分普遍。
  • 代理策略:
    • 住宅代理: 推荐使用。将 IP 定位到具体的美国或加拿大地区。
    • 轮换: 平衡轮换频率。轮换过于频繁时,如果不符合正常浏览会话的特征,反而可能触发检测。
    • User-Agent 与请求头: 保持真实的浏览器请求头和 User-Agent。
    • Referer 请求头: 加入恰当的 Referer 请求头,以模拟正常的跳转浏览。
  • 关键数据: 房源详情、房产历史、经纪人联系方式、学区、社区人口结构。

代理管理与抓取最佳实践

有效使用代理,不只是选对类型那么简单。

请求限速

在请求之间加入延迟以模拟真人浏览节奏,并将延迟随机化,避免出现可预测的规律。

User-Agent 轮换

维护一组多样且真实的 User-Agent 字符串(例如 Windows 上的 Chrome、macOS 上的 Firefox、iOS 上的 Safari),并在每次请求或每个会话中轮换。

请求头管理

每次请求都发送一整套合法的 HTTP 请求头(AcceptAccept-EncodingAccept-LanguageConnectionReferer 等)。缺失或不一致的请求头会让请求被判定为自动化行为。

妥善处理 cookie。在需要维持会话状态时,保存并回传目标网站下发的 cookie。若希望获得全新身份,则在新会话中清除 cookie。

错误处理

针对 403(Forbidden)、429(Too Many Requests)等 HTTP 状态码以及 CAPTCHA 挑战,实现稳健的错误处理。403 或 429 通常意味着 IP 被封或触发限流,需要更换代理。

CAPTCHA 处理

对于 Zillow 这类验证码频繁的站点,可接入第三方验证码识别服务(例如 2Captcha、Anti-Captcha),或选择提供 CAPTCHA 绕过方案的代理服务商。

JavaScript 渲染

对于严重依赖 JavaScript 的站点(这三个平台都是如此),可考虑将无头浏览器(例如 Puppeteer、Playwright、配合 undetected_chromedriver 的 Selenium)与代理结合使用。这会带来额外开销,但能确保内容完整渲染。

代码示例:在 Python Requests 中使用代理

下面的示例演示如何用 Python 的 requests 库通过住宅代理发起请求。

import requests
import random
import time

# 住宅代理列表(请替换为您自己的代理列表)
# 格式:"http://user:password@ip:port" 或 "http://ip:port"
PROXIES = [
    "http://user1:[email protected]:8000",
    "http://user2:[email protected]:8000",
    # ... 更多代理
]

# 常见 User-Agent 字符串列表
USER_AGENTS = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/109.0",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/109.0",
]

def make_proxied_request(url, proxy_list, user_agent_list, retries=3):
    for attempt in range(retries):
        proxy = random.choice(proxy_list)
        user_agent = random.choice(user_agent_list)
        proxies = {
            "http": proxy,
            "https": proxy,
        }
        headers = {
            "User-Agent": user_agent,
            "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
            "Accept-Language": "en-US,en;q=0.5",
            "Accept-Encoding": "gzip, deflate, br",
            "Connection": "keep-alive",
            "Upgrade-Insecure-Requests": "1",
        }

        try:
            print(f"Attempt {attempt + 1}: Fetching {url} via {proxy} with User-Agent: {user_agent[:50]}...")
            response = requests.get(url, proxies=proxies, headers=headers, timeout=15)
            response.raise_for_status()  # 对错误响应(4xx 或 5xx)抛出 HTTPError
            print(f"Success! Status Code: {response.status_code}")
            return response
        except requests.exceptions.RequestException as e:
            print(f"Request failed: {e}. Retrying with a different proxy...")
            time.sleep(random.uniform(5, 15)) # 重试前等待
    print("All retry attempts failed.")
    return None

# 使用示例:
# target_url_cian = "https://www.cian.ru/rent/flat/288593457/" # CIAN 房源示例
# target_url_zillow = "https://www.zillow.com/homedetails/123-Main-St-Anytown-NY-12345/12345678_zpid/" # Zillow 房源示例
# target_url_realtor = "https://www.realtor.com/realestateandhomes-detail/123-Main-St-Anytown-NY-12345/12345678" # Realtor.com 房源示例

# response = make_proxied_request(target_url_zillow, PROXIES, USER_AGENTS)
# if response:
#     print(response.text[:500]) # 打印响应的前 500 个字符

对比:房地产抓取适用的代理类型

代理类型 成功率(CIAN/Zillow/Realtor) 成本(相对) 地理定位能力 反爬规避 说明
住宅代理 中偏高 极佳 推荐用于所有目标站点。
数据中心代理 良好 容易被识别,不推荐。
移动代理 很高 很高 良好(按地区) 很高 用于极顽固封锁的小众场景。

对比:CIAN、Zillow 与 Realtor.com 抓取注意事项

特性 CIAN (ЦИАН) Zillow Realtor.com
主要市场 俄罗斯、独联体 美国 美国、加拿大
反爬强度 很高(验证码常见)
推荐代理 住宅代理(俄罗斯 IP) 住宅代理(美国 IP) 住宅代理(美国/加拿大 IP)
关键数据 房源详情、价格、经纪人信息、房产特征 房产详情、历史数据、Zestimate 估值、税务信息 房源详情、房产历史、经纪人信息、社区数据
JS 渲染 大部分内容需要 高度依赖 高度依赖
地理定位 必需(俄罗斯) 必需(美国州/地区) 必需(美国/加拿大地区)
已更新: 03.03.2026
返回分类

试用我们的代理

遍布 100+ 国家的 20,000+ 代理

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.