微信分享到朋友圈的脚本奥秘(转)

微信最近推出的一个社交工具网站 www.faxinxi.la ,能发投票、活动、文章。

但在微信外的浏览器包括PC端和移动端的都无法浏览这个网站任何内容,那是通过什么来控制的呢?通过微信内输出特定JS接口不太可能,那就只能通过Header信息里的User-agent了,实验后证实没错,通过探测可以知道微信内的User-agent信息:

Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 MicroMessenger/5.0.1

就是通过识别MicroMessenger这个关键字来确定是否来自微信,通过浏览器的user-agent插件就可以轻松绕过这个限制。

接下来就可以轻松获得www.faxinxi.la的网页源码,其实这不是一个微信官方的应用,服务端是用ASP.NET写的,而且是IIS服务器,有没有注入漏洞就不知道了,不过注入了也没什么实际价值,呵呵。

为什么要挖掘他的网页源码呢,这才是关键。譬如你发一个投票,网址是http://www.faxinxila.com/post/vote, 但你填完所有信息按提交后,网页地址并没有发生跳转,而是ajax提交信息后弹出一个遮罩层,提示你点右上角的分享按钮,注意,点分享前网址一直保持在 /post/vote路径,但点开分享里的信息已经发生了变化,分享出去后,网址也发生了变化,变成了/vote/3投票实际的展示路径。 这是怎么做到的呢?

查看faxinxi里唯一js文件,你会发现一个WeixinJSBridge的输出对象,再对比下通过微信公众平台发出来的文章源文件,也有 WeixinJSBridge对象脚本,问题迎刃而解,微信在内嵌webview里输出了WeixinJSBridge对象供web端js调用。 faxinxi已经将有用的js提取出来了,详细脚本如下:

var dataForWeixin={
   appId:"",
   MsgImg:"http://img1.faxinxila.net/images/share_msg.png",
   TLImg:"http://img1.faxinxila.net/images/share.png",
   url:"http://faxinxi.la/vote/1",
   title:"input title here",
   desc:"input description here",
   fakeid:"",
   callback:function(){}
};
(function(){
   var onBridgeReady=function(){
   WeixinJSBridge.on(‘menu:share:appmessage‘, function(argv){
      WeixinJSBridge.invoke(‘sendAppMessage‘,{
         "appid":dataForWeixin.appId,
         "img_url":dataForWeixin.MsgImg,
         "img_width":"120",
         "img_height":"120",
         "link":dataForWeixin.url,
         "desc":dataForWeixin.desc,
         "title":dataForWeixin.title
      }, function(res){(dataForWeixin.callback)();});
   });
   WeixinJSBridge.on(‘menu:share:timeline‘, function(argv){
      (dataForWeixin.callback)();
      WeixinJSBridge.invoke(‘shareTimeline‘,{
         "img_url":dataForWeixin.TLImg,
         "img_width":"120",
         "img_height":"120",
         "link":dataForWeixin.url,
         "desc":dataForWeixin.desc,
         "title":dataForWeixin.title
      }, function(res){});
   });
   WeixinJSBridge.on(‘menu:share:weibo‘, function(argv){
      WeixinJSBridge.invoke(‘shareWeibo‘,{
         "content":dataForWeixin.title,
         "url":dataForWeixin.url
      }, function(res){(dataForWeixin.callback)();});
   });
   WeixinJSBridge.on(‘menu:share:facebook‘, function(argv){
      (dataForWeixin.callback)();
      WeixinJSBridge.invoke(‘shareFB‘,{
         "img_url":dataForWeixin.TLImg,
         "img_width":"120",
         "img_height":"120",
         "link":dataForWeixin.url,
         "desc":dataForWeixin.desc,
         "title":dataForWeixin.title
      }, function(res){});
   });
};
if(document.addEventListener){
   document.addEventListener(‘WeixinJSBridgeReady‘, onBridgeReady, false);
}else if(document.attachEvent){
   document.attachEvent(‘WeixinJSBridgeReady‘   , onBridgeReady);
   document.attachEvent(‘onWeixinJSBridgeReady‘ , onBridgeReady);
}
})();

转至:http://blog.4wer.com/wechat-timeline-share

时间: 2024-08-25 19:01:53

微信分享到朋友圈的脚本奥秘(转)的相关文章

UC和QQ两个主流浏览器 * 点击触发微信分享到朋友圈或发送给朋友的功能(转载)

转载(声明:仅供学习使用) /** * 此插件主要作用是在UC和QQ两个主流浏览器 * 上面触发微信分享到朋友圈或发送给朋友的功能 * 代码编写过程中 参考: * http://mjs.sinaimg.cn/wap/module/share/201501261608/js/addShare.js * 此外,JefferyWang的项目对我也有一定启示: * https://github.com/JefferyWang/nativeShare.js * * @revisor [email prot

微信分享到朋友圈,分享给好友设置标题图片描述参数

var imgUrl = "http://xxxxx.com/activity/images/logo.jpg"; var lineLink = window.location.href; var descContent = '来宜人贷参与抢钱活动100%获得10000金币,还可以兑换成现金哦~'; var shareTitle = '来宜人贷 拼人品抢现金'; var appid = 'wx237b223ad5773cf5'; function shareFriend() { Wei

微信分享到朋友圈----摘录

微信分享到朋友圈需要设置图片链接标题描述,同理分享到微博一样的js,需要预加载这些js <script> var imgUrl = '';//图片地址 var lineLink = '';//链接地址 var shareTitle = '';//分享标题 var descContent = "";//描述内容 var appid = ''; function shareFriend() { WeixinJSBridge.invoke('sendAppMessage',{ &

微信 分享到朋友圈 代码

<script> var imgUrl = "图片地址"; var lineLink = window.location.href; var descContent = '描述'; var shareTitle = '标题'; var appid = ''; function shareFriend() { WeixinJSBridge.invoke('sendAppMessage',{ "appid": appid, "img_url&quo

微信分享到朋友圈给分享链接加上图片和文案【源码】

参考源码: 1.0假如微信6.02 不能看到分享链接后面的图片的话: 在body里面添加如下代码:(相应的位置改为你需要的) <img style="width:1px; height:1px;" src="http://web.socialab.com.cn/static/itzu/images/pic300.jpg" alt="" /> var dataForWeixin = { appId: "", img:

iOS - 社会化分享-微信分享,朋友圈分享

我仅仅做了文字和图片分享功能 1. TARGETS - Info - URL Types identifier -> weixin URL Schemes ->  应用id 2.在AppDelegate.h 引入头文件 #import "WXApi.h" { /** * WXSceneSession 分享到会话 * WXSceneTimeline 分享到朋友圈 * WXSceneFavorite 分享到我的收藏 */ enum WXScene _scene; } - (id

iOS开发之第三方分享微信分享、朋友圈分享,史上最新最全第三方分享微信方式实现、朋友圈方式实现

本文章项目demo地址: https://github.com/zhonggaorong/weixinLoginDemo 微信分享环境搭建参考(包含登录的源码):http://blog.csdn.net/zhonggaorong/article/details/51719050 微信分享前提: 1.需要成功在微信开发者平台注册了账号, 并取的对应的 appkey appSecret. 2. 针对iOS9 添加了微信的白名单,以及设置了 scheme url . 这都可以参照上面的链接,进行设置好

微信分享到朋友圈,分享给朋友JS代码

说明:2015年,微信公众平台升级了开发文档. 其实就是限制了没有加入公众平台的人的分享权限. 如果你没有公众平台的账号,你也可以copy过去使用,只是分享的时候没有介绍,只有标题和图片. 右下角灰色的介绍会用一个当前的网址代替. 说明:该代码所示没有图样,只有点击右上角的分享到朋友圈或者分享给朋友,才会显示出效果. URL中不能含有? 建议使用伪静态 提示:最好去注册个账号https://mp.weixin.qq.com 注册的应该是非个人的订阅号,不然没有分享的功能.不用谢~ 效果如下图所示

微信分享到朋友圈按钮 右上角提示

<html> <head> <meta charset="utf-8"> </head> <style> #shareit { -webkit-user-select: none; display: none; position: absolute; width: 100%; height: 100%; background: rgba(0,0,0,0.85); text-align: center; top: 0; left