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

使用Python requests请求idealista接口返回403的问题求助

解决Idealista接口请求403(Datadome验证码拦截)问题

Idealista采用Datadome反爬系统,直接用标准requests库请求会被识别为非浏览器请求,触发403和验证码拦截——哪怕你复制了浏览器的headers和cookie,因为Datadome会校验请求的TLS握手指纹、请求顺序等细节,requests的默认行为和浏览器差异明显。

可行方案:模拟浏览器指纹请求

使用curl_cffi库(基于libcurl,能精准模拟不同浏览器的TLS指纹和请求行为),无需依赖浏览器即可绕过Datadome检测。

步骤及代码示例

  1. 安装依赖:
pip install curl_cffi
  1. 编写请求代码:
from curl_cffi import requests

# 目标接口URL
target_url = "https://www.idealista.com/ajax/listingcontroller/listingmapajaxgrouped.ajax?locationUri=madrid-provincia&typology=1&operation=1&freeText=&zoom=15&northEast=40.89556712488649%2C+-3.520630650041847&southWest=40.879864357074844%2C+-3.5899389309866714&uid=k4v5h8vbht9inrlfqrvq3bybmaefj7mhcdfhlpg0dk9&adfilter_pricemin=default&adfilter_price=default&adfilter_area=default&adfilter_areamax=default&adfilter_villalabel=&adfilter_apartment=&adfilter_loft=&adfilter_casabaja=&adfilter_stonehouse=&adfilter_atticstudio=&adfilter_rooms_0=&adfilter_rooms_1=&adfilter_rooms_2=&adfilter_rooms_3=&adfilter_rooms_4_more=&adfilter_baths_1=&adfilter_baths_2=&adfilter_baths_3=&adfilter_newconstruction=&adfilter_goodcondition=&adfilter_toberestored=&adfilter_hasairconditioning=&adfilter_wardrobes=&adfilter_lift=&adfilter_flatlocation=&adfilter_parkingspace=&adfilter_garden=&adfilter_swimmingpool=&adfilter_hasterrace=&adfilter_boxroom=&adfilter_accessibleHousing=&adfilter_luxury=&adfilter_top_floor=&adfilter_intermediate_floor=&adfilter_ground_floor=&adfilter_hasplan=&adfilter_digitalvisit=&adfilter_agencyisabank=&adfilter_published=default&adfilter_onlyflats=&adfilter_penthouse=&adfilter_duplex=&adfilter_homes=&adfilter_independent=&adfilter_semidetached=&adfilter_terraced=&adfilter_countryhouses=&adfilter_chalets=&device=desktop"

# 模拟Chrome浏览器请求,维持会话
session = requests.Session()

# 先访问主页获取初始cookie,模拟真实访问流程
session.get("https://www.idealista.com", impersonate="chrome110")

# 请求目标接口,带上浏览器指纹
response = session.get(target_url, impersonate="chrome110", headers={
    '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.9',
    'accept-language': 'es-ES,es;q=0.9',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'
})

# 打印响应内容
print(response.text)

关键说明

  • impersonate="chrome110"参数会让请求模拟Chrome 110的TLS指纹和请求头特征,匹配Datadome的校验标准。
  • 先访问主页是为了获取Idealista和Datadome的初始cookie,模拟用户正常的访问路径。
  • 避免短时间内频繁请求,否则依然会触发IP封禁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 17:06:49