DIYgod / RSSHub

🧡 Everything is RSSible
https://docs.rsshub.app
MIT License
31.91k stars 7.1k forks source link

使用微信读书抓取微信公众号 #311

Open ChengjunJia opened 6 years ago

ChengjunJia commented 6 years ago

我在找寻公众号资料抓取时,发现了http://www.huginn.cn/这个项目 大致看了一下,应该可以满足要求,不知道RSSHub这边有没有考虑,两个team合作一下,解决微信公众号抓取问题?

reycn commented 6 years ago

遗憾的是,huginn似乎也不能用了。

Linusp commented 6 years ago

流程上其实已经能跑通了,还是作者提供的思路,通过微信公众号的即刻 topic 拿到微信公众号的更新列表,然后用 huginn 解析。

这里有一个问题是,在最初的一步,没有办法很直接的把微信公众号和即刻 topic 对应起来,需要我们手工地先根据公众号去即刻里搜索得到这个微信公众号的 topic。

HenryQW commented 6 years ago

自己造轮子需要稳定的代理池,个人肯定是没能力了,爬来的免费代理太不稳定了。 @Linusp +1。RSSHub 的流程我已经用了很久了。还有一个平台上的公众号不是很全, 主题比较偏向于海外华人。https://posts.careerengine.us/posts/original

其实这里好多主题都和我 huginn 抓的重复了,有空一一补上。

wizos commented 6 years ago

有一个新思路是通过“微信读书”,可以查看到该公众号里面的所有文章。 具体见:https://www.v2ex.com/t/479441

DIYgod commented 6 years ago

@wizos 可以观望一段时间,这个感觉不稳

Songkeys commented 5 years ago

半年过去,感觉微信读书的 API 还挺可以,拿到的数据很全,甚至可以全文。

但是直接在微信读书里搜索公众号并不一定可以搜到结果:目前来看,如果某个公众号之前从未有人在微信手机端点击右上角的「···」,选择「在微信读书中打开」,那么该公众号不会出现在微信读书的搜索结果数据库中。所以必要的第一步都是需要借助手机端先「初始化」一个公众号书集,拿到 bookId 后,才能用 API 访问文章列表。

不过一旦拿到了 bookId,之后的工作相当顺利。

这里记录一下大概的研究结果,希望可以有所帮助……有错或者遗漏的地方也欢迎指正补充。


获取文章列表

https://i.weread.qq.com/book/articles?bookId=MP_WXS_3080584025&offset=0&count=10

URL 参数:

Headers:(用于用户登录身份凭证,需要在手机上抓取得到。)

搜索

根据经验来看,貌似大部分都不能直接搜到;即使有初始化的话,如果和很多书籍重名,也很难搜到。

https://i.weread.qq.com/store/search?keyword=毕导&count=20

参数不多说了。注意这个 API 也需要上面提到的 headers 作凭证。

这是我抓到的完整的搜索 API:GET /store/search?keyword=关键词&author=&authorVids=&categoryId=&count=20&maxIdx=0&type=0&v=1&outer=1&fromBookId=。然而客户端中只有一个搜索框(for keyword),并不能猜出其他大部分 ID 参数具体对应什么。


这个 API 感觉还是更适合私人使用。因为 accessToken 只有两小时的时限,而且即便如此,在开源的 RSSHub 中,暴露出所需要的微信账号 accessTokenvid 会比较危险。当然如果有更好的解决方法也欢迎提出。

perklet commented 5 years ago

这个接口必须保证微信读书账号是“使用微信登录”访问才有结果,使用邮箱注册的微信读书账号访问是空的。

wuhgit commented 4 years ago

微信读书这个接口的确很不错。 绝大多数的公众号都可以获取 bookid,相对困难的只是需要解决token的自动更新就可以了,而这个自动更新,可以借助它的网页版来实现。 感谢楼上各位提供的思路!

headware commented 4 years ago

@wuhgit 请教怎么通过网页自动更新token?

wuhgit commented 4 years ago

@wuhgit 请教怎么通过网页自动更新token?

在登录状态下,网页版的token是过期就自动更新的

headware commented 4 years ago

@wuhgit 试了下,它似乎只是自动更新了cookie。 网页版读书没有用到token?