自动获取微信公众号微信文章信息

  • 目录
  • 前言

    一、获取文章列表

    二、自动化获取微信公众号cookie

    1.影刀自动登录微信

    2.获取公众号cookie

    1、安装mitmproxy

    2、配合切换代理脚本,实现请求是否通过mitmproxy

    3、使用mitmproxy脚本,截获公众号文章列表页请求的cookie,入库等待调用

    4、脚本使用方法

    5、通过影刀自动在微信端点击链接结合mitmproxy获取cookie

    总结


前言

   使用工具:影刀、mitmproxy、飞书api
   需求说明:每天自动监测所关注的公众号在前一天所发文章的信息(标题、发布时间、是否原创、阅读量、点赞数、在看等),推送至相应飞书群中。

接到需求是首先想到的是搜狗微信,但是发现搜狗微信现在已经没办法看到公众号文章的列表页了,同样的文章内容里,也无法看到点赞量、浏览量等数据,已经不能像几年前一样,通过搜狗微信获取数据了,此路不通。排雷!

文章中的浏览量等数据,目前只能在微信中打开链接才能看到,在浏览器中打开是看不到这些数据的。于是我尝试抓包。

最开始使用的是fiddler进行抓包

在微信的接口中发现了这些数据,于是思路就来了。

HTTPS协议,那么肯定是requests就能解决了哇~

在这之前还要找到获取公众号文章列表的页面,经过一系列摸索,发现可以通过拼接url的形式找到这个页面:

通过抓包也能找到文章列表,可以获取到文章url以及发布时间、标题等数据,如果不需要点赞数、阅读量等数据的话,到这里就可以结束了。

一、获取文章列表

代码如下(示例):

import json
import re
import time
import requests

请求文章列表页:

通过拼接url进行访问公众号文章列表页,需要获取公众号biz值,可通过抓包,打开公众号的一篇文章,在该url中截取biz值,每个公众号的biz值不同。请求示例如下:(ua为PC端微信的ua)

url = 'https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz={}&scene=124#wechat_redirect'.format(biz)
headers = {'Host': 'mp.weixin.qq.com','Connection': 'keep-alive','Cache-Control': 'max-age=0','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x6307062c)','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','Cookie': cookie,'Sec-Fetch-Site': 'none','Sec-Fetch-Mode': 'navigate','Sec-Fetch-User': '?1','Sec-Fetch-Dest': 'document','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7'}

发送请求,打印出返回结果:

通过正则取出我们需要的数据:

    str1 = re.findall("var msgList = '\{(.*?)]}';", response.text)[0]str2 = '{' + str1 + ']}'

发现在数据中掺杂了很多"、 这种html转义符,使用replace进行替换之后转为json:

str2 = str2.replace('"', '"')
str2 = str2.replace(' ', ' ')
str2 = str2.replace('&', '&')
str2 = str2.replace('&', '&')
str2 = str2.replace(''', "'")
json1 = json.loads(str2)

接着就可以在json中进行数据提取了。

获取到需要的title、datetime、content_url(文章url)

二、自动化获取微信公众号cookie

1.影刀自动登录微信

思路:自动打开微信.exe,通过图像识别判断需要的操作

新版微信可以免扫码登录,前提是扫码登录时勾选->自动登录该设备,且之后没有登录其他账号。

如果需要扫码登录,则截图,通过飞书机器人,将截图发送至联系人,远程扫码登录。

如果需要手机微信确认登录,则同理,通过飞书机器人发送信息至联系人,远程操作。

具体流程如下:(飞书发送消息指令,可使用影刀自带指令完成。)

2.获取公众号cookie

1、安装mitmproxy

下载方式:可以通过 pip instally mitmproxy 进行安装,也可以通过安装包进行安装,安装包下载地址:Downloads

具体安装步骤可以参考一下两个文章:

https://blog.csdn.net/agrapea/article/details/124660959?
             https://blog.csdn.net/liujingliuxingjiang/article/details/121633927?

2、配合切换代理脚本,实现请求是否通过mitmproxy

因为如果要使用mitmproxy需要打开本地代理,127.0.0.1:8080,但是使用requests发送请求时,如果代理是打开状态,则会报错:

requests.exceptions.ProxyError:
HTTPSConnectionPool(host='mp.weixin.qq.com', port=443):
Max retries exceeded with url: /mp/profile_ext?action=home&__biz=&scene=124 (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 502 Bad Gateway')))

解决办法,在使用requests发送请求前,可以通过修改代理的办法,关闭代理,在发送请求即可,切换代理办法可以参考以下文章:Python 实现windows下自动切换代理IP_fengleitao的博客-CSDN博客

以及一个更简单的办法,设置proxy,不通过代理请求:

proxies = {'http': None,'https': None
}
response = requests.get(url, headers=headers, verify=False, proxies=proxies)

3、使用mitmproxy脚本,截获公众号文章列表页请求的cookie,入库等待调用

注意:每个公众号的cookie都不一样,每个公众号都需要单独获取cookie。

from mitmproxy import ctxclass Counter:def __init__(self):self.num = 0def request(self, flow):self.num = self.num + 1info = ctx.log.infoctx.log.info("We've seen %d flows" % self.num)if 'https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=' in flow.request.pretty_url:info(flow.request.pretty_url)cookies = str(flow.request.cookies)cookie = cookies.replace('MultiDictView[', '')[:-1]cookie1 = cookie.replace('], [', ';')cookie = cookie1.replace("', '", "=")cookie = cookie.replace("'", '').replace('[', '').replace(']', '')info(str(cookie))addons = [Counter()]

4、脚本使用方法

控制台输入

mitmdump -s .\anatomy.py

即可启用脚本,当你打开文章列表页时,会自动打印出该页面cookie,可自行增加入库方法进行入库。

5、通过影刀自动在微信端点击链接结合mitmproxy获取cookie

提前拼接好要点击的公众号的文章列表页url:

https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz={公众号的biz值}&scene=124

判断cookie是否入库,没有就点刷新即可。

获取到cookie就可以使用requests去获取数据啦~

获取点赞数和阅读量、在看数据的方法后边再说吧。。累了。。


总结

因为每天需要推送的公众号不多,所以可以写死的地方都写死了,只是提供一个思路,当然不是最优解,大佬们可以看着玩玩哈。

自动获取微信公众号微信文章信息(每日自动推送)相关推荐

  1. 微信公众号发送小程序卡片_微信公众号将能够直接给用户推送小程序卡片,社交电商开始发力...

    公众号或能在对话框中直接给粉丝推送小程序卡片了,这个功能似乎正在灰度测试中. 微信公众号将能够直接给用户推送小程序卡片,社交电商开始发力 一直以来,微信公众号和微信小程序一直是腾讯基于微信生态的两款明 ...

  2. 微信小程序使用微信公众号的模板消息进行消息推送开发流程

    微信小程序使用微信公众号的模板消息进行消息推送开发流程 微信公众号服务号,微信公众号订阅号,微信公众号开发者平台,微信小程序 这些的账号都是独立的不能共用 微信开放平台开发者资质认证审核费用为300元 ...

  3. 微信公众号配置 Token 认证以及消息推送功能

    前言 公众号服务配置 Token认证 如何配置 Token 认证接口 公众号获取网页授权及用户信息 导向 网页授权 关注后消息触发授权 公众号推送模板消息 模板消息功能插件 推送模版消息接口介绍 获取 ...

  4. springboot完成拉取微信公众号关注列表并通过列表推送消息

    微信开放文档 微信小程序和公众号中,同一个用户在不同的应用中的openId是不同的,也就是说同一个用户在一个小程序和对应的公众号上是无法通过openId对应的,需要用微信唯一的unionId进行对应, ...

  5. python实现微信公众号给你的重要用户推送消息

    最近小红书上这个很火,觉得做起来应该也不会太难,捣鼓了两天有了初步成效,还有一些功能没实现(比如定时推送),保姆级教程,大家可以借鉴,动手给自己重要的人做一个,或许可以暖ta一整天- - 1.步骤一 ...

  6. 【Python爬虫】微信公众号历史文章和文章评论API分析

    上一篇文章爬取微信公众号文章信息准备工作介绍了微信公众号历史文章和文章评论API的组成情况,历史文章API格式:https://mp.weixin.qq.com/mp/profile_ext?acti ...

  7. Python数据分析 | 分析微信公众号历史发文信息

    文章目录 一.前言 二.获取历史文章信息 三.提取和查看数据 四.数据可视化 原文链接:https://yetingyun.blog.csdn.net/article/details/11228825 ...

  8. python自动获取微信公众号最新文章

    微信公众号获取思路 常用的微信公众号文章获取方法有搜狐.微信公众号主页获取和api接口等多个方法. 听说搜狐最近不怎么好用了,之前用的api接口也频繁维护,所以用了微信公众平台来进行数据爬取. 首先登 ...

  9. 微信公众号/微信小程序获取用户信息以及推送微信模版消息_MQ

    微信公众号/微信小程序获取用户信息以及推送微信模版消息_MQ 一.获取用户信息 1.首先我们需要了解什么是微信用户的OpenID 在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密 ...

最新文章

  1. 算法笔记_157:算法提高 c++_ch02_01(Java)
  2. python枪战项目计划书_燕山大学操作系统课程设计计划书
  3. 技术解读|云上企业级存储——打开存储新维度,促进用户核心业务创新
  4. jzoj1293,P2933-气象牛(气象测量)【dp】
  5. Kali aircrack-ng wifi密码破解(暴力)(1)
  6. 近似求PI (15 分)
  7. linux屏幕怎么放大_02|初始Linux——Windows与Linux区别
  8. 区块链数字合约,如何将下放所有权?
  9. webp批量转换jpg_转换文件格式快人一步!右键菜单直接转换,支持图片、文档、视频等……...
  10. 001.XE3添加TPerlRegEx
  11. mac 安装 android 系统,苹果电脑Mac系统如何安装Android模拟器?
  12. 一台电脑中,如何使 git 同时配置Github、Gitee等多种版本控制工具
  13. java判断一个数是不是素数_Java-判断一个数是不是素数
  14. android 四舍五入函数,巧用WPS移动版组合函数四舍五入保留两位小数
  15. Unity动态绘制多边形
  16. 星河智联Android开发
  17. 工业器械视觉检测方案
  18. FTDI通用转USB芯片简述
  19. SourceTree使用配置
  20. golang游戏开发学习笔记-开发一个简单的2D游戏(基础篇)

热门文章

  1. 关于公考中隔年增长率,隔年增长量的计算问题。
  2. 情人节,用C++画一个心:)
  3. 收购汇源是可口可乐的失败
  4. 模型学习之T5模型初探
  5. 两个日期之间的差值计算
  6. 仿LOL项目开发第一天
  7. html5 两栏等宽布局代码,分三栏栏宽相等 如何将合并的一段分为等宽三栏,栏宽为4.5厘米...
  8. SetROP2函数 ——设置前景色与背景色
  9. mobaxterm macro 导入 导出 清空 乱码
  10. 高频数据分析:使用数据透视