微信墙 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. SpringMvc基础知识(一)

    目录: springmvc框架原理(掌握) 前端控制器.处理器映射器.处理器适配器.视图解析器 springmvc入门程序 目的:对前端控制器.处理器映射器.处理器适配器.视图解析器学习 非注解的处理 ...

  2. pycharm配置教程

    http://blog.csdn.net/u013088062/article/details/50100121

  3. 【计算机网络】wireshark抓包分析2

    在分析1中,大概的看到了一个包中的信息.这里,看看这些包究竟在做什么 这是我的电脑跟某个网站交互的前4个包. 其中前三个包可以明显看出是TCP的三次握手. 那么,问题来了: 为什么第三个包的长度比前两 ...

  4. Django基本操作

    Django官网下载页面 安装(安装最新LTS版): pip3 install django==1.11.9 创建一个django项目: 下面的命令创建了一个名为"s8"的Djan ...

  5. rtsp 学习

    1.1.   RTSP协议简介 一种应用层协议,可基于tcp或udp协议. Real Time Streaming Protocol或者RTSP(实时流媒体协议),是由Real network 和 N ...

  6. hdu 1669(二分图多重匹配)

    Jamie's Contact Groups Time Limit: 15000/7000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/ ...

  7. 基于percona-monitoring-plugins实现Zabbix的MySQL多端口自动发现监控

    https://blog.csdn.net/u013820054/article/details/50931793

  8. MySQL InnoDB MVCC深度分析

    关于MySQL的InnoDB的MVCC原理,很多朋友都能说个大概: 每行记录都含有两个隐藏列,分别是记录的创建时间与删除时间 每次开启事务都会产生一个全局自增ID 在RR隔离级别下 INSERT -& ...

  9. 使用moneykey对APP进行健壮性测试

    注意:moneykey对app按钮伪随机点击,只能测试app稳定性和健壮性,无法进行常规测试 1.安装 A.jdk(不详细介绍) B.安装配置android配置环境:Android Studio 此环 ...

  10. POJ 2367 Genealogical tree【拓扑排序/记录路径】

    Genealogical tree Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7101 Accepted: 4585 Spe ...