ホームページ >バックエンド開発 >PHPチュートリアル >WeChatパブリックアカウントの履歴メッセージを取得する方法

WeChatパブリックアカウントの履歴メッセージを取得する方法

墨辰丷
墨辰丷オリジナル
2018-05-17 09:43:054147ブラウズ

WeChatパブリックアカウントの記事から収集したエントリー履歴メッセージページの情報を取得する方法を説明します。必要な友達はこのコンテンツを参照してください。

WeChat の記事の収集は、Web サイトのコンテンツの収集と同じです。リスト ページから始める必要があります。 WeChat記事一覧ページは、公式アカウント内の閲覧履歴メッセージページです。インターネット上の他の多くの WeChat コレクターは現在 Sogou を使用して検索していますが、収集方法ははるかに簡単ですが、内容は不完全です。したがって、最も標準的かつ包括的なパブリック アカウント履歴メッセージ ページから情報を収集する必要があります。

WeChat の制限により、コピーできるリンクは不完全であるため、ブラウザーで開いてコンテンツを表示することはできません。したがって、anyproxy を使用して、前の記事で紹介した方法で完全な WeChat パブリック アカウント履歴メッセージ ページのリンク アドレスを取得する必要があります。

http://mp.weixin.qq.com/mp/getmasssendmsg?__biz=MjM5NDAwMTA2MA==&uin=NzM4MTk1ODgx&key=bf9387c4d02682e186a298a18276d8e0555e3ab51d81ca46de339e6082eb7 67343bef610edd80c9e1bfda66c2b62751511f7cc091a33a029709e94f0d1604e11220fc099 a27b2e2d29db75cc0849d4bf&devicetype=android-17&version=26031c34&lang=zh_CN& nettype=WIFI& ascene=3&pass_ticket=Iox5ZdpRhrSxGYEeopVJwTBP7kZj51GYyEL24AT5Zyx%2BBoEMdPDBtOun1F%2F9ENSz&wx_header= 1

前回の記事で述べたように、bizパラメータは公式アカウントのID、uinはユーザーのIDです。現時点では、uinはすべての公式アカウントの中で一意です。他の 2 つの重要なパラメーター key と pass_ticket は、WeChat クライアントの補足パラメーターです。

そのため、このアドレスの有効期限が切れる前に、ブラウザで元のテキストを表示することで、過去のメッセージの記事リストを取得できます。内容を自動的に分析したい場合は、このアドレスを key と pass_ticket で変換するプログラムを作成することもできます。リンクアドレスを送信し、php プログラムなどを通じて記事リストを取得します。

最近、友人が収集対象が単一の公開アカウントであると教えてくれました。これにより、前の記事で書いた一括収集方法を使用する必要がなくなると思います。それでは、履歴メッセージページの記事リストを取得する方法を見てみましょう。記事リストを分析することで、この公式アカウントのすべてのコンテンツリンクアドレスを取得し、コンテンツを収集できます。

anyproxy Web インターフェイスで証明書が正しく構成されている場合、https コンテンツを表示できます。 Web インターフェイスのアドレスは http://localhost:8002 です。localhost は独自の IP アドレスまたはドメイン名に置き換えることができます。リストから getmasssendmsg で始まるレコードを見つけます。クリックすると、このレコードの詳細が右側に表示されます:

赤いボックスは、WeChat パブリック プラットフォームのドメイン名を結合した後の完全なリンク アドレスです。前に、ブラウザで開くことができます。

次に、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的时候是图文消息
    }
  },
  ...//循环被省略
]

もう 1 つのポイントここで言及するのは、より長い期間の履歴メッセージ コンテンツを取得したい場合は、携帯電話またはシミュレーターでページを一番下までプルする必要があるということです。そのページを一番下までプルすると、WeChat は自動的に次のページを読み取ります。次ページのリンクアドレス、履歴メッセージページのリンクアドレスもgetmasssendmsgで始まるアドレスとなる。ただし、コンテンツは HTML ではなく json のみです。 json を直接解析するだけです。

このとき、前回の記事で紹介した方法で、anyproxyを使ってmsgList変数の値を定期的に照合し、非同期でサーバーに送信し、サーバーからphpのjson_decodeを使ってjsonを解析して配列することができます。次に、配列をループします。各記事のタイトルとリンクアドレスを取得できます。

単一の公式アカウントのコンテンツのみを収集する必要がある場合は、毎日一括送信した後、anyproxy 経由で key と pass_ticket を含む完全なリンク アドレスを取得できます。次に、自分でプログラムを作成し、プログラムにアドレスを手動で送信します。 php などの言語を使用して定期的に msgList と照合し、json を解析します。この方法では、anyproxy のルールを変更する必要はなく、コレクション キューやジャンプ ページを作成する必要もありません。

関連する推奨事項:

php WeChat 公開アカウントがランダムに現金赤い封筒を配布する関数

WeChat 公開アカウントの access_token を取得する手順の PHP+cURL 分析

モバイル WeChat 公開アカウントを実装する詳細な手順を確認する

以上がWeChatパブリックアカウントの履歴メッセージを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。