java 登录编程_Java编程通过session访问需要登录的页面

使用Java访问一般网页,进行数据抓取等比较简单,直接用URL和URLConnection连接所需要的网站地址即可,然后对返回的html源码进行处理分析,获取感兴趣的内容。

不过如果是需要登录后才能访问的网页就不能直接传入网站url进行连接了,一般网页会自动跳转到登录页面,要求先登录。

另外,即使先在登录页面进行了登录,然后再转到要登录才能访问的网页时,如果没在第二次连接中加入之前登录成功后的session,那么访问仍然会失败。URLConnection每次打开一个连接,如果不进行设置,则默认会以新的session去访问,那么相当于又需要重新登录,因此需要加入登录成功的session才能访问到需要登录的页面。

以下通过一个小例子来说明该如何操作:

1.首先找到登录界面

1352087851_8133.jpg

2.查看表单提交给哪个action

1352087862_8616.jpg

3.来到单一的表单提交页面

1352087877_3873.jpg

4.修改表单提交方式为get

1352087884_6372.jpg

5.随便输入用户名和密码后浏览器的地址栏就有这么一串地址,只要把user和password改成正确的,那么直接在浏览器输入这串地址就直接登录,类似的,直接用URLConnetion打开这串数据的连接即实现了登录,获取服务器返回过来的session,下次再连接该网站的别的需要登录的页面时带上这个session即可成功访问了。

1352087892_2951.jpg

代码如下(具体网站地址已隐去):

import java.io.BufferedInputStream;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.URL;

import java.net.URLConnection;

public class Test

{

public static void main(String[] args) throws Exception//以下仅举个小例子,不处理异常

{

String id="xxxxx";

String passwd="xxxxx";

String loginUrl="http://xxxxx/login.aspx?__VIEWSTATE=dDw2Nzg5Mjk2NTY7O2w8b2s7Pj5OOk%2B5QUCLHuIzBtlhui5aZbY11Q%3D%3D&txt_user="+id+"&txt_password="+passwd+"&ok.x=35&ok.y=12";

URL url = new URL(loginUrl);

URLConnection conn = url.openConnection();

String sessionValue = conn.getHeaderField("Set-Cookie");//获取session值

String[] sessionId = sessionValue.split(";");

URL newUrl = new URL("http://xxxxx/student_info1.aspx");

URLConnection newConn = newUrl.openConnection();

newConn.setRequestProperty("Cookie", sessionId[0]);

newConn.connect();

BufferedInputStream bis = new BufferedInputStream(newConn.getInputStream());

InputStreamReader inputStreamReader = new InputStreamReader(bis,"utf-8");

BufferedReader br = new BufferedReader(inputStreamReader);

String str = null;

while ((str = br.readLine()) != null)

{

System.out.println(str);//输出登录后才能访问的网页的html源码,可以根据需要获取相关信息

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ZDB5202烧成控制器方法

1.跳线和ZDB5202的安装位置如下图 黄色开关设置为off状态,就是靠近班子里面的一方。 2.打开z-wave programmer软件,设置如下图,注意烧写接口为spi,烧写的时候会提示的。选yes是uart,选no是spi。…

controller配对与接触配对

1. 当点击添加按钮后 以上数据,都是z-wave主控制器与pc controller软件的交换。 2. 当连续点击从结点的配对按钮后。 3. 当点击remove按钮后 4. 当连续点击从结点接触配对按钮后

php可以调用windowsapi吗_2.如何调用WindowsApi

2.如何调用WindowsApi在上一篇章节中 很不专业的介绍了一下WindowsApi 如果你本身就知道 那你也压根不用看 如果你本身就不知道 就算我说的再多 估计你也觉得是多余 所以还是来点实际的首先 在C#中想要调用那些Api(当然不一定是Windows提供的Api) 你得添加一个引用:…

php获取跳转后url,php获取跳转后真实url的方法

php获取跳转后真实url的方法发布时间:2020-08-01 14:17:56来源:亿速云阅读:68作者:清晨这篇文章主要介绍php获取跳转后真实url的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一…

定界符在php中,php定界符如何使用

定界符给字符串定界的方法使用定界符语法(“<<结束标识符必须从行的第一列开始。同样&#xff0c;标识符也必须遵循 PHP 中其它任何标签的命名规则&#xff1a;只能包含字母数字下划线&#xff0c;而且必须以下划线或非数字字符开始。举个例子&#xff1a;<?php $str…

php protobuf 二进制,PHP环境中使用ProtoBuf数据格式

1、syntax"proto3":表明使用的是proto3格式&#xff0c;如果不指定则为proto22、package test:定义包名为test&#xff0c;生成类时&#xff0c;会产生一个目录为test3、message Person:消息主体内容&#xff0c;里面为各个字段的定义二、生成对应的PHP类定义好Perso…

工具系列:PyCaret介绍_模型训练详细教程

工具系列:PyCaret介绍_模型训练详细教程 PyCaret初始化 setup任务&#xff1a;自动推断数据类型 必需参数默认转换实验记录模型验证GPU支持示例 PyCaret模型训练 compare_models 示例更改排序顺序只比较几个模型返回多个模型设置预算时间设置概率阈值禁用交叉验证在集群上进行…

php怎么调试小程序,教你如何配置微信小程序

这篇文章主要介绍了微信小程序 教程之小程序配置的相关资料,这里对app.json,pages,window等做了详细介绍&#xff0c;对于初学开发微信小程序的朋友&#xff0c;掌握这些还是比较重要的&#xff0c;需要的朋友可以参考下微信小程序——配置以下就是小编对小程序配置的资料进行的…

php中的控制器是什么意思,理解PHP中的MVC编程之控制器_php

简单来讲&#xff0c;控制器的作用就是接受请求。它使用获取的方法&#xff0c;在这里是通过URI&#xff0c;载入一个功能模块来刷新或者提交一个表述层。控制器将使用$_GET自动全局变量来判断载入哪一个模块。一个请求的例子&#xff0c;看起来像这样&#xff1a;http://examp…

GitHub---最简单的使用

大神就不要喷我了&#xff0c;写这个只是希望新人能够对自己写的项目更方便的本地管理。&#xff08;其实我也只会这点东西w&#xff09; 这两天稍微看了看GitHub&#xff0c;之前不是很明白这个版本控制器到底是什么意思&#xff0c;现在略微有了解&#xff0c;这是对项目代码…

php apache配置测试端口,详解安装配置Windows版apache服务器及压力测试

下载Apache1、下载地址&#xff1a;http://httpd.apache.org/download.cgi2、点击链接Files for Microsoft Windows&#xff1a;安装步骤1、先安装apache补丁1)下载地址&#xff1a;https://www.microsoft.com/zh-cn/download/confirmation.aspx?id481452)如果没有安装&#x…

ASCII,Unicode和UTF-8

1. ASCII码 我们知道&#xff0c;在计算机内部&#xff0c;所有的信息最终都表示为一个二进制的字符串。每一个二进制位&#xff08;bit&#xff09;有0和1两种状态&#xff0c;因此八个二进制位就可以组合出256种状态&#xff0c;这被称为一个字节&#xff08;byte&#xff09…

matlab中solve和resolve,resolve和solve的区别

solve和resolve的区别在于&#xff1a;首先solve一般用于解决难题。如solve a problem, solve a riddle, solve an algebra problem。而resolve 是用在解决矛盾&#xff0c;或者是解决大难题&#xff0c;较显示问题的严重性。如resolve a conflict。其他有关slove的词dissolve&…

shell变量详解

1 shell变量基础 shell变量是一种很“弱”的变量&#xff0c;默认情况下&#xff0c;一个变量保存一个串&#xff0c;shell不关心这个串是什么含义。所以若要进行数学运算&#xff0c;必须使用一些命令例如let、declare、expr、双括号等。shell变量可分为两类&#xff1a;局部变…

if和case用法比较

Case语句时并发语句&#xff0c;需要采用并行逻辑来实现&#xff0c;不存在逻辑的优先级别。If……else语句时多级嵌套语句&#xff0c;通常采用逻辑的串联来实现&#xff0c;该结构具有优先级别问题。这两种结构分别如下图所示&#xff1a; Always (a or b or c or d or s[1:…

PHP实训笔记,【学习笔记19】实验吧 让我进去

知识点MD5拓展攻击解题思路打开网站后看到&#xff0c;什么都没有&#xff0c;尝试抓包分析360截图17860604827894.PNGBurp 抓包发现&#xff0c;Cookie有东西。先是把source0改成source1,得到源码。、、、$flag "XXXXXXXXXXXXXXXXXXXXXXX";$secret "XXXXXXXX…

oracle查表占的物理空间,查询Oracle表实际物理使用大小

Oracle中有两种含义的表大小一种是分配给一个表的物理空间数量&#xff0c;而不管空间是否被使用。可以这样查询获得字节数&#xff1a;select segment_name, bytesfrom user_segmentswhere segment_type TABLE;效果如下&#xff1a;或者Select Segment_Name,Sum(bytes)/1024/…

分布模式

Remote Facade远程外观 在OO模型中,存在很多规模小,且有小方法的对象.这些小对象会导致很多的对象间交互.在单一地址空间里,小对象没问题.但是,当在两个进程间做调用时,频繁的跨进程交互会造成性能开销.远程外观,减少远程调用的次数. 建立在大量的细粒度对象之上,提供一个粗粒度…

POJ 2485 Highways(最小生成树 Prim)

Highways大意&#xff1a;给你一个用邻接矩阵形式存储的有n个顶点的无向图&#xff0c;让你求它的最小生成树并求出在这个生成树里面最大的边的权值。 思路&#xff1a;用Prim求&#xff0c;判断条件改一下就行。 PS&#xff1a;dis数组初始化的时候用memset一直RE&#xff0c;…

oracle用户获取datameta权限,Oracle数据库提权(低权限提升至dba)

0x01 Oracle存储过程”缺陷”在 Oracle 的存储过程中&#xff0c;有一个有趣的特点&#xff1a;运行权限。运行权限分为两种&#xff0c;definer 和 invoker。definer 为函数创建者的权限&#xff0c;而 invoker 则是当前调用函数的用户。运行权限在函数创建时就已经被钦定了&a…