小红薯(红书)商品搜索详情分析与实现

📅 2026/7/19 10:17:14
小红薯(红书)商品搜索详情分析与实现
前言小红书作为国内知名的社交电商平台拥有丰富的商品数据和用户评价信息。对于数据分析师、产品经理或电商从业者来说能够获取小红书的商品数据具有重要的商业价值。本文将详细介绍如何通过逆向工程实现小红书商品搜索API的调用。免责声明本文仅用于技术学习和研究目的请遵守相关法律法规和平台服务条款不得用于商业用途或恶意爬取。在开始之前安利一个特别好用的红薯数据爬取平台GalaxyAPI爬虫平台技术架构概览本项目主要包含以下核心功能商品搜索功能商品详情获取商家在线状态查询请求签名生成反爬虫参数构造主要技术栈Python 3.xrequests 库HTTP请求loguru 库日志管理自定义加密算法核心组件分析1. 请求头参数构造小红书的API需要多个关键参数来绕过反爬虫机制def xb3(): 生成X-B3-TraceId characters abcdef0123456789 return .join(random.choice(characters) for _ in range(16)) def x_xray(): 生成X-Xray-Traceid atomic_integer [random.randint(0, 2 ** 32 - 1)] j16 int(time.time() * 1000) a16 [ (j16 23) | (get_and_increment(atomic_integer) 8570985), next_long() ] return f{a16[0]:016x}{a16[1]:016x}关键参数说明X-B3-TraceId: 16位随机十六进制字符串X-Xray-Traceid: 基于时间戳和随机数生成的32位十六进制字符串shield: 签名2. Shield参数获取Shield是小红书最关键的反爬虫参数需要通过专门的服务来生成def get_shield(xhs_api_url, xy_common_params, deviceId, hmac): 获取Shield参数 shield_params { noteid: , param: xy_common_params, device: deviceId, hmac: hmac, url: xhs_api_url, direction: 48 } body urlencode(shield_params) headers { } shield_url response requests.post(shield_url, databody, headersheaders, timeout5) return response.text.strip()3. 设备指纹构造小红书需要模拟真实的移动设备环境# 设备相关参数 deviceId 换成自己的 fid 换成自己的 smid 换成自己的 # User-Agent模拟Android设备 need_ua 换成自己的主要功能实现1. 商品搜索功能def search_xiaohongshu(page1, keywordccd相机, sidNone): 搜索小红书商品支持翻页 Args: page (int): 页码 keyword (str): 搜索关键词 sid (str): 会话ID Returns: dict: 商品搜索结果 # 构造搜索参数 xhs_params { keyword: keyword, filters: , page: page, size: 20, sort: , source: explore_feed, search_id: J(), # 生成唯一搜索ID page_pos: 0, store_id: , geo: , sku_list: , note_list: , allow_rewrite: true } # 发送请求并返回结果 response requests.get(xhs_base_url, paramsxhs_params, headersxhs_headers, timeout10) return response.json()2. 商品详情获取def get_product_detail(skuId, sidNone): 获取商品详细信息 base_url https://mall.xiaohongshu.com/api/store/jpd/edith/detail/primary params { sku_id: skuId, source: mall_home, address_id: , cart_key: , pre_page: mall_home, trade_ext: , move_ahead_pic_id: } # 构造完整请求并返回结果 response requests.get(xhs_api_url, headersxhs_headers, timeout5) return response.json()3. 商家状态查询def get_seller_status(sellerId, sid): 查询商家在线状态 url https://www.xiaohongshu.com/api/edith/cs/seller/online/status params { sellerId: sellerId, sid: fsession.{sid}, } response requests.get(url, headersheaders, paramsparams) return response.json()参数配置详解xy-common-params参数这是小红书API中最重要的公共参数集合xy_common_params_dict { fid: fid, # 设备指纹ID device_fingerprint: smid, # 设备指纹 device_fingerprint1: smid, # 设备指纹副本 cpu_name: Qualcomm Technologies, Inc SM8150, # CPU信息 gid: x_mini_gid, # 小程序GID device_model: phone, # 设备类型 launch_id: 1748314107, # 启动ID tz: Asia/Shanghai, # 时区 channel: Vivo, # 渠道 versionName: 8.84.0, # 版本名称 overseas_channel: 0, # 海外渠道 deviceId: deviceId, # 设备ID platform: android, # 平台 sid: fsession.{sid}, # 会话ID identifier_flag: 4, # 标识符标志 t: 1748314126, # 时间戳 project_id: ECFAAF, # 项目ID build: 8840940, # 构建号 x_trace_page_current: search_result_goods, # 当前页面 lang: zh-Hans, # 语言 app_id: ECFAAF01, # 应用ID uis: light, # UI主题 teenager: 0 # 青少年模式 }使用示例if __name__ __main__: KEYWORD ccd相机 # 搜索关键词 skuid 67df8608791e9400157c0328 sid 1747021841033229293800 # 搜索商品 search_data search_xiaohongshu(1, keywordKEYWORD, sidsid) print(搜索结果:, search_data) # 获取商品详情 detail_data get_product_detail(skuid, sid) print(商品详情:, detail_data) # 查询商家状态 seller_data get_seller_status(67852ceaa78db60015df3130, sid) print(商家状态:, seller_data)结果技术难点与解决方案1. 反爬虫机制问题: 小红书有复杂的反爬虫机制解决: 通过模拟真实设备环境和动态生成签名参数2. 参数加密问题: 多个参数需要特殊的加密算法解决: 逆向分析并实现相应的加密函数3. 请求频率控制问题: 频繁请求可能被封禁解决: 添加随机延时和请求间隔控制注意事项与建议1. 合规使用严格遵守robots.txt协议控制请求频率避免对服务器造成压力仅用于学习研究不得商业使用2. 参数维护定期更新设备指纹和签名参数监控API变化及时调整代码3. 错误处理添加完善的异常处理机制实现请求重试逻辑记录详细的日志信息总结本文详细介绍了小红书商品搜索API的逆向工程实现过程包括关键参数的构造、反爬虫机制的绕过以及核心功能的实现。通过这个项目可以深入理解现代Web应用的反爬虫机制和相应的应对策略。在实际使用中请务必遵守相关法律法规和平台规则将技术用于正当用途。同时随着平台技术的不断升级相关参数和接口可能会发生变化需要持续维护和更新代码。希望这篇文章能够帮助大家更好地理解Web爬虫技术和反爬虫机制为后续的学习和研究提供参考。相关资源:Python requests文档Web爬虫技术指南反爬虫技术解析