faxinxi.la的实现原理分析

网上说微信中有个神奇代码faxinxi.la能够分享页面功能看,看了确实好奇,其实网上也说这就是一个网址。它通过微信的useragetn后台分析micromessage来限制之能在微信的内置浏览器中使用。通过模拟微信模拟器,查看他的代码,搞清了他的基本实现原理。他的分享也是利用了微信里的WeixinJsBridge来实现的。
当你选择某个功能,如贺卡,里的发送按钮时他执行如下代码 _card._post.

String.prototype.innerText=function(){return this.replace(/(<[^>]+>)|( )/ig,"");};
var _card={
_post:function(){
// 获取title标题 content内容 author发送人等内容并进行判断
var _title=$("card_title").innerHTML.innerText().trim(),_content=$("card_content").innerHTML.replace(/(<(br|div|\/div)>)+/ig,"\n").innerText(),_author=$("card_author").innerHTML.innerText().trim();
if(_title=="" || _title=="收卡人"){_system._toast("没有输入收卡人名字");return;}
if(_title.len()>20){_system._toast("收卡人名字在20字节以内");return;}
if(_content.len()<10){_system._toast("祝福语太短了");return;}
if(_content.len()>200){_system._toast("祝福语太长了");return;}
if(_author=="" || _author=="署名"){_system._toast("请署上你的大名");return;}
if(_author.len()>20){_system._toast("署名请在20字节以内");return;}
//之后调用_$,_$的意思是一个函数意思是发送连接进行后台存储,将你填写的信息保存下来,并回调调用 _card._ok 方法
_$("/servlet/card","type="+_cardType+"&title="+_title.encode()+"&content="+_content.encode()+"&author="+_author.encode(),"请稍候","_card._ok");
},
_ok:function(json){
//如果保存成功返回状态正常,则初始化一些分享的信息,包括分享的内容标题,图标,分享的链接,分享的描述。
if(json.state=="0"){_system._toast("你填写的内容有问题");return;}
dataForWeixin.MsgImg="http://img1.faxinxila.net/images/card_msg.png";
dataForWeixin.TLImg="http://img1.faxinxila.net/images/card.png";
dataForWeixin.path="card/"+_cardType+"/"+json.id;
dataForWeixin.title="收到一张来自"+$("card_author").innerHTML.innerText().trim()+"的"+_cardName;
dataForWeixin.desc=$("card_content").innerHTML.innerText().trim().left(88);
dataForWeixin.callback=function(){
_$("/servlet/share?kind=card&id="+json.id,"","");
};
// _system._guide()是调用另一个方法,显示指引选择微信分享的弹层
_system._guide();
}
};
window.onload=function(){$("card_body").show();$("card_loading").hide();};


String.prototype.len=function(){return this.replace(/[^\x00-\xff]/g,"aa").length;};
String.prototype.trim=function(){return this.replace(/(^ *)|( *$)/g, "");};
String.prototype.encode=function(){return escape(this.replace(/·/g," ")).replace(/\+/g,"%2B");};
String.prototype.left=function(length){
if(this.len()>length){
var _temp=this;
_temp=_temp.replace(/([^\x00-\xff])/g,"$1>");
_temp=_temp.substring(0,length-2)+"..";
return _temp.replace(/>/g,"");
}else{
return this.toString();
}
};
Element.prototype.show=function(){this.style.display="block";};
Element.prototype.hide=function(){this.style.display="none";};
Element.prototype.center=function(top){
this.style.left=(_system._scroll().x+_system._zero(_system._client().bw-this.offsetWidth)/2)+"px";
this.style.top=(top?top:(_system._scroll().y+_system._zero(_system._client().bh-this.offsetHeight)/2))+"px";
};
var _system={
_client:function(){
return {w:document.documentElement.scrollWidth,h:document.documentElement.scrollHeight,bw:document.documentElement.clientWidth,bh:document.documentElement.clientHeight};
},
_scroll:function(){
return {x:document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft,y:document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop};
},
_cover:function(show){
if(show){
$("cover").show();
$("cover").style.width=(this._client().bw>this._client().w?this._client().bw:this._client().w)+"px";
$("cover").style.height=(this._client().bh>this._client().h?this._client().bh:this._client().h)+"px";
}else{
$("cover").hide();
}
},
_loading:function(text){
if(text){
this._cover(true);
$("loading").show();
$("loading_text").innerHTML=text;
$("loading").center();
window.onresize=function(){_system._cover(true);$("loading").center();};
}else{
this._cover(false);
$("loading").hide();
window.onresize=null;
}
},
_toast:function(text,fun){
$("toast").show();
$("toast").innerHTML=text;
$("toast").center();
setTimeout(function(){
$("toast").hide();
if(fun){(fun)();}
},3*1000);
},
_ok:function(text,fun){
$("ok").show();
$("ok_text").innerHTML=text;
$("ok").center();
window.onresize=function(){$("ok").center();};
setTimeout(function(){
window.onresize=null;
$("ok").hide();
(fun)();
},2*1000);
},

//分享的弹层,显示让你分享网址。
_guide:function(click){
this._cover(true);
$("guide").show();
$("guide").style.top=(_system._scroll().y+5)+"px";
window.onresize=function(){_system._cover(true);$("guide").style.top=(_system._scroll().y+5)+"px";};
if(click){$("cover").onclick=function(){
_system._cover();
$("guide").hide();
$("cover").onclick=null;
window.onresize=null;
};}
},
_zero:function(n){
return n<0?0:n;
},
_forbidden:function(text){
return text.match(/(老市长|bxl|b市长|flg)/)!=null;
},
_shareUrl:function(){
var domain=["url.lc","www.faxinxi.la","www.faxingxi.la","www.kanxinxi.la","www.zhaoxinxi.la","www.zhaofuwu.la","faxinxila.com","faxinxila.net","kanxinxila.com","kanxinxila.net","www.messagehelper.com","www.messagehelper.net","tongmang.com","tongmang.net","tuimang.com","teimang.com","rengmei.com","fxxl.xiaozhongapp.com","fxxl.xiaozongapp.com","showarticle.cc","showparty.cc","showvote.cc","showmore.cc","jootun.com","showinfo.cc","showdetail.cc","showhot.cc","shownew.cc","getall.cc","gethot.cc","getnew.cc","getone.cc","getdetail.cc","getmessage.cc","myvote.cc","myarticle.cc","newmessage.cc","newarticle.cc","newvote.cc","newparty.cc","sharemessage.cc","sharearticle.cc","sharevote.cc","shareparty.cc","showpost.cc","getpost.cc","newpost.cc","sharepost.cc","readit.cc","jointhem.cc","clickit.cc","showit.cc","allarticle.cc","allcard.cc","allparty.cc","allvote.cc","bestparty.cc","bestvote.cc","bestarticle.cc","bestmessage.cc","yourarticle.cc","yourvote.cc","yourparty.cc","yourcard.cc","yourmessage.cc","loveparty.cc","lovevote.cc","lovecard.cc","lovearticle.cc","ourparty.cc","ourvote.cc","ourcard.cc","ourarticle.cc","goodarticle.cc","goodvote.cc","goodparty.cc","goodmessage.cc","joootun.com","jooootun.com","joooootun.com"],path=["detail.jsp?r=","show.asp?l=","index.do?u=","info.do?i="];
return "http://"+domain[parseInt(domain.length*Math.random())]+"/"+path[parseInt(path.length*Math.random())]+dataForWeixin.path;
}
};
(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":_system._shareUrl(),
"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":_system._shareUrl(),
"desc":dataForWeixin.desc,
"title":dataForWeixin.title
}, function(res){});
});
WeixinJSBridge.on('menu:share:weibo', function(argv){
WeixinJSBridge.invoke('shareWeibo',{
"content":dataForWeixin.title,
"url":_system._shareUrl()
}, 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":_system._shareUrl(),
"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);
}
})();
var _$=function(url,parameters,loadingMessage,functionName){
var request=new XMLHttpRequest();
if(loadingMessage!=""){_system._loading(loadingMessage);}
var method="POST";
if(parameters==""){method="GET";parameters=null;}
request.open(method,url,true);
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.onreadystatechange=function(){
if(request.readyState==4){
if(loadingMessage != ""){_system._loading();}
if(request.status==200){
if(functionName){
try{
var json = eval("("+ request.responseText+")");
eval(functionName+"(json)");
}catch(e){}
}
}else{
if(loadingMessage != ""){_system._toast("发生意外错误,请稍候再试");}
}
}
};
request.send(parameters);
};
Probability and Statistics - 4th edition 立即下载

相关推荐

LinuxCNC 源码解析:从界面开发到硬件交互的实战指南

本文深入解析LinuxCNC源码架构,从用户界面开发到硬件交互的实战指南。涵盖GTK与Tkinter界面开发、HAL硬件抽象层、G代码解析器改造及运动控制核心等关键模块,提供定制化开发技巧与性能优化方案,助力开发者高效掌握数控系统开发。

weixin_27066963的博客 190

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

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34348111的博客 324

零基础搭建本地AI绘画环境:Stable Diffusion 3.5保姆级安装教程(含中文优化方案)

本文提供零基础搭建本地AI绘画环境的详细教程,重点介绍Stable Diffusion 3.5的安装与中文优化方案。从硬件配置检查到软件依赖安装,再到核心组件配置与中文语义增强,教程涵盖全流程操作指南,帮助用户快速掌握AI文生图模型的本地部署技巧,提升创作效率。

weixin_30752699的博客 312

iOS 多语言本地化教程,VS Code KXApp 编辑 String Catalog .xcstrings

做 iOS 多语言本地化总要在 VS Code 和 Xcode 之间来回切?这篇讲用 KXApp(快蝎)在 VS Code 里直接编辑 String Catalog(.xcstrings):双击打开和 Xcode 一样的表格,`.xcstrings` 与老的 `.strings`、`.stringsdict` 同表编辑,加语言同步登记到工程、从源码扫描同步新 key,复数、设备变体和变量占位都在表里处理,改源语言文本后已有翻译自动标需复核。文件仍是标准格式,回 Xcode 打开一致。

2501_91592143的博客 154

数据清洗(Data Cleansing)

数据清洗(Data Cleansing)是指对数据进行处理和纠错,以去除或修复数据集中存在的错误、不致、不完整和冗余的数据,从而使数据更加准确、可靠和有用。数据清洗是数据处理和数据分析中一个非常重要的步骤,它可以帮助我们提高数据的质量,从而提高数据分析和机器学习的准确性和可靠性。数据清洗是一个重要的过程,它可以帮助我们提高数据的质量,从而提高数据分析和机器学习的准确性和可靠性。在实际应用中,我们可以使用一些工具和技术来实现数据清洗,例如 Pandas、NumPy 和 OpenRefine 等。通过数据清洗,

meimei169500的博客 1万+

构建可编程记忆系统:OpenClaw-SuperMemory本地部署与智能知识管理实战

在信息过载的时代,高效的知识管理与智能检索成为技术从业者的核心需求。向量数据库与嵌入模型技术通过将文本转化为高维向量,实现了基于语义相似度的智能搜索,突破了传统关键词匹配的局限。这项技术的核心价值在于将静态存储的信息转化为可动态查询和计算的知识资产,极大地提升了信息调用的准确性和效率。其应用场景广泛,从个人笔记管理、对话历史归档到企业知识库构建都能发挥关键作用。本文聚焦于开源项目OpenClaw-SuperMemory,它正是基于这一技术栈,通过本地化部署实现了可编程记忆系统的构建。项目集成了ChromaD

weixin_42525482的博客 319

训练数据示例

针对“规格书生成测试用例脚本”的任务,在 LLaMA-Factory 中使用即可。关键是把“规格书内容”放进input字段,把“期望的脚本输出”放进output字段。

liuxs2009的专栏 57

LVGL9.2移植至正点原子阿波罗STM32F429开发板

LVGL(Light and Versatile Graphics Library)是一个开源的图形库,旨在为嵌入式系统提供高效、灵活的图形用户界面(GUI)解决方案。它具有小巧的内存占用和高性能的渲染能力,支持多种硬件平台,包括单片机、DSP 和 ARM 处理器等。LVGL 支持丰富的控件(如按钮、标签、图标、滚动条等),并提供强大的主题、样式和动画功能,使得开发者能够轻松设计出美观且响应迅速的界面。

m0_51149752的博客 3173

用 ijson 流式解析 SerpBase 快照归档:把 16GB 内存压回 200MB

凌晨三点,解析脚本把机器内存吃满了去年做搜索数据归档分析时,我写了一个统计脚本:读取一个月的原始响应归档,统计每个域名在自然结果里出现的次数。归档文件是把每天几千条 SerpBase 响应拼成一个大 JSON 数组,单月文件 2.4GB。脚本跑起来不到四十秒,监控告警就响了——一台 16GB 内存的机器,可用内存被吃到只剩几百兆,同机的采集任务全被拖慢。。

Y381532662的博客 268

Carla中如何渲染opendrive车道线和车道标识(全网独家,附代码)

carla是可以单独加载opendrive并渲染路面的,但是无法把车道线渲染出来,这是一个大坑,因为没有车道线就无法给感知输入。楼主已经实现,直接渲染车道线或者带PBR贴图的车道标识。实现起来非常简单,但必须对carla源码以及ue的开发足够了解。在carla源码中有一个很重要的类opendrivegenerator,它是关于opendrive渲染的全部方法,但是你是找不到它实例化的地方的,因为它被定义在蓝图关卡中。网上包括carla官方关于carla源码的分析少之又少,楼主将自己的经验写出来供大家参考。

u013998156的博客 1089

pb插入ole控件点击insert+control时自动关闭解决办法

也就是说pb搜索CLSID的子项保存在OLE Object Bitmaps中,当搜索CLSID中的DLL或OCX控件和PB有冲突时,CLSID后面的DLL、OCX控件就不会保存在OLE Object Bitmaps中,也就是说OLE Object Bitmaps没有完全加载所有控件,有的控件冲突导致中断使PB报错,找出冲突的控件是关键。进行对出问题的控件反注册,如果提示反注册成功,打开PB的OLE控件看是否报错,如果还报错返回步骤(三)循环查找。,再进入注册表看到的是最正确的。来注册会莫名的冲突,但是用。

悠闲饭团的博客 710

AI 编程智能体零门槛调用手册:从“能跑”到“敢放进作品集”

抄下来的调用示例跑不通、密钥硬编码、换模型就崩?这份手册按使用频率排序,每条给出用途、最小示例和坑点,30秒定位你需要的片段。跟着做,你将得到一个可配置、可切换模型、密钥不入库的小型智能体脚本——正是面试常问的安全集成大模型能力。🔧 从“能跑”到“敢放进作品集”,只差这一层重构。

2601_94912102的博客 393

ARINC429协议分析

如下表所示,ARINC429在发送一帧过程中,首先发送以START开始,以END结束,共发送32bits数据,其中0~7bits为Lable数据,9~8bits为SDI数据,10~28bits为数据,29~30bits为SSM,31bit为校验位End30292827262524校验位SSM2322212019181716DATA15141312111098SDI7654321Start。

5221

MCP接入Claude Code: 配置调用与排错全流程

💡 阅读提示: 这篇是我把 Sorftime MCP 接进 Claude Code 的完整过程, 从写配置文件到跑通第一次调用, 再到撞上 unrecognized_model、PATH、环境变量这几个坑。想给自己的 AI 助手接一

2601_96080792的博客 174

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Python+Agent入门笔记(二):列表推导式、模块和异常,这些写 Agent 前得会

接上一篇《Python+Agent入门笔记(一)》。基础语法跑通之后,这篇聊几块日常写脚本绕不开的东西。还是按 JS/Go 开发者的视角写,尽量记录我实际卡过的地方。

qq_41241612的博客 430

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MCP本地服务集成避坑:从Stdio管道僵死到双向JSON-RPC稳健通信

本文剖析MCP服务端因调试日志污染Stdio管道导致客户端挂起的根因,指出console.log等非结构化输出会破坏JSON-RPC协议解析,引发通信僵死。提出双通道隔离方案:将业务通信严格限定于stdout,所有日志分流至stderr,并强制单行原子化传输与缓冲刷新。实践证明该架构可彻底消除解析崩溃与延迟问题,实现零延迟、高可靠的本地智能体通信,是MCP插件工程化的必选项。

艺杯羹的博客 490

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

从 Prompt 到 Tool Calling:AI Agent 如何稳定连接程序世界

大语言模型原生能力是生成 Token,而软件系统要求类型、权限、状态和确定的执行结果。AI Agent 要连接数据库、搜索引擎、支付系统或企业 API,中间必须建立一层可验证的交互协议。

weixin_47983718的博客 195

Spring AI 全模块 API 字典一览(1.1.0 版)

本文为 Spring AI 1.1.0 全量字典,涵盖模型接入(ChatModel)、Prompt与Message架构、ChatOptions配置及实战用例。重点解析 call()/stream() 方法签名、Prompt 消息封装机制、ChatResponse 响应结构,以及工具调用(ToolCall/ToolResponse)的配对逻辑。附真实项目用例(如 WebSearchReactAgent、PlanExecuteAgent),强调多轮对话记忆机制、流式处理防空策略与参数配置顺序陷阱,适配 Open

Java 后端学习者。写 JUC 并发、Redis 实战,也记录 LLM 应用开发(Spring AI / RAG / Agent)的学习实录——少讲概念,多讲过程和踩坑。 594

c++ 超级大坑未定义行为如何避免(下)

尤其是通过。

拒绝AI文,努力在AI时代写出感动人心的好文章 141

LangChain 能力详解(二):聊天模型核心能力 —— 工具调用、结构化输出、流式传输

ChatOpenAI实时提取 JSON 字段边输出边高亮 Markdown边输出边计费yield chunk.content.upper() # ← 每个块都处理会同时实现parse(非流式)和_transform(流式),所以这个解析器在invoke和stream下都能用。能力一句话核心 API工具调用让模型从「只会说」变成「会决定做什么」@toolbind_tools结构化输出让模型从「返回字符串」变成「返回对象」流式传输让用户从「干等 20 秒」变成「立刻看到」stream。

2601_94861874的博客 398

AI 应用的数据库架构:按数据类型选技术

**AI 应用的数据库架构:按数据类型选技术** ## 一、关系型库:记录主库 对绝大多数 AI 产品,最安全、省心的起点是一个支持事务与约束的关系型库,作为默认记录主库。 适用场景:租户与用户身份、计费与权益(订阅、配额)、智能体运行与任务状态、工具审批与审计日志、对话元数据(非消息体本身)、文档归属与访问策略、评测结果。 灵活用法:可用 JSON 列存供应商元数据,而不破坏关系保证。具

search_agent的博客 347

Vue 前端开发 AI 对话页面:流式消息渲染、文件上传

关键点是不能手动设置 Content-Type 为 multipart/form-data,必须由浏览器自动生成带有 boundary 的请求头,否则后端无法解析。思路:将对象序列化为 JSON 字符串,作为 FormData 的一个普通字段(如 formData.append(‘payload’, JSON.stringify(data))),后端接收该字段后再反序列化。若上传大文件(>10MB),需实现独立的分片上传接口,在提交对话前先获取文件 id 或 url,再随文本发送引用。移除输入框的禁用态;

2402_85729970的博客 351

Linux 下 OpenCode 接入自定义大模型 API 教程:以 DeepSeek-V4.1-Flash-1017 为例

本文介绍在Linux下通过Python脚本配置OpenCode接入自定义大模型API(以DeepSeek-V4.1-Flash-1017为例),实现永久化、非侵入式配置。通过修改~/.config/opencode/opencode.json文件,添加OpenAI兼容服务商BLSC,注册模型并设置APIKey。支持命令行测试、默认模型设定及安全权限控制,操作简单且不影响原有配置。适用于各类支持OpenAI接口的自定义模型服务,提升开发灵活性与安全性。

qq_15060477的博客 120

23-JSON-Patch转成局部更新

前端仅修改部分字段时,应将 JSON Patch 的 replace 操作映射至白名单列,转为局部 UPDATE,避免整行更新导致未展示字段被清空。服务端严格校验路径、类型,拒绝主键、删除标记等敏感字段,审计字段由服务端写入,确保数据安全与一致性。通过参数化查询防止注入,结合版本控制应对并发,实现精准、安全的局部更新。

CAthlete的博客 210

【Python】国家中小学智慧教育平台电子教材批量下载与 PDF 合成实战

成果:两本语文电子课本(一年级上册 118 页 / 23MB、三年级上册 130 页 / 30.3MB),合计 248 页、约 54MB,单本下载加合成 40~60 秒,PDF 页数校验全部通过。经验教训SPA 站点的数据接口优先从 bundle 里挖,比抓页面稳得多;资源链接要按 private/public 分组看待,只取平台公开部分;页数、目录名这类“可推断”的信息,永远用实际响应验证一次;受限环境里“能不能跑浏览器”要在方案定稿前确认。后续计划:这版 PDF 是图片版,没有文字层;

木头大左的博客 121

2,615 个知识点、3,003 条先修边:6,800 Star 的开源知识图谱,能顺着错题从高中回溯到小学

2,615 个知识点、3,003 条 hard/soft 先修边、约 1.16 万道题:cn-math-taxonomy 把人教版教材与课标焊进开源知识图谱,答错高中题能回溯到小学知识点。本文拆解其数据工程与自适应诊断算法。

话梅糖の优快云 Blog 320
上一篇: RSA加密界面大量操纵,报错的问题
下一篇: 使用zinin的RedisSession共享时报java.lang.ClassCastException转换错误的最终解决方案
幕紫
博客等级 码龄16年 56粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值