『开发』小程序通过易班接口登陆并请求数据

本文介绍了一种结合爬虫和易班官方接口实现小程序登录的方法。首先,通过分析易班登录页面的JavaScript,利用Jsoup在Java中模拟登录。然后,注册成为易班开发者,获取APPID和APPSECRET,使用SDK进行授权登录。最终解决方案是前端发送用户名和密码到后端,后端调用易班接口并模拟登录,返回数据给前端。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本项目使用到的相关技术(极其简单):

  • Springboot
  • Jsoup

项目地址:https://github.com/ALL-AC/YiBanLogin.git

一、前期思路

这部分很重要,虽然没能完美解决问题,但最终方案是在这个基础上做成的,因此最终方案就不做过多的讲解。

(一)、爬虫篇

易班官网的登陆页面:

image-20200904104051771

1、详细步骤

接下来要先登陆一次,通过抓包(我用的是Chrome,其他工具也可以),把必要的信息都记录下来:

  • 先把已经登录的帐号退出,然后进入登录界面,按F12打开浏览器调试工具,先清空,再勾选上日志记录功能:

    图片

  • 然后输入用户名和密码,进行登陆。登陆成功后,选择XHR中的doLoginAjax,可以看到相关登陆信息:

    image-20200904105317672

    登陆提交的URL:

    image-20200904114413597

    其中,account为账号,captcha为验证码,keysTime时间戳(长时间不登录,登陆页面会过期),重点的是password这个密码部分,能发现该密码是通过前端加密后再进行提交的。那我们就要先清楚其加密方式,才能进行下一步操作。

  • 再次退出登陆,回到登陆页面,通过控制台的选元素箭头,将登陆按钮所在的元素选中,进行观察:

    image-20200904110033033

    复制该登陆按钮的id,在控制台进行全局搜索(Chrome是ctrl+shift+F),找到相关的js文件:

    image-20200904110224699

    进入该文件进行分析,可以轻易的找到登陆模块的代码,如下:

    image-20200904112914852

    到这里,首先要搞清楚JSEncrypt用的是什么加密算法?还有其公钥是什么?

    image-20200904113105797

    经过百度,得知JSEncrypt用的是RSA加密算法,而且由上图可知公钥可以从页面中id=login-pr的元素中得到。返回页面进行搜索,得到:

    image-20200904113259883

    其实,到了这里,基本就能写出模拟登陆的代码了。

  • 这里我直接使用的是java中的Jsoup来进行模拟登陆,毕竟后面还要暴露后端的登陆接口,用java来写简单又快捷,大概的方法如下(我直接在Markdown写的。。可能并不准确,体现出逻辑而已):

    public static String login(String username, String password, String url) throws Exception {
         
            // 连接登陆页面
            Response response = Jsoup.connect(url)
                    .header("User-Agent", USER_AGENT_VALUE)
                    .method(Method.GET)
                    .execute();
    
            Document page = Jsoup.parse(response.body
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值