爬取微信公众号
2022/8/3 23:25:27
本文主要是介绍爬取微信公众号,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
技术准备
HttpClient
Java比较常用的发起请求的工具,功能有:
- 方便的发起get、post等请求
- 可以设置连接池(类似线程池),使用池化思想降低频繁创建连接的开销
- 可以自己编写代码设置多线程爬取
- ...
代码模板
public static void main(String[] args) throws Exception { CloseableHttpClient httpClient = HttpClients.createDefault(); URIBuilder uriBuilder = new URIBuilder("https://mp.weixin.qq.com/cgi-bin/bizlogin"); HttpPost httpPost = new HttpPost(uriBuilder.build()); httpPost.addHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"); List<NameValuePair> params = new ArrayList<>(); params.add(new BasicNameValuePair("action","startlogin")); UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(params,"utf8"); httpPost.setEntity(formEntity); CloseableHttpResponse response = null; try { response = httpClient.execute(httpPost); if(response.getStatusLine().getStatusCode() == 200){ String content = EntityUtils.toString(response.getEntity(),"utf8"); System.out.println(content); } }catch (IOException e){ e.printStackTrace(); }finally { try { response.close(); } catch (IOException e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } }
以上是post请求的代码模板,get等其他请求也差不太多,将HttpPost换成HttpGet就行了
Jsoup
一个html解析工具,可以在后台很方便的像jquery一样以标签、类、属性选择器的方式,获取指定的html标签下的文本内容。
微信公众平台
爬取方法
一般爬取的接口是搜狗微信、或者是微信公众平台,这里使用的是微信公众平台
- 登录微信公众平台
- 选择草稿箱->新的创作
- 选择链接->其他公众号
- 选择公众号名称或者公众号id,就可以看到该公众号下的内容了
- filder进行抓包,找到该接口,使用该接口就可以抓取公众号内容
自动登录
动机:因为cookie过三天就会过期,每次都需要人工重新登录,想试试可不可以自动登录
想法:filder抓取账号密码登录接口,cookie过期就使用账号密码重新登录一下,填充新的cookie
实践
抓取到登录接口是这个:https://mp.weixin.qq.com/cgi-bin/bizlogin?action=startlogin&username=sdf&pwd=1234&imgcode&token
编写代码尝试登录,发现还是会跳转到扫码登录,也就是说扫码登录是绕不开的。
因此看了一下扫码登录的流程,和OAuth2授权过程很像。其中必须要用到手机端进行扫码,因此无法实现完全自动化。
扫码登录流程
- 页面上会出现二维码,微信服务器会一直用长连接或者轮询判断二维码是否被扫描
- 二维码被扫描,微信服务器会接收到扫描请求,向公众号平台服务器发送手机确认请求
- 微信公众号平台服务器向手机发送确认请求
- 手机确认授权,网页得到token,跳转登录成功
抓包展示
参考
- https://zhuanlan.zhihu.com/p/34430756
- https://segmentfault.com/a/1190000021010217
这篇关于爬取微信公众号的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-22[开源]10.3K+ Star!轻量强大的开源运维平台,超赞!
- 2024-11-21Flutter基础教程:新手入门指南
- 2024-11-21Flutter跨平台教程:新手入门详解
- 2024-11-21Flutter跨平台教程:新手入门与实践指南
- 2024-11-21Flutter列表组件教程:初学者指南
- 2024-11-21Flutter列表组件教程:新手入门指南
- 2024-11-21Flutter入门教程:初学者必看指南
- 2024-11-21Flutter入门教程:从零开始的Flutter开发指南
- 2024-11-21Flutter升级教程:新手必读的升级指南
- 2024-11-21Flutter升级教程:轻松掌握Flutter版本更新