首頁 後端開發 php教程 如何擷取微信公眾號歷史消息頁的詳解

如何擷取微信公眾號歷史消息頁的詳解

Jul 07, 2018 pm 05:48 PM
微信公眾號

給大家講解了微信公眾號文章所收集的入口歷史消息頁資訊取得方法,有需要的朋友參考一下本內容。

採集微信文章和擷取網站內容一樣,都需要從一個清單頁開始。而微信文章的列表頁就是公眾號裡的查看歷史消息頁。現在網路上的其它微信採集器有的是利用搜狗搜索,採集方式雖然簡單多了,但是內容不全。所以我們還是要從最標準、最全面的公眾號歷史消息頁來收集。

因為微信的限制,我們能複製到的連結是不完整的,在瀏覽器中無法開啟看到內容。所以我們需要透過上一篇文章介紹的方法,使用anyproxy取得一個完整的微信公眾號歷史訊息頁面的連結位址。

http://mp.weixin.qq.com/mp/getmasssendmsg?__biz=MjM5NDAwMTA2MA==&uin=NzM4MTk1ODgx&key=bf9387c4d02682e186a298a18276d8e058276d8 0edd80c9e1bfda66c2b62751511f7cc091a33a029709e94f0d1604e11220fc099a27b2e2d29db75cc0849d4&devicetype=android.1 ticket=Iox5ZdpRhrSxGYEeopVJwTBP7kZj51GYyEL24AT5Zyx+BoEMdPDBtOun1F/9ENSz&wx_header =1

前一篇文章提到過,biz參數是公眾號的ID,uin是使用者的ID,目前來看uin是在所有公眾號之間唯一的。其它兩個重要參數key和pass_ticket是微信客戶端補充上的參數。

所以在這個地址失效之前我們是可以透過瀏覽器查看原文的方法獲取到歷史消息的文章列表的,如果希望自動化分析內容,也可以製作一個程序,將這個帶有尚未失效的key和pass_ticket的連結位址提交進去,再透過例如php程式來取得到文章列表。

最近有朋友跟我說他的採集目標就是單一的一個公眾號,我覺得這樣就沒必要用上一篇文章寫的批量採集的方法了。所以我們接下來看看歷史消息頁裡面是怎麼取得到文章列表的,透過分析文章列表,就可以得到這個公眾號所有的內容連結地址,然後再採集內容就可以了。

在anyproxy的web介面中如果憑證配置正確,是可以顯示出https的內容的。 web介面的位址是http://localhost:8002 其中localhost可以替換成自己的IP位址或網域名稱。從清單中找到getmasssendmsg開頭的記錄,點擊之後右側就會顯示出這條記錄的詳情:

紅框部分就是完整的連結地址,將微信公眾平台這個網域拼接在前面之後就可以在瀏覽器中開啟了。

然後將頁面往下拉,到html內容的結尾部分,我們可以看到一個json的變數就是歷史訊息的文章列表:

我們將msgList的變數值拷貝出來,用json格式化工具分析一下,我們就可以看到這個json是以下這個結構:

{
  "list": [
    {
      "app_msg_ext_info": {
        "author": "",
        "content": "",
        "content_url": "http://mp.weixin.qq.com/s?__biz=MzA5MzEzNDg3MQ==&mid=2652767427&idx=1&sn=37da0d7208283bf90e9a4a536e0af0ea&chksm=8b882dbbbcffa4ad2f0b8a141cc988d16bace564274018e68e5c53ee6f354f8ad56c9b98bade&scene=4#wechat_redirect",
        "copyright_stat": 100,
        "cover": "http://mmbiz.qpic.cn/mmbiz/MofBAcBsJ6X0xGrQ2XK5yQjzwb2eswxkRNBTgLtcqGziaFqwibzvtZAHCDkMeJU1fGZHpjoeibanPJ8rziaq68Akkg/0?wx_fmt=jpeg",
        "digest": "擦亮双眼,远离谣言。",
        "fileid": 505283695,
        "is_multi": 1,
        "multi_app_msg_item_list": [
          {
            "author": "",
            "content": "",
            "content_url": "http://mp.weixin.qq.com/s?__biz=MzA5MzEzNDg3MQ==&mid=2652767427&idx=2&sn=449ef1a874a37fed2429e14f724b56ef&chksm=8b882dbbbcffa4ade48a7932cda4263687e34fca8ea3a5a6233d2589d448b9f6130d3890ce93&scene=4#wechat_redirect",
            "copyright_stat": 100,
            "cover": "http://mmbiz.qpic.cn/mmbiz_png/MofBAcBsJ6XyaIn0qEDSSicBUBZbMYHYrhibia89ZnksCsUiaia2TLI1fyqjclibGa1hw3icP6oXeSpaWMjiabaghHl7yw/0?wx_fmt=png",
            "digest": "12月28日,广州亚运城综合体育馆,内附购票入口~",
            "fileid": 0,
            "source_url": "http://wechat.show.wepiao.com/detail/ff764b0731b7465db03b56b998e1f2b8?detailReferrer=1&from=groupmessage&isappinstalled=0",
            "title": "2017微信公开课Pro版即将召开"
          },
         ...//循环被省略
        ],
        "source_url": "",
        "subtype": 9,
        "title": "谣言热榜 | 十一月朋友圈十大谣言"
      },
      "comm_msg_info": {
        "content": "",
        "datetime": 1480933315,
        "fakeid": "3093134871",
        "id": 1000000010,
        "status": 2,
        "type": 49 //类型为49的时候是图文消息
      }
    },
   ...//循环被省略
  ]
}
登入後複製

##簡單的分析一下這個json(這裡只介紹一些重要的信息,其它的被省略):

"list": [ //最外层的键名;只出现一次,所有内容都被它包含。
  {//这个大阔号之内是一条多图文或单图文消息,通俗的说就是一天的群发都在这里
    "app_msg_ext_info":{//图文消息的扩展信息
      "content_url": "图文消息的链接地址",
      "cover": "封面图片",
      "digest": "摘要",
      "is_multi": "是否多图文,值为1和0",
      "multi_app_msg_item_list": [//这里面包含的是从第二条开始的图文消息,如果is_multi=0,这里将为空
        {
          "content_url": "图文消息的链接地址",
          "cover": "封面图片",
          "digest": ""摘要"",
          "source_url": "阅读原文的地址",
          "title": "子内容标题"
        },
        ...//循环被省略
      ],
      "source_url": "阅读原文的地址",
      "title": "头条标题"
    },
    "comm_msg_info":{//图文消息的基本信息
      "datetime": '发布时间,值为unix时间戳',
      "type": 49 //类型为49的时候是图文消息
    }
  },
  ...//循环被省略
]
登入後複製

在這裡還要提到一點就是如果希望取得到時間更久遠的歷史訊息內容,就需要在手機或模擬器中將頁面向下拉,當拉到最底下的時候,微信將自動讀取下一頁的內容。下一頁的連結位址和歷史訊息頁的連結位址同樣是getmasssendmsg開頭的位址。但內容就是只有json了,沒有html了。直接解析json就可以了。

這時可以透過上一篇文章介紹的方法,使用anyproxy將msgList變數值正則配對出來之後,非同步提交到伺服器,再從伺服器上使用php的json_decode解析json成為陣列。然後遍歷循環數組。我們就可以得到每一篇文章的標題和連結地址。

如果只需要收集單一公眾號的內容,完全可以在每天群發之後,透過anyproxy取得完整的帶有key和pass_ticket的連結位址。然後自己製作一個程序,手動將地址提交給自己的程序。使用例如php這樣的語言來正規符合到msgList,然後解析json。這樣就不用修改anyproxy的rule,也不需要製作一個採集佇列和跳轉頁面了。

相關推薦:

PHP實作基數排序的方法講解

#PHP基於反射機制實作自動依賴注入的方法講解

PHP正在進行時-變數詳解及字串動態插入變數相關解說

##

以上是如何擷取微信公眾號歷史消息頁的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Scrapy實現微信公眾號文章爬取與分析 Scrapy實現微信公眾號文章爬取與分析 Jun 22, 2023 am 09:41 AM

Scrapy實現微信公眾號文章爬取和分析微信是近年來備受歡迎的社群媒體應用,在其中運作的公眾號也扮演著非常重要的角色。眾所周知,微信公眾號是一個資訊和知識的海洋,因為其中每個公眾號都可以發布文章、圖文訊息等資訊。這些資訊可以被廣泛地應用在許多領域中,例如媒體報道、學術研究等。那麼,本篇文章將介紹如何使用Scrapy框架來實現微信公眾號文章的爬取與分析。 Scr

微信公眾號認證和不認證有哪些差別 微信公眾號認證和不認證有哪些差別 Sep 19, 2023 pm 02:15 PM

微信公眾號認證和不認證的差異在認證識別、功能權限、推播頻率、介面權限和使用者信任度等方面。詳細介紹:1、認證標識,認證公眾號會獲得官方頒發的認證標識,即藍色V標誌,這個標誌可以增加公眾號的可信度和權威性,讓用戶更容易辨別真實的官方公眾號; 2、功能權限,認證公眾號相比未認證的公眾號擁有更多的功能和權限,例如認證公眾號可以申請開通微信支付功能,實現在線支付和商業化運營等等。

Python中的爬蟲實戰:微信公眾號爬蟲 Python中的爬蟲實戰:微信公眾號爬蟲 Jun 10, 2023 am 09:01 AM

Python是一種優雅的程式語言,具有強大的資料處理和網路爬蟲功能。在這個數位時代,網路上充滿了大量的數據,爬蟲已成為獲取數據的重要手段,因此,Python爬蟲在數據分析和挖掘方面有著廣泛的應用。在本文中,我們將介紹如何使用Python爬蟲來取得微信公眾號文章資訊。微信公眾號是一種流行的社交媒體平台,用於線上發布文章,是許多公司和自媒體推廣和行銷的重要工

用PHP建構一個微信公眾號API介面 用PHP建構一個微信公眾號API介面 May 13, 2023 pm 12:01 PM

在當今網路時代,微信公眾號成為了越來越多企業的重要行銷管道。想要自己的微信公眾號實現更多的功能,常常需要寫對應的介面。本文將以PHP語言為例,介紹如何建構一個微信公眾號API介面。一、前置準備在編寫微信公眾號API介面之前,需要開發者擁有一個微信公眾號的帳號,並且在微信公眾平台中申請開發者介面權限。申請成功後,可以取得相關的開發者AppID和AppSe

如何使用Laravel開發一個基於微信公眾號的線上點餐系統 如何使用Laravel開發一個基於微信公眾號的線上點餐系統 Nov 02, 2023 am 09:42 AM

如何使用Laravel開發一個基於微信公眾號的線上點餐系統隨著微信公眾號的廣泛應用,越來越多的企業開始將其作為線上行銷的重要管道。在餐飲業中,開發一個基於微信公眾號的線上點餐系統能夠提高企業的效率和銷售額。本文將介紹如何使用Laravel框架來開發一個這樣的系統,並提供具體的程式碼範例。專案準備首先,需要確保已經在本地環境中安裝了Laravel框架。可以通

公眾號每天只能發一篇文章嗎 公眾號每天只能發一篇文章嗎 Jun 16, 2023 pm 02:04 PM

公眾號每天不是只能發一篇文章,每次最多可以發表八篇文章,多篇文章的發布方法:1、點擊左側的“素材管理”,再點擊“新建圖文素材”開始編輯第一篇文章;2、編輯完第一篇文章之後,點選左側第一篇文章下面的+號,點選「圖文訊息」即可編輯第二篇文章;3、做完多圖文後,點選「保管並群發」即可完成多篇文章的發布。

使用Go語言框架建構微信公眾號應用 使用Go語言框架建構微信公眾號應用 Jun 04, 2023 am 10:40 AM

隨著網路的普及和行動裝置的廣泛使用,微信公眾號已經成為了企業行銷不可或缺的一部分。透過微信公眾號,企業可以實現輕鬆地與用戶互動,推廣產品和服務,提高品牌知名度。為了更好地開發微信公眾號應用,越來越多的開發者和企業選擇使用Go語言來建立微信公眾號應用程式。 Go語言是一種由Google開發的程式語言,它的語法簡潔,適合建立高效能、高並發的即時應用程式。在簡單易用和

PHP與微信公眾號開髮指南 PHP與微信公眾號開髮指南 Jun 11, 2023 pm 03:31 PM

隨著微信公眾號在社群網路中的逐漸普及,越來越多的開發者開始涉足微信公眾號開發領域。在這其中,PHP作為一種常見的後端程式語言,也開始被廣泛應用於微信公眾號的開發。本文將介紹PHP在微信公眾號發展上的基礎知識與常用技巧。一、PHP與微信公眾號開發基礎微信公眾號開發微信公眾號是指一種基於微信平台的互聯網應用程序,可以為用戶提供不同類型的服務和內容,如信息推送

See all articles