ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

爬取微信公众号

2022-08-03 15:33:17  阅读:187  来源: 互联网

标签:扫码 登录 微信 爬取 公众 new response


技术准备

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,跳转登录成功

抓包展示

参考

标签:扫码,登录,微信,爬取,公众,new,response
来源: https://www.cnblogs.com/andandan/p/16067373.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有