微信墙 PHP


注意:由于微信官网不定时会更新,其中模拟登陆以及爬取数据的方式可能会失效,最近这12个月里,就有两次更新导致此功能需要重写。

服务端源码->github地址传送门


思路

其实实现思路就是通过模拟登陆的方式登录到微信平台,然后通过正则表达式获取指定的内容放到数据库里面,同时这个操作要在一个定时任务里面定时运行一次,当然避免麻烦,cookie应该放到缓存中以免单位时间内多次登陆微信需要输入二维码验证的问题

关于项目中使用的工具问题

这种工程类博文中不会太涉及工具的使用以及库的介绍,我会在最后给出各种库的github地址或者官网地址方便大家预览,如果有必要,我会在另起一些工具类&库类的使用教程博客,这里就假定大家能熟练掌握编程语言,相关的IDE与常用三方库

步骤

1,创建工程

这里我们使用PHPStorm,创建一个composer project项目,并选择安装Laravel,PHP请开启Curl功能。

【注:composer是一个依赖管理工具,类似.NET里面的 nuget,java的maven一样,上面三个是我做项目的时候最喜欢用的,其中composer还有一些拓展比如 Composer Checker,Satis等,不过我看国内好像用的不多。 
Curl是用于抓取网页 模拟HTTP请求使用,还可以使用第三方的库比如Buzz和Requests,其中Requests相当轻量.】

2,文件操作

创建一个Util文件夹存放工具类,根目录创建一个index.php 用作入口,模拟微信平台的请求除了cookie以外,还需要一个一个token值,为了方便下次使用,我们将他放到一个token.txt的文件里面,cookie存放在cookie.txt的文件里面,这里我们创建了FileUtil类来封装读写文件操作

3,模拟HTTP操作

为了方便我们模拟登陆,先把Http请求抽象出来,作为一个类单独存放在HttpUtil里面,网上有很多Curl的例子,这里我们依据此项目着重分析两点 
1,http 头文件里面的Host,Referer,Origin都需要填写,不填写会返回-32这类的默认错误码,具体的值可以通过google开发者工具查看如下图2,微信平台页面经过zip压缩,所以我们要在文件中加入下面的代码,防止乱码,同时注意微信平台页面编码为UTF-8,注意解析时候编码设置

 
  1. curl_setopt($curl, CURLOPT_ENCODING ,'gzip');

详细代码请直接在github上面查看即可,没有复杂的逻辑

4,数据库操作

通过HTTP获取到数据后,我们需要和数据库中的数据进行比对,如果有重复的就不需要再加进去了,这里我们使用WeiXinUtil类进行封装操作

关于数据库,这里我使用了mongodb,因为我在实验室有完善的mongo环境,连接即可使用,为了方便大家替换成mysql等 我把数据操作封装在了一个MongoUtil类里面,一个demo就没有用接口什么的进行抽象,替换掉就可以了,至于mongo的安装,配置,使用呢,可以去PHP官网里面的mongoDB的手册中查看--->传送门,你会喜欢上nosql的

下面是从微信爬来的数据

5,定时任务

作为演示,我在index.php里面使用的是一个死循环+sleep(5);函数这种简单粗暴的方式,让线程停止5秒在继续爬取数据,不过最后部署在*nix上的话,还是用cron命令执行php脚本吧,windows 推荐用计划任务执行脚本,至于各种云平台比如azure,阿里云都是有计划任务的,扔进去更方便

下面是azure

下面是阿里ACE

下一篇

下一篇将我会用laravel撸一个管理平台出来,当然为了保证并发性我曾经还用的是py的tornado,也用过SignalR2做过比较,写着玩吗,不过这个教程就用PHP到底算了,其实这也是我为什么用mongodb的原因之一,py,C#下操作它也相当easy的,so各位老爷们对这个感兴趣的话还可以先看看composer,那么砸个赞吧~~~明天见

PHP微信墙制作的更多相关文章

  1. PHP微信墙制作,开源

    PHP微信墙制作 微信墙 PHP 注意:由于微信官网不定时会更新,其中模拟登陆以及爬取数据的方式可能会失效,最近这12个月里,就有两次更新导致此功能需要重写. 服务端源码->github地址传送 ...

  2. HTML5服务器端推送事件 解决PHP微信墙推送问题

    问题描述 以前的文章中<PHP微信墙制作,开源>已经用PHP搭建了一个微信墙获取信息的服务器,然后我就在想推送技术应该怎么解决,上一篇已经用了.NET 的signalr做了一个微信墙,PH ...

  3. signalR制作微信墙 开源

    微信墙 上一篇文章中已经用PHP搭建了一个微信墙获取信息的服务器,我这里使用微软的signalr搭建一个客户端,signalr是一个为开发者开发实时应用的 一个库文件,支持windows server ...

  4. 使用R语言将微信记录制作成词云(简洁)--情人节奥义

    一.导出并读入微信聊天记录     参照百度的方法,使用同步助手.安装同步助手--连接手机(安卓苹果均可)--点击"其他功能"--点击微信图标即可进入聊天记录导出界面(非常简单). ...

  5. 教你用Python制作微信好友背景墙

    目录: 0 引言 1 环境 2 代码实现 3 后记 0 引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这 ...

  6. PS基础教程[1]如何制作微信泡泡

    PS是很多朋友都很喜欢额一款图像处理软件,我们可以使用PS制作很多的效果,本系列经验教程的起源就来源于知道中这位朋友问的微信泡泡如何使用,下面就来简单的分享一下. 微信泡泡制作方法 有很多的方法可以制 ...

  7. 【Demo】微信上墙

    先看看微信墙效果图 使用简单说明 关于微信公众号 回复 "上墙",点击授权文章进行授权 回复"#上墙内容" 即可发表上墙消息了 查看微信墙列表,点击这里 原文地 ...

  8. 《小猪CMS(PigCms)多用户微信营销服务平台系统V6.1完美破解至尊版带微用户管理CRM+微信支付》

    <小猪CMS(PigCms)多用户微信营销服务平台系统V6.1完美破解至尊版带微用户管理CRM+微信支付> 之前发布了不少微赢的多用户微信网站源码,今天为我的小伙伴们准备的是功能非常强悍, ...

  9. 微信公众平台创建自定义菜单的PHP代码

    授人以鱼不如授人以渔.在方倍工作室上问了一下,创建自定义菜单的代码多少钱,一张口就一百,好吧,那我就给你们一人省一百块钱吧,你们说该如何谢谢我?事先说明一下啊,你的PHP版本要高于4.0.2才支持cU ...

随机推荐

  1. zabbix ZBX_NOTSUPPORTED: Timeout while executing a shell script.

    有一个监控一直都是正常的,今天突然收到报警邮件,上服务器查看服务又是正常的,但是报警邮件还是没恢复 监控端进行脚本测试,发现是正常的 到监控端使用zabbix_get -s ip -p 端口  -k ...

  2. 使用chardet模块判断网页编码

    import chardet import urllib.request url='http://stock.sohu.com/news/' html = urllib.request.urlopen ...

  3. python3的leetcode题,两个数求和等于目标值,返回这两个数的索引组成的列表(三种方法)

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为gai目标值的 两个 整数. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 ...

  4. java中Math.abs(-2147483648)的返回值应该是什么?

    我觉得这是一个非常有意思的问题,Math.abs(-2147483648)的返回值应该是什么? java计算结果 为什么没有得到正数结果呢? 首先我们先看下java区分整数正负的原理.在二进制的情况下 ...

  5. 发布message给其他包使用

    https://answers.ros.org/question/65716/which-is-the-correct-way-to-install-header-files-in-catkin-pa ...

  6. Linux下查看nginx、mysql、php的安装路径和编译参数

    一:查看安装路径: 1.nginx安装路径: ps  -ef | grep nginx 摁回车,将出现如下图片: master process 后面的就是 nginx的目录. 2.mysql安装路径: ...

  7. thinkphp5.0配置nginx重写规则

    我的centeros7.3系统,单主机实例: vi /usr/local/nginx/conf/nginx.conf 在如图红框位置加入以下代码(图片是截取的,截取部分上方还有其他的默认配置代码,代码 ...

  8. Oralce聚合多行

    拼接的字符串长度满足varchar2(4000)时, 可以用 LISTAGG(NAME, '_') WITHIN GROUP(ORDER BY LEVEL_T DESC) 当拼接大段文本时,采用 10 ...

  9. 洛谷P3926 SAC E#1 - 一道不可做题 Jelly【模拟/细节】

    P3926 SAC E#1 - 一道不可做题 Jelly [链接]:https://www.luogu.org/problem/show?pid=3926 题目背景 SOL君(炉石主播)和SOL菌(完 ...

  10. ZCMU训练赛-H(模拟)

    H - Hard to Play   MightyHorse is playing a music game called osu!. After playing for several months ...