前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java数据采集-8.模拟登录

Java数据采集-8.模拟登录

作者头像
geekfly
发布2022-05-06 19:40:06
5190
发布2022-05-06 19:40:06
举报
文章被收录于专栏:geekflygeekfly

登录网址:https://passport.csdn.net/account/login?ref=toolbar 项目源码:https://github.com/geekfly2016/Spider 代码目录:Spider/src/xyz/geekfly/csdn/Login.java

当我们对某些网站进行一些特定操作时,如知乎的点赞,会要求我们登录,这时候一些简单的做法就是粘贴浏览器请求中的Cookie信息,但作为自动化的程序来讲,这个方法明显不可行。因此就有了模拟登录的需求。 注:至于Cookie是什么,在网页请求时有什么用,不在本文讨论范围,自行Google吧。


模拟登录一般分为以下几步:

  1. 获取登录的所需的信息
  2. 模拟提交账号信息,获取Cookie
  3. 携带Cookie进行目标操作

以CSDN登录为例,详细介绍每一步如何操作和代码实现: 1. 获取登录的所需的信息 打开CSDN,点击登录,即可看到登录页面,打开开发者工具。

这里写图片描述
这里写图片描述

注意先清空列表,勾选Preserve log(保持日志),这样点击登录跳转之后才能记录之前的请求。


输入自己的账号密码,点击登录,在第一个请求中我们可以看到登录请求所携带的参数,包括我们输入的用户名(username)和密码(password),但是发现还有几个其它参数。

这里写图片描述
这里写图片描述

再次退出,点击登录,查看表单发现存在这几个参数,因此模拟登录前需要获取这些参数。

这里写图片描述
这里写图片描述

方案是模拟登录前,先访问https://passport.csdn.net/account/login?ref=toolbar登录页面,使用Jsoup获取三个隐藏参数和表单提交的action(即为模拟登录的Url),保存以供下一步使用。 代码如下:

获取到的数据样例:

对于有些网站在分析之后,登录仅需要模拟点击登录所请求的Url带上用户信息即可,没有需要从登录页面获取参数的网站,不需要访问登录页面,只要找到模拟登录的Url即可。

2. 模拟提交账号信息,获取Cookie 在上一步点击登录后,可以在Response Headers中发现后台返回了很多参数,而在之后请求中,主要用到的也就是Cookie了,因此需要提取Cookie,而返回的又有很多个,需要自行拼接。

这里写图片描述
这里写图片描述

这里写图片描述
这里写图片描述

代码如下:

3. 携带Cookie进行目标操作 在后续请求中,携带Cookie即可。

主函数调度代码:

运行演示:

我们可以看到携带Cookie后,访问个人主页菜单栏包括了管理博客和写新文章,未携带Cookie则不包括,说明模拟登陆成功。

未登录
未登录

登录成功
登录成功

后记:这里使用的是最简单的模拟登录案例了,稍复杂点的还有带验证码的,登录信息中跳转N次验证的,还有微信网页版那样的扫码验证的,骚年们,任重而道远,继续努力吧。

接下来这个专题写什么呢?

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档