Fiddler4抓包分析外部浏览器打开京东网站可以登陆跳转至微信内部

user

雨橙

中国.四川.成都

世界之上、唯有远见、惟爱不变。


今天有朋友给我说他看见京东手机网站可以从外部打开直接跳转至微信内部。喊我去研究。
通过分析发现需要应用到微信提供的 URL Scheme。
目前微信提供的 URL Scheme详细参数如下:截至目前为部分已经无法使用。下图来自网络。
微信

微信 weixin://
发起群聊 weixin://dl/groupchat
通讯录

添加朋友 weixin://dl/add
隐藏入口 上报日志 weixin://dl/log
隐藏入口 故障修复 搜索 :recover
新的朋友 weixin://dl/recommendation
群聊 weixin://dl/groups
标签 weixin://dl/tags
公众号 weixin://dl/officialaccounts
发现

朋友圈 weixin://dl/moments
扫一扫 weixin://dl/scan 或 已停用 weixin://scanqrcode
购物 weixin://dl/shopping
游戏 weixin://dl/games
我

个人信息 weixin://dl/profile
名字 weixin://dl/setname
我的二维码 weixin://dl/myQRcode
我的地址 weixin://dl/myaddress
相册 weixin://dl/posts
收藏 weixin://dl/favorites
已停用 钱包 weixin://dl/wallet
优惠券 weixin://dl/card
表情 weixin://dl/stickers
设置 weixin://dl/settings
已停用 帐号与安全 weixin://dl/security
QQ 号 weixin://dl/bindqq
手机号 weixin://dl/bindmobile
邮箱地址 weixin://dl/bindemail
帐号保护 weixin://dl/protection
新消息通知 weixin://dl/notifications
已停用 隐私 weixin://dl/privacy
通讯录黑名单 weixin://dl/blacklist
不让他(她)看我的朋友圈 weixin://dl/hidemoments
不看他(她)的朋友圈 weixin://dl/blockmoments
通用 weixin://dl/general
多语言 weixin://dl/languages
字体大小 weixin://dl/textsize
我的表情 weixin://dl/stickersetting
朋友圈小视频 weixin://dl/sight
功能 weixin://dl/features
通讯录同步助手 weixin://dl/securityassistant
群发助手 weixin://dl/broadcastmessage
聊天记录迁移 weixin://dl/chathistory
清理微信存储空间 weixin://dl/clear
帮助与反馈
已停用 全部问题 weixin://dl/faq
意见反馈 weixin://dl/help 或 weixin://dl/feedback
关于微信 weixin://dl/about
已停用 微信软件许可及服务协议 weixin://dl/terms
其他

隐藏入口 第三方公众号临时会话接口 weixin://dl/business
参数 ticket weixin://dl/business/?ticket=
参阅:http://xyk.cmbchina.com/wx/20150528 使用了 http://xyk.cmbchina.com/getWeiXinURL.do 生成 ticket 参数
隐藏入口 参数不明 第三方 Webview 接口 weixin://dl/businessWebview/link/
隐藏入口 参数不明 第三方游戏库接口 weixin://dl/businessGame/library/
隐藏入口 参数不明 第三方游戏详情接口 weixin://dl/businessGame/detail/
隐藏入口 参数不明 第三方支付接口 weixin://dl/businessPay/
隐藏入口 参数不明 第三方临时会话接口 weixin://dl/business/tempsession/ 或 weixin://dl/businessTempSession/
未知

weixin://dl/chat
weixin://dl/designeremoji
weixin://dl/login/common_view
weixin://dl/login/phone_view
weixin://dl/personalemoticon
weixin://private/
weixin://private/setresult/
weixin://dl/update_newest_version
weixin://dl/wechatout
weixin://dl/wechatoutcoupon



这里我主要说一下微信提供的 URL Scheme其中的weixin://dl/business/.经过测试发现weixin://dl/business/这个URL需要传递一个ticket参数.完整URL为: weixin://dl/business/?ticket=tf605d2c9008df47681d9ee3c026d3700.注意ticket后面跟了一个参数。现在问题来了。这个参数是如果生成滴。我们要怎么实现。


目前
weixin://这个协议只能打开微信应用。但无法在微信内部打开页面内容。那么京东是如何做到滴。下面我们通过Fiddler4抓包分析。
首先我们需要打开京东登陆页面URL: https://plogin.m.jd.com/user/login.action?appid=100&kpkey=&returnurl=http://home.m.jd.com/myJd/home.action







当点击红色标注处打开微信登陆时。通过分析代码发现跳转到这个URL: https://plogin.m.jd.com/cgi-bin/m/wxlogin
然后又跳转到这个URL: https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx2f5d8f9715c59d10&redirect_uri=https%3A%2F%2Fplogin.m.jd.com%2Fcgi-bin%2Fm%2Fwxcallback%3Flsid%3D879kn265b3p85ib1poa0bkkk4ov3y5i7&response_type=code&scope=snsapi_userinfo&state=1cq98810
接着又跳转到URL: https://open.weixin.qq.com/sns/explorer_broker?appid=wx2f5d8f9715c59d10&redirect_uri=https%3A%2F%2Fplogin.m.jd.com%2Fcgi-bin%2Fm%2Fwxcallback%3Flsid%3D879kn265b3p85ib1poa0bkkk4ov3y5i7&response_type=code&scope=snsapi_userinfo&state=1cq98810&connect_redirect=1
最终通过分析发现跳转到了这个URL: weixin://dl/business/?ticket=tb256d79b7c6531d5620f0eed6c7f6175




通过上面几个URL。大家发现了和我们之前做过的微信开发或JSSDK里面获取CODE。获取token的URL是不是很像。
看到红色标注处的代码可以发现最终是通过
weixin://dl/business/?ticket=跳转到微信内部。

可以看到整个过程中发现微信官方给了京东内部实现接口来生成ticket,这个接口很难从外部获取。一般人也拿不到ticket,这也是为什么手机外部浏览器不允许直接调到微信内部打开页面的原因。
到这里很清楚的是微信对外屏蔽了相应的接口协议。但对内部实现了一套接口供合作伙伴调用。仅限合作伙伴使用。所以说没有关系的朋友很难实现这个应用也是可以理解的。
微信基于技术保护,它希望大家能多使用微信。到微信内部去做应用。而不是其他浏览器。

本文调试环境:win10+QQ浏览器手机模拟
工具:
Fiddler v4.6

注:本文内容均系原创。如需转载分享请标明出处

posted at