博客

WebSocket资料整理

背景:

最近服务器与客户端交互要有任务系统,以前总喜欢用轮询,但这种含有太多的多余的HTPP字段,同时要反复的建立连接,对应性能来说肯定不是最优。如果开始研究websocket,整理一下资料,对于协议没有太多的说,就是规则,按照规则实现而已,我们用别人现在的库开发就可以了,原理了解一下就可以了。websocket对于我最大的好处就是不用自己切包,简单的就直接用json包起来就可以了,根本不用考虑大小字节。

 

整理:

https://zh.wikipedia.org/wiki/WebSocket(维基百科)

 

python库:websockets 里面有client和服务器例子

https://websockets.readthedocs.io/en/stable/intro.html

 

后面再补充,只是为了先占位,以后要多写文章,养成一个好的习惯。

服务器处理客户端上换行切割兼容性问题

背景:

用户可以上传文本,里面含有多条数据,每行一条数据。服务器解析数据然后处理数据。

问题;

windows 上传文件正常,mac电脑上传出现切割错误。

原因:

换行在windows 和 linux 和 mac 不统一

windows :\r\n  linux :\n   mac: 系统9之前是 \r  后面是\n

  同事说直接用

PHP  explode(EOL, XXXX) 进行对windows 用户上传切割会出现空格,所以改用explode(“\r\n”, xxxxx),这样子在windows 上传的用户确实没有问题,但mac 的是\n 那么就不会切割。我自己百度一下网上说处理换行要用explode(EOL, XXXX),如果你只是在自己电脑上测试,肯定没有问题,因为EOL对应是你自己电脑的换行,所以就没有问题。但我们放到服务器上面我们就要处理各种用户了。

解决方案:(前提是你的服务器是linux 以\n ,别的同理解决)

1: 如果含有\n 直接就把 \r 替换””.

2:如果不\n那么说明就是mac 9 以前的系统的用户,直接把\r 换成\n。

3:然后按照 explode(“\n”, xxxxx) 切割

 

 

闪电盒子产品分析

我很早之前就想有关互联网的产品,分析他们产品的怎么运作,怎么吸引用户,怎么盈利,技术核心点等等,但总因为各种事情停下来去写,这点确实还改正,如果每天抽取一点时间去学习新的东西,应该进步很大,以前不喜欢写博客,现在稍微好了一点,主要自己小时候语文太差了。

闪电盒子:

一个可以双开的软件,作者是以前droidplugin(android)开源的作者,这个产品核心技术也是droidplugin框架,后面就没有更新维护,不过核心代码分享出来也是非常不错了,当初也花了一段时间去学习。市面上双开软件很多,连无限多开都有,所以这点并不是该成品的优势。他们以红包方式,使用它的软件,企图用户只有他们系统的软件,尽可能不用系统的APP,这样子就可以长期霸占用户使用时间,然后通过流量变现,前期大量渠道推广。目前里面各种棋牌和交友类的广告,通过插入到新闻页面引流和程序启动APP。

用户人群:开始因为我被他们产品点子惊呆了,感觉他们希望在系统上再做一个系统,后面慢慢发现,他们只是通过红包去留住的用户的一个变种(跟做任务领取红包的升级版,你使用APP也是得红包),这样子导致他们用户群里是一些贪小便宜的一些用户,那么群体没有那么大,虽然他们说可以省电,但感觉这个点没有太大作用,因为现在的系统省电已经的足够好,我还提出过,要他们做一个vxp(一个可以在非ROOT使用 XPOSED 插件的功能,xposed 有很多微信和QQ的插件),那么可以对很多APP做很大的定制,这样子就是完成系统里面做子系统的意义,那么用户群里大了很多,你们要知道。微信的一键转发一年能卖多少钱(貌似几个亿)。。

流量:渠道花钱推广, 用户裂变(邀请好友,得奖励)。

变现:广告

有点:用一样的产品,但可以领取红包,留住用户。

缺点:产品竞争力不强,很容易模仿,因为技术大家都有。不能够成为一个平台,赚钱可以,但做大,做强很难,需要更多功能去吸引用户,不光靠红包。而且这套技术在后面android 版本兼容性堪忧,android 已经对这些HOOK技术做反HOOK,在别人平台活着,就看google爸爸心情了。。。

 

tip: 图片就不贴了,懒


最近发现大量这样的产品(多开+xposed技术,这个开源的人weisu,貌似现在也在靠这个创业,毕竟用户量被他做起来),有的是微商在卖,直接结合微信的一键转发在卖,别人也做到月活200W,然后应用商店好多这样的产品好多是免费的(X分身,比翼多开,貌似360也有一个这个版本的多开),他们都靠广告赚钱,也有会员(只能去广告)。但貌似看月活也是很恐怖。。。。

写PC微信辅助感悟1

最近只要有空就写PC辅助功能,今天一天基本完成发送图片,发送文件,添加好友(包括单向和群好友之类的hook点),成就感还是蛮高的,于是记录一下最近心得。

1:辅助本质:找函数和找数据

2:找函数,对于网络程序,一般是投递网络事件这个点,以前是send这个点,但是现在如果同步发送网络请求程序,估计都很low。如果tx写这么low b程序的话估计会被喷死,所以一般都是一个通用的网络库(肯定是异步与ui主线程分开),所以一定有一个通用的投递网络请求地方,微信就有一个,因为微信他们有打日志习惯。

SceneCenter::doScene 微信给这个函数起这个名字,所以后面写功能都会这个函数打断点然后就通过堆栈回溯,找到合适的hook点。

3: 一般windows 程序都是有事件循环,我们自己开发时候,总会有个mainwnd(微信就有一个,我们自己开发也差不多,无论你用mfc还是别的,微信用的duilib),如果找到这个合适点,那么很多功能就好写了,找到起点,这个点就是一个很好的hook点,因为我们开发程序,也喜欢这么写,一个大的事件循环,那所有的功能,统一通过事件来做,微信也差不多这么样子,这个也是最近我才想到这一点,一下子就加快功能开发,因为Hook点查找,要找到合适,就是要找到容易构建参数的地方,最好不要太多对象,不然我们要找到对象指针是从哪里传递的,又要分析好久,如果是全局对象,那么还好说,如果是局部变量,你又去找合适函数,怎么构建。那么这样递归下去,就搞的非常难搞了,所以找到主要事件循环起点,那个点一般参数都比较简单,就是常见的类型,一般不是对象,也有对象的存在。

4:根据第三种,那么事件循环,一般是一个窗口类,那么肯定有对应的ecx 指针对象,那么肯定这个不是全局变量,或者不是那么好找,我们怎么获取呢,事件循环,那么一定很频繁调用,我们只要在事件函数找一个点hook,获取ecx就可以了,然后保存在自己地方,那么就简单了。

5:数据查找,这个我目前没有找到非常方便方法,只能根据数据关系,慢慢查找。

总结:

其实写辅助,更加要求对程序开发能力,你这样子才能想出他们代码大概是怎么写的,所以程序员的基本功要牢。

http://www.xiaoyutang.net/wordpress/wp-admin/post-new.php

 

 

补充:

函数调用压入堆栈,不是每个都会用掉,可以调用时候,修改成0x0进行判断验证(前提通过代码分析是否有访问,然后再去验证)

服务器网络波动的坑

因为自己做防封系统,所以用户入口全部经过我的服务器,一天几十W IP 流量,但会出现网络连接和网络流量和数据库连接数彪起来,然后数据流量降下问题,我想了好久不知道问题在哪里。开始认为SQL 问题,后面发现这种情况出现的时候, 数据库根本就没有很多SQL语句执行,那么SQL语句就没有问题了。那么服务器代码写的有问题,哪里卡住导致,网络堆积起来,后面分析代码也没有问题。。。过几周,我在想是不是网络波动,因为为了免备案用的香港服务器,然后直接连接内地数据库。

因为以前别人都是用外部直接连接,没有内部连接。所以这个功能一直都是外部连接,当初我不做这个服务器开发, 我写完核心代码就没有管了。我后来直接香港服务器Nginx 代理内地服务器,这样子测试,测试一周基本非常稳定,这样就解决了备案的问题,又保证了服务器稳定性问题。

 

总结:

数据库数据传递比较多,一旦网络波动就数据库连接失败,或者数据传递慢,这样子导致服务器并发处理不过来。虽然香港服务器对内地服务器还是有波动,原因改成代理了,数据库数据不用传递到香港了,直接内网传递,速度不知道快了多少,服务器稳定提高了。

 

PC 微信删除群里面好友分析记录

背景:

花2天时间弄出来了,花了2天分析,怎么构建参数。找到函数位置比较顺利,但是构建参数,总是崩溃。这个就比较蛋疼了,做这个辅助软件,最怕就是参数够着,比找数据结构还恶心一点,所以我简单记录一下,等过一段时间再更新一下,上图片,现在用的家里的PC电脑,笔记本忘记带充电线,没法重新过一遍流程,只是把思路记录一下而已。

过程:

一般我们要找到合适的函数,我们需要通过特征值,找到有关的函数,然后回溯。所以最好找到底,否者你回溯没有任何意义,反过来找容易很多,顺着找分支过多,很那区分哪个是有用的。所以我一般希望回溯,通过堆栈参数,进行分析。然后尽可能找到好构建参数地点。

因为我前面做一些微信的辅助功能,所以找出所有cgi-bin字符串,通过英文找到有关删除群好友,然后就很顺利找到一个合适构建点,这个点肯定是参数什么群,删除什么人。所以我只要构建参数,我开始简单构建这2个参数,但发现堆栈破坏,明显构建参数不对,但找了半天没有找出来。后面想一定函数访问别的参数,所以跟函数里面,一个一个看,看他到底访问哪些地址,果然有几个地方,我没有构建对,导致访问野地址,导致崩溃了。。。。

待续。。。。。。。。。。。

 

 

centos 内存占用不符合实际情况

自己使用了好几台2核4G,总是出现内存总是被占用的很满,因为我只是启动一个tomcat,然后几个机器人人,所以每次使用内存的时候都小心翼翼的。因为java一旦内存不够就启动不了tomcat,或者直接进程挂掉

 

输入top,按shift+m,按内存占用百分比排序,发现应用也没占多少内存,那是什么占用的呢?
其实是CentOS为了提高效率,把部分使用过的文件缓存到了内存里。这样的话如果不需要这样的文件性能,可以直接释放来缓解内存压力。
sync命令用于强制被改变的内容立刻写入磁盘,更新超块信息。
在Linux/Unix系统中,在文件或数据处理过程中一般先放到内存缓冲区中,等到适当的时候再写入磁盘,以提高系统的运行效率。sync命令则可用来强制将内存缓冲区中的数据立即写入磁盘中。用户通常不需执行sync命令,系统会自动执行update或bdflush操作,将缓冲区的数据写 入磁盘。只有在update或bdflush无法执行或用户需要非正常关机时,才需手动执行sync命令。
sync
echo 3 > /proc/sys/vm/drop_caches
我感觉sync没有什么用,就是同步缓存到文件,如果内存缓存很大,运行第二个命令,说明来不急刷新到磁盘就被清理掉了

微信公众号分享网页注意实现

最近自己要做微信分享的防封,就研究一下市面做的分享防封原理,基本分流防封是一个做法。

过程讲述:

通过一个微信公众号分享一个入口,记住这个分享内容网页的内容最好一点违规的都没有,标题和图片可以带有诱导性的,然后在自己这个页面写好跳转代码,跳转到你要展示的代码里面,这里的跳转不要立即跳转可以加定时器,然后多少秒跳转,这个这个地方就可以加分流防封逻辑。之后后面对接,就要看用户了,比喻小说登录授权的应该是应该要用单独跳转的安全域名,只要用安全域名展示内容,否者可能出现封的情况。

 

因为我第一次做微信公众号的网页的分享,所以百度加google,但看的懵懵懂懂的,所以自己决定写一篇入门篇。

基本概念:

微信公众号:

js安全域名:一个备案的域名在公众号里面要设置,设置要求能够通过这个域名访问一个txt文件,我们可以用nginx 的root关键字访问这个txt就可以了

location /wxdomain {
root f:
}

那么你访问 http://域名/wxdomain/xxxx.txt  你这个txt 放在f: /wxdomain。

基本能马上验证,这个域名作用使你能够,你调用微信公众号网页API,否者你无权调用,切记切记。

IP白名单:设置才有资格获取一个微信公众号的token

acces_token:这个token,通过一个API 获取的到,具体看开发文档,具体这个这个API只能指定的IP白名单才能调用,不是任何机器能调用的,过期时间2个小时。建议用redis保存

     ticket: 用token作为参数,通过API获取的一个值,用于生成校验值的。见开发文档,过期时间2个小时。建议用redis保存

网页页面开发:

       注意设置的值格式,别填写了,然后跳转的域名只能指定安全域名,但jssdk demo竟然可以分享豆瓣的。貌似以前裂变人,用了一个另外一个可以分享任意地址,具体,第一个开发建议开启debug,如果微信打开就是各种弹框,起码你知道问题在哪里。

服务器:

用它的demo给的类就差不多了,主要检验的url,应该是你的请求的域名的全部路径,文档说#之前,我的不可能出现#,就不考虑这种情况。

 

服务器的demo 和 jssdkdemo 都在jssdk开发文档页面,你进入公众号的里面开发者里面就能找到

如果出现android可以分享,苹果不能分享是你的分享的地址没有带HTTP

 

 

项目感悟-2018年8月17日 19:59:16

自己做微信检测和微信域名防封项目一段时间了,产品目前越来越成熟,用户慢慢变多,认识很多玩互联网的人。渐渐明白技术很重要,也不重要,有些人一点技术不懂,但有自己套路,一样一个月赚10多W或者更多,但他们的局限也明显,不懂技术或者不认识懂技术的人,导致他们很多思路没法实现。

我自己认为做技术应该多动脑子,用自己的技术顺便赚点钱,然后赚钱同时又会对自己技术有要求,然后不断提升技术,然后又不断赚钱,这样良性循环下去。

 

广告时间:

微信域名检测和防封系统:

www.weixin136.com

www.weimice.com