0

0

微信短链接怎么还原php_用浏览器开发者工具抓包获取【方法】

星夢妙者

星夢妙者

发布时间:2026-01-01 20:36:50

|

989人浏览过

|

来源于php中文网

原创

微信短链无法用PHP直接还原,因其采用服务端302跳转+前端JS混淆双重保护,cURL不执行JS且受UA、Cookie限制,仅能处理<5%纯302跳转;稳定方案需用Puppeteer/Playwright或浏览器抓包获取真实302响应头。

微信短链接怎么还原php_用浏览器开发者工具抓包获取【方法】

微信短链接无法直接用 PHP 解析还原,因为 weixin.qq.com 类短链(如 https://w.url.cn/s/AbCdEfG)是服务端 302 跳转 + 前端 JS 混淆双重保护,PHP 的 get_headers()cURL 默认拿不到最终 URL —— 它们会被重定向拦截,且部分跳转还依赖微信客户端 UA 和 Cookie。

为什么 curl_getinfo($ch, CURLINFO_EFFECTIVE_URL) 失败

微信短链的跳转链路通常是:短链 → 中间页(含 JS 跳转)→ 目标页。cURL 默认不执行 JS,所以即使开启 CURLOPT_FOLLOWLOCATION,也只走到中间 HTML 页面,CURLINFO_EFFECTIVE_URL 返回的是中间页地址(如 https://mp.weixin.qq.com/s?__biz=xxx 的壳页面),不是真实目标 URL。

  • 中间页响应头通常不含 Location,而是返回一段含 window.location.href = "..." 或 Base64 混淆字符串的 HTML
  • 微信会校验 User-Agent,非微信 UA(如 cURL 默认值)可能被返回 403 或降级为二维码页
  • 部分短链还依赖 cookie(如 pgv_pvimm_lang),空 cookie 会导致跳转中断

浏览器开发者工具抓包的真实流程

这不是“打开 F12 看一眼就完事”,关键在于捕获**首次跳转后的那个带 Location 响应头的请求**,它往往藏在 XHR 或 Fetch 请求里,或由前端 JS 触发的隐藏 iframe 加载中。

  • 在 Chrome 打开微信短链(需用微信内置浏览器或通过「微信开发者工具」模拟,普通 Chrome 会跳转失败)
  • F12 → Network → 勾选「Preserve log」→ 刷新页面
  • 过滤 XHRDoc,找到第一个返回 302 的请求(响应头含 Location: https://mp.weixin.qq.com/...
  • 右键该请求 → 「Copy」→ 「Copy as cURL (bash)」,粘贴到终端可验证是否能复现跳转
  • 若没看到 302,点开任意一个 HTML 响应 → 查看 Response → 搜索 location.hrefbase64 字符串,手动解码

PHP 中模拟可行但有限的还原方式

只能处理「纯服务端 302 跳转」的极少数微信短链(实际占比<5%),对主流 w.url.cn 无效。必须严格设置请求头和 Cookie,并禁用自动跳转以便逐层检查。

Cutout.Pro
Cutout.Pro

AI驱动的视觉设计平台

下载

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

function resolveWechatShortUrl($shortUrl) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $shortUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); // 关键:不能自动跳
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_NOBODY, false);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.49(0x18003133) NetType/WIFI Language/zh_CN');
    curl_setopt($ch, CURLOPT_COOKIE, 'mm_lang=zh_CN; pgv_pvi=1234567890;');
    
    $response = curl_exec($ch);
    $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
    $headers = substr($response, 0, $headerSize);
    $body = substr($response, $headerSize);
    
    if (preg_match('/Location:\s*(.+)/i', $headers, $matches)) {
        return trim($matches[1]);
    }
    
    // 若无 Location,尝试从 body 提取 JS 跳转(简单匹配,不保证 100%)
    if (preg_match('/window\.location\.href\s*=\s*[\'"]([^\'"]+)[\'"]/i', $body, $matches)) {
        return $matches[1];
    }
    
    curl_close($ch);
    return null;
}

这个函数对大部分 w.url.cn 返回 null,因为它的 body 是加密 script 标签或 canvas 渲染页 —— 这正是为什么必须依赖浏览器抓包,而不是幻想 PHP 单独搞定。

真正稳定还原微信短链,唯一可靠路径是:用 Puppeteer 或 Playwright 启动真实 Chromium,注入微信 UA,等 JS 执行完再读 window.location.href;或者,直接信任抓包拿到的那条 302 响应头 —— 其他所有“PHP 解密算法”“Base64 反混淆”都是针对过期样本的无效尝试。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

1071

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

847

2023.11.06

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

254

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1110

2024.03.01

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6500

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

368

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

447

2024.02.23

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

97

2025.08.19

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

热门下载

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

精品课程

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

共137课时 | 13.5万人学习

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号