PHP微信牆製做,開源

PHP微信牆製做php

微信牆 PHP java


注意:因爲微信官網不定時會更新,其中模擬登錄以及爬取數據的方式可能會失效,最近這12個月裏,就有兩次更新致使此功能須要重寫。mysql

服務端源碼->github地址傳送門 laravel


思路git

其實實現思路就是經過模擬登錄的方式登陸到微信平臺,而後經過正則表達式獲取指定的內容放到數據庫裏面,同時這個操做要在一個定時任務裏面定時運行一次,固然避免麻煩,cookie應該放到緩存中以避免單位時間內屢次登錄微信須要輸入二維碼驗證的問題github

關於項目中使用的工具問題正則表達式

這種工程類博文中不會太涉及工具的使用以及庫的介紹,我會在最後給出各類庫的github地址或者官網地址方便你們預覽,若是有必要,我會在另起一些工具類&庫類的使用教程博客,這裏就假定你們能熟練掌握編程語言,相關的IDE與經常使用三方庫sql

步驟mongodb

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,注意解析時候編碼設置

   
   
   
   
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,那麼砸個贊吧~~~明天見

相關文章
相關標籤/搜索