java模拟Cookies登陆
在使用java访问URL时,如果该URL需要身份验证,那么就不能够直接访问,因为没有登陆。那么,如何解决这个问题呢?
方法是使用java模拟登陆,登陆后记录下cookie信息,在下次发起请求时时将cookie发送过去用以表明身份,这样就能够访问带有权限的URL了。
下面首先介绍使用java模拟登陆。
- // 连接地址(通过阅读html源代码获得,即为登陆表单提交的URL)
- String surl = "http://login.goodjobs.cn/index.php/action/UserLogin";
- /**
- * 首先要和URL下的URLConnection对话。 URLConnection可以很容易的从URL得到。比如: // Using
- * java.net.URL and //java.net.URLConnection
- */
- URL url = new URL(surl);
- HttpURLConnection connection = (HttpURLConnection) url.openConnection();
- /**
- * 然后把连接设为输出模式。URLConnection通常作为输入来使用,比如下载一个Web页。
- * 通过把URLConnection设为输出,你可以把数据向你个Web页传送。下面是如何做:
- */
- connection.setDoOutput(true);
- /**
- * 最后,为了得到OutputStream,简单起见,把它约束在Writer并且放入POST信息中,例如: ...
- */
- OutputStreamWriter out = new OutputStreamWriter(connection
- .getOutputStream(), "GBK");
- //其中的memberName和password也是阅读html代码得知的,即为表单中对应的参数名称
- out.write("memberName=myMemberName&password=myPassword"); // post的关键所在!
- // remember to clean up
- out.flush();
- out.close();
- // 取得cookie,相当于记录了身份,供下次访问时使用
- String cookieVal = connection.getHeaderField("Set-Cookie");
登陆成功后,即可访问其他URL了。
- String s = "http://user.goodjobs.cn/dispatcher.php/module/Resume/action/Preview";
- //重新打开一个连接
- url = new URL(s);
- HttpURLConnection resumeConnection = (HttpURLConnection) url
- .openConnection();
- if (cookieVal != null) {
- //发送cookie信息上去,以表明自己的身份,否则会被认为没有权限
- resumeConnection.setRequestProperty("Cookie", cookieVal);
- }
- resumeConnection.connect();
- InputStream urlStream = resumeConnection.getInputStream();
- BufferedReader bufferedReader = new BufferedReader(
- new InputStreamReader(urlStream));
- String ss = null;
- String total = "";
- while ((ss = bufferedReader.readLine()) != null) {
- total += ss;
- }
- IOUtils.write(total, new FileOutputStream("d:/index.html"));
- bufferedReader.close();
通过上述方式,就能访问带有权限控制的URL了。思路即为:模拟登陆,取得cookie以记录身份,下次请求时发送cookie以表明身份。
转自:http://blog.csdn.net/prince2270/article/details/6137810
java模拟Cookies登陆的更多相关文章
- Java模拟新浪微博登陆抓取数据
前言: 兄弟们来了来了,最近有人在问如何模拟新浪微博登陆抓取数据,我听后默默地抽了一口老烟,暗暗的对自己说,老汉是时候该你出场了,所以今天有时间就整理整理,浅谈一二. 首先: 要想登陆新浪微博需要 ...
- Jsoup实现java模拟登陆
Jsoup实现java模拟登陆 2013-10-29 14:52:05| 分类: web开发|举报|字号 订阅 下载LOFTER我的照片书 | 1:如何获取cookies. 1.1 ...
- java模拟有验证码的Http登陆
所需资源下载链接(资源免费,重在分享) Tesseract:http://download.csdn.net/detail/chenyangqi/9190667 jai_imageio-1.1-alp ...
- Java模拟登陆02【转载】
在使用java访问URL时,如果该URL需要身份验证,那么就不能够直接访问,因为没有登陆.那么,如何解决这个问题呢? 方法是使用java模拟登陆,登陆后记录下cookie信息,在下次发起请求时 ...
- 浏览器与服务器交互原理以及用java模拟浏览器操作v
浏览器应用服务器JavaPHPApache * 1,在HTTP的WEB应用中, 应用客户端和服务器之间的状态是通过Session来维持的, 而Session的本质就是Cookie, * 简单的讲,当浏 ...
- curl模拟自动登陆&采集网页数据
<!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content=&quo ...
- Java模拟登录系统抓取内容【转载】
没有看考勤的习惯,导致我的一天班白上了,都是钱啊,系统也不发个邮件通知下.... 为了避免以后还有类似状况特别写了个java模拟登录抓取考勤内容的方法(部分代码来自网络),希望有人修改后也可以 ...
- java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例
java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例HttpClient 测试类,提供get post方法实例 package com.zdz.httpclient; i ...
- C# 模拟网站登陆
实现此功能首先需要借助一些抓包工具,对相应的网站登陆过程进行分析,此过程根据网站的不同,可能复杂,也可能很简单.常用的抓包工具FF下FireBug和IE下的HttpWatch.这两个工具很强大,以此工 ...
随机推荐
- noip模拟赛 财富
题目描述LYK有n个小伙伴.每个小伙伴有一个身高hi.这个游戏是这样的,LYK生活的环境是以身高为美的环境,因此在这里的每个人都羡慕比自己身高高的人,而每个人都有一个属性ai表示它对身高的羡慕值.这n ...
- Blue Jeans POJ 3080 寻找多个串的最长相同子串
Description The Genographic Project is a research partnership between IBM and The National Geographi ...
- c++实现数据结构1.顺序表
头文件seqlist.h #ifndef _SEQLIST_H_ #define _SEQLIST_H_ #include<iostream> using namespace std; t ...
- HDU 4598
这道题其实不需要考虑具体数值,但可以肯定的是,相连边的两端点必定有一正一负,至于谁正谁负,并不重要,这是可以思考的,很明显的一个二分图性质,如果不满足此条件,是不可能满足题目第二个条件的.所以首先对题 ...
- STM32F407VG (五)定时器
一.定时器节本分类和主要特点 1.STM32定时器分类: 1)看门狗定时器 2)SysTick定时器 3)RTC定时器 4)通用定时器 a)通用定时器TIM2~TIM5, 当中TIM2和TIM5是32 ...
- 为什么要阅读——兼分享《首先,打破一切常规》[中译文]:世界顶级管理者的成功秘诀/(美)马库斯·白金汉,(美)柯特·科夫曼 著
<ctrlno=255632">首先,打破一切常规>[中译文]:世界顶级管理者的成功秘诀/(美)马库斯·白金汉,(美)柯特·科夫曼 著:鲍世修 等译 下载地址:http:/ ...
- POJ 3370 Halloween treats 鸽巢原理 解题
Halloween treats 和POJ2356差点儿相同. 事实上这种数列能够有非常多,也能够有不连续的,只是利用鸽巢原理就是方便找到了连续的数列.并且有这种数列也必然能够找到. #include ...
- 编程算法 - 和为s的连续正整数序列 代码(C)
和为s的连续正整数序列 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一个正数s, 打印出全部和为s的连续正数序列(至少含有两个数). 起 ...
- vsftpd出现“Response: 500 OOPS: cannot change directory”解决方法(转载)
vsftpd出现“Response: 500 OOPS: cannot change directory”解决方法 笔者用的Linux发行版本为centos当用FTP客户端连接时,出现如下错误提示 ...
- luogu1993 小K的农场
题目大意 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b至少多种植了c个单位的作 ...