0

0

小红书短链接怎么还原php_提取分享文案中的链接参数【方法】

絕刀狂花

絕刀狂花

发布时间:2025-12-30 15:59:19

|

1131人浏览过

|

来源于php中文网

原创

小红书短链(如xhslink.com/abc123)是302跳转,最终指向含笔记id等参数的完整url;php需用curl开启curlopt_followlocation并获取curlinfo_effective_url才能正确还原。

小红书短链接怎么还原php_提取分享文案中的链接参数【方法】

小红书短链接结构是怎样的?

小红书分享文案里的短链(如 https://xhslink.com/abc123)本质是 302 跳转,最终指向带完整参数的笔记页 URL。直接访问短链会触发重定向,但 PHP 中默认的 file_get_contents()curl_exec() 不会自动跟随跳转,所以拿不到最终 URL —— 这是还原失败最常见的原因。

关键参数藏在跳转后的 URL query string 里,典型结构类似:
https://www.xiaohongshu.com/explore/xxxxxx?xhsshare=xxx&app_platform=android&app_version=8.93.0&share_from_user_hidden=true&xhss=xxx

其中 explore/xxxxxx 后面那段 ID 就是笔记唯一标识符(俗称“笔记ID”),其余如 app_platformshare_from_user_hidden 是渠道或埋点参数,通常可忽略。

用 cURL 获取重定向最终 URL(推荐)

PHP 最可靠的方式是配置 cURL 请求头并启用跳转跟踪,同时只获取响应头(不下载页面内容),提升速度和稳定性。

PhotoAid Image Upscaler
PhotoAid Image Upscaler

PhotoAid出品的免费在线AI图片放大工具

下载

立即学习PHP免费学习笔记(深入)”;

  • 必须设置 CURLOPT_FOLLOWLOCATIONtrue,否则卡在第一次 302
  • 禁用 CURLOPT_RETURNTRANSFER 或配合 CURLOPT_HEADER + CURLOPT_NOBODY,避免拉取整页 HTML
  • 加上 User-Agent,部分短链服务会拦截无 UA 的请求
  • 注意:某些短链可能跳转多次(例如 xhslink → xiaohongshu.com → 带参数的 explore 页面),CURLOPT_MAXREDIRS 建议设为 5
function getRealXHSUrl($shortUrl) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $shortUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); // 不要 body
    curl_setopt($ch, CURLOPT_HEADER, true);           // 只要 header
    curl_setopt($ch, CURLOPT_NOBODY, true);           // 不取 body
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);

    ob_start();
    curl_exec($ch);
    $headers = ob_get_clean();
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $finalUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
    curl_close($ch);

    if ($httpCode >= 300 && $httpCode < 400 || $httpCode === 200) {
        return $finalUrl;
    }
    return null;
}

// 示例调用
$real = getRealXHSUrl('https://xhslink.com/ABcDeF');
echo $real; // 输出类似 https://www.xiaohongshu.com/explore/65a1b2c3d4e5f67890123456?xhsshare=...

从最终 URL 提取笔记 ID 和关键参数

得到 https://www.xiaohongshu.com/explore/65a1b2c3d4e5f67890123456?xhsshare=... 后,笔记 ID 就是 explore/ 后面那一串 24 位十六进制字符串(MongoDB ObjectId 格式)。其他参数如 xhsshareshare_from_user_hidden 可用 parse_url() + parse_str() 拆解。

  • 笔记 ID 正则建议用:/\/explore\/([0-9a-f]{24})/i,注意大小写不敏感
  • 不要依赖 parse_url($url, PHP_URL_PATH) 后再 explode,因为路径可能含中文或特殊字符(极少数情况)
  • 如果最终 URL 是 https://www.xiaohongshu.com/discovery/item/...(新版发现页),ID 位置不同,需额外判断
$url = 'https://www.xiaohongshu.com/explore/65a1b2c3d4e5f67890123456?xhsshare=abc123&app_platform=ios';
$matches = [];
if (preg_match('/\/explore\/([0-9a-f]{24})/i', $url, $matches)) {
    $noteId = $matches[1]; // "65a1b2c3d4e5f67890123456"
    
    $parsed = parse_url($url);
    parse_str($parsed['query'], $params);
    $xhsshare = $params['xhsshare'] ?? null; // "abc123"
    $platform = $params['app_platform'] ?? null; // "ios"
}

绕过跳转的替代方案(不推荐但有时有效)

部分小红书短链支持 HEAD 请求直接返回 Location 头,不用走完整 GET 流程。但 xhslink.com 近期已限制 HEAD,多数情况下返回 405 或空 Location —— 所以不能作为主力方案,仅作 fallback。

  • 若 cURL 被墙或超时,可尝试加代理(CURLOPT_PROXY),但需注意代理稳定性
  • 批量处理时务必加延迟(usleep(300000)),高频请求会被封 IP 或返回 429
  • 别用 get_headers():它底层不保证跟随跳转,PHP 版本差异大,行为不可控

真正稳定还原的关键,不是“怎么快”,而是“怎么让服务端把跳转链完整吐出来”。cURL 的 CURLINFO_EFFECTIVE_URL 是目前最接近“真实终点”的 PHP 原生能力。

相关文章

小红书
小红书

小红书是一款集种草分享、生活购物、社交于一体的综合app。小红书汇集了时尚、美容、生活方式、旅行、美食等多个领域的内容,为用户提供了丰富多彩的体验和无限灵感,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

950

2023.08.02

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

454

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

183

2023.10.30

mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

207

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

313

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

290

2025.06.11

c++标识符介绍
c++标识符介绍

本专题整合了c++标识符相关内容,阅读专题下面的文章了解更多详细内容。

174

2025.08.07

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

718

2023.08.03

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

1

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 13万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号