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。…

判断一个数是不是整数

<?php //判断一个数是整数吗&#xff1f; function check($num){if($num>1){return (check($num-1));//采用递归&#xff0c;一直减到0到1之间}elseif($num<0){return(check((-1)*$num-1));//采用递归&#xff0c;一直减到0到1之间}else{if(($num>0) && (…

z-wave问题汇总

1. 如果发送的串口数据的checksum不对的话&#xff0c;z-wave结点会响应一个0x15。 2. 5202&#xff0c;5101既可以做控制也可以做设备端。他们都是外置天线&#xff0c;距离会好一点。 另外5202和5101也可以做路由结点。 5304只能做控制端&#xff0c;5304的天线是…

java enumeration 排序_Java如何对java.util.Enumeration进行排序?

在此代码段中&#xff0c;您将看到如何对Enumeration对象的内容进行排序。我们首先创建一个随机数并将其存储在中Vector。我们用这些数字&#xff0c;并创建和Enumeration调用对象Vector的elements()方法。我们把它转换为java.util.List&#xff0c;然后排序的内容List使用Coll…

controller配对与接触配对

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

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

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

ubuntu 14.04 ssh

使用gedit修改配置文件"/etc/ssh/sshd_config" 打开"终端窗口"&#xff0c;输入"sudo gedit /etc/ssh/sshd_config"-->回车-->把配置文件中的"PermitRootLogin without-password"加一个"#"号,把它注释掉-->再增加一…

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

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

ERROR 1044 (42000): Access denied for user ''@'localhost' to database

用mysqld_saft --skip-grant-tables&启动mysql 然后修改mysql数据库中的user表 将create_priv权限改为Y

php后台无法登入,typecho 后台无法登陆

按照操作说明安装好TYPECHO但是登陆的时候无法进入后台错误提示Warning: include(): Failed opening menu.php for inclusion (include_path.:/opt/php-5.5/pear:/home/u417324844/public_html/Blog/var:/home/u417324844/public_html/Blog/usr/plugins) in /home/u417324844/p…

三、多线程与上厕所

世界上最让人坐立不安&#xff0c;最知道心急的时候&#xff0c;是拿着手纸捂着肚子而厕所里有人的时候。 现在我们有两个人&#xff0c;一个在厕所里&#xff0c;一个在厕所外。 厕所外的人一直问“你好了没&#xff1f;” while&#xff08;厕所里的人没出来&#xff09;{说话…

Ubuntu 14.04 为 root 帐号开启 SSH 登录

1. 修改 root 密码 sudo passwd root2. 以其他账户登录&#xff0c;通过 sudo nano 修改 /etc/ssh/sshd_config : xxxubuntu14:~$ su - root Password: rootubuntu14:~# vi /etc/ssh/sshd_config3. 注释掉 #PermitRootLogin without-password&#xff0c;添加 PermitRootLogi…

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

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

IPv6 相关的工作简介

这里说明下&#xff0c;仅仅是IPv6在开发板上的相关的工作简介&#xff0c;没有很详细&#xff0c;都是自己一边积累&#xff0c;一边实践的。能帮助其他人最好&#xff0c;也算是给自己做个备忘录。 一、首先说下DHCPv6相关的。这里我使用的是DHCP6s、DHCP6c&#xff0c;还有好…

asp.net php 哪个好,ASP.NET、JSP和PHP究竟哪个好

ASP.NET首先来说&#xff0c;ASP.NET 和 ASP 没什么关系。 ASP 是脚本编程&#xff0c;用的是JavaScript或VbScript脚本进行编写&#xff0c;而ASP.NET 则是使用基于.NET平台的语言如VB.NET、C#等&#xff0c;完全不同的东西。ASP.NET迄今为止共有四个版本&#xff1a;1.0、1.1…

2013年总结

时光飞逝&#xff0c;岁月如梭。不知不觉&#xff0c;今天是2013年的最后一天了&#xff0c;又到了写总结计划的时候了。 1.工作 由于公司战略调整&#xff0c;我所在的部门被撤销&#xff0c;2014年开始转到另外一个部门&#xff0c;搞嵌入式软件开发&#xff0c;在我的职业生…

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

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

ubuntu14.04 开启root登陆

安装完成如需使用root身份登录&#xff0c;可打开终端输入以下命令&#xff1a;#设置root密码sudo passwd root#切换到root用户sudo -s想要在登录界面使用root身份登录&#xff0c;可编辑/etc/lightdm/目录下的lightdm.conf文件&#xff0c;如没有此文件&#xff0c;直接创建vi…

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

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

php动态分页类

1 <?php2 3 /**4 * 页面名称&#xff1a;cls_page.php5 */6 class Page {7 private $each_disNums; //每页显示的条目数8 private $nums; //总条目数9 private $current_page; //当前被选中的页10 private $sub_pages; //每次显示的页数11 private …