Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ChengjunJia opened this issue Jun 25, 2018 · 11 comments
Open

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

ChengjunJia opened this issue Jun 25, 2018 · 11 comments
Labels
RSS proposal New RSS wanted

Comments

@ChengjunJia
Copy link

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

@DIYgod DIYgod added the contribution welcome We have some information in hand: let's make it happen! label Jun 26, 2018
@reycn
Copy link

reycn commented Jul 4, 2018

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

@Linusp
Copy link

Linusp commented Jul 8, 2018

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

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

@HenryQW
Copy link
Collaborator

HenryQW commented Aug 8, 2018

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

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

@wizos
Copy link

wizos commented Aug 20, 2018

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

@DIYgod
Copy link
Owner

DIYgod commented Aug 20, 2018

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

@songkeys
Copy link
Contributor

songkeys commented Dec 29, 2018

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

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

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

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


获取文章列表

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

URL 参数:

  • bookId:每个公众号对应的唯一 ID,可以通过搜索 API 拿到。如果没有搜到,需要用上述方法「初始化」。
  • offset:分页用。
  • count:数量。

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

  • accessToken:当前登录用户的 session_key,过期时长是 2 小时,格式大概如 Vp1IaX46
  • vid:当前登录用户唯一 ID,不会变。格式大概如:31087522

搜索

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

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
Copy link

perklet commented Mar 3, 2019

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

@wuhgit
Copy link

wuhgit commented Jul 8, 2020

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

@DIYgod DIYgod reopened this Jul 9, 2020
@DIYgod DIYgod changed the title 微信公众号抓取等进一步问题 使用微信读书抓取微信公众号 Jul 9, 2020
@DIYgod DIYgod added RSS proposal New RSS wanted and removed contribution welcome We have some information in hand: let's make it happen! labels Jul 9, 2020
@headware
Copy link

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

@wuhgit
Copy link

wuhgit commented Jul 12, 2020

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

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

@headware
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
RSS proposal New RSS wanted
Projects
None yet
Development

No branches or pull requests

10 participants