java模拟Cookies登陆

时间:2022-09-21 15:56:36

在使用java访问URL时,如果该URL需要身份验证,那么就不能够直接访问,因为没有登陆。那么,如何解决这个问题呢?

方法是使用java模拟登陆,登陆后记录下cookie信息,在下次发起请求时时将cookie发送过去用以表明身份,这样就能够访问带有权限的URL了。

下面首先介绍使用java模拟登陆。

  1. // 连接地址(通过阅读html源代码获得,即为登陆表单提交的URL)
  2. String surl = "http://login.goodjobs.cn/index.php/action/UserLogin";
  3. /**
  4. * 首先要和URL下的URLConnection对话。 URLConnection可以很容易的从URL得到。比如: // Using
  5. * java.net.URL and //java.net.URLConnection
  6. */
  7. URL url = new URL(surl);
  8. HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  9. /**
  10. * 然后把连接设为输出模式。URLConnection通常作为输入来使用,比如下载一个Web页。
  11. * 通过把URLConnection设为输出,你可以把数据向你个Web页传送。下面是如何做:
  12. */
  13. connection.setDoOutput(true);
  14. /**
  15. * 最后,为了得到OutputStream,简单起见,把它约束在Writer并且放入POST信息中,例如: ...
  16. */
  17. OutputStreamWriter out = new OutputStreamWriter(connection
  18. .getOutputStream(), "GBK");
  19. //其中的memberName和password也是阅读html代码得知的,即为表单中对应的参数名称
  20. out.write("memberName=myMemberName&password=myPassword"); // post的关键所在!
  21. // remember to clean up
  22. out.flush();
  23. out.close();
  24. // 取得cookie,相当于记录了身份,供下次访问时使用
  25. String cookieVal = connection.getHeaderField("Set-Cookie");

登陆成功后,即可访问其他URL了。

  1. String s = "http://user.goodjobs.cn/dispatcher.php/module/Resume/action/Preview";
  2. //重新打开一个连接
  3. url = new URL(s);
  4. HttpURLConnection resumeConnection = (HttpURLConnection) url
  5. .openConnection();
  6. if (cookieVal != null) {
  7. //发送cookie信息上去,以表明自己的身份,否则会被认为没有权限
  8. resumeConnection.setRequestProperty("Cookie", cookieVal);
  9. }
  10. resumeConnection.connect();
  11. InputStream urlStream = resumeConnection.getInputStream();
  12. BufferedReader bufferedReader = new BufferedReader(
  13. new InputStreamReader(urlStream));
  14. String ss = null;
  15. String total = "";
  16. while ((ss = bufferedReader.readLine()) != null) {
  17. total += ss;
  18. }
  19. IOUtils.write(total, new FileOutputStream("d:/index.html"));
  20. bufferedReader.close();

通过上述方式,就能访问带有权限控制的URL了。思路即为:模拟登陆,取得cookie以记录身份,下次请求时发送cookie以表明身份。

转自:http://blog.csdn.net/prince2270/article/details/6137810

java模拟Cookies登陆的更多相关文章

  1. Java模拟新浪微博登陆抓取数据

    前言:  兄弟们来了来了,最近有人在问如何模拟新浪微博登陆抓取数据,我听后默默地抽了一口老烟,暗暗的对自己说,老汉是时候该你出场了,所以今天有时间就整理整理,浅谈一二. 首先:  要想登陆新浪微博需要 ...

  2. Jsoup实现java模拟登陆

    Jsoup实现java模拟登陆 2013-10-29 14:52:05|  分类: web开发|举报|字号 订阅     下载LOFTER我的照片书  |     1:如何获取cookies. 1.1 ...

  3. java模拟有验证码的Http登陆

    所需资源下载链接(资源免费,重在分享) Tesseract:http://download.csdn.net/detail/chenyangqi/9190667 jai_imageio-1.1-alp ...

  4. Java模拟登陆02【转载】

    在使用java访问URL时,如果该URL需要身份验证,那么就不能够直接访问,因为没有登陆.那么,如何解决这个问题呢?     方法是使用java模拟登陆,登陆后记录下cookie信息,在下次发起请求时 ...

  5. 浏览器与服务器交互原理以及用java模拟浏览器操作v

    浏览器应用服务器JavaPHPApache * 1,在HTTP的WEB应用中, 应用客户端和服务器之间的状态是通过Session来维持的, 而Session的本质就是Cookie, * 简单的讲,当浏 ...

  6. curl模拟自动登陆&采集网页数据

    <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content=&quo ...

  7. Java模拟登录系统抓取内容【转载】

    没有看考勤的习惯,导致我的一天班白上了,都是钱啊,系统也不发个邮件通知下....     为了避免以后还有类似状况特别写了个java模拟登录抓取考勤内容的方法(部分代码来自网络),希望有人修改后也可以 ...

  8. java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例

    java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例HttpClient 测试类,提供get post方法实例 package com.zdz.httpclient; i ...

  9. C&num; 模拟网站登陆

    实现此功能首先需要借助一些抓包工具,对相应的网站登陆过程进行分析,此过程根据网站的不同,可能复杂,也可能很简单.常用的抓包工具FF下FireBug和IE下的HttpWatch.这两个工具很强大,以此工 ...

随机推荐

  1. 如何使用Xmanager及VNC登录远程桌面

    如何调用远程桌面,比较常见的有两种方式:Xmanager及VNC 正好今天鼓捣了一下,特整理如下: Xmanager Xmanager的调用也有两种方式: 一.直接在Xshell中调用 这时需设置会话 ...

  2. &lbrack;BZOJ1999&rsqb;&lbrack;codevs1167&rsqb;&lbrack;Noip2007&rsqb;Core树网的核

    [BZOJ1999][codevs1167][Noip2007]Core树网的核 试题描述 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边带有正整数的权,我们称T为树网(t ...

  3. oracle中的exists 和not exists 用法详解

    有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; ...

  4. 《Apache之虚拟主机的配置》——RHEL6&period;3

    1.安装httpd软件包: Yum install httpd 2.启动apache服务: [root@redhat Desktop]# /etc/init.d/httpd start Startin ...

  5. Eclipse JDK的安装

    1.jdk安装无法配置,eclipse绿色版安装无法打开,系统的版本问题(32位和64位): 2.Eclipse下载PDT时,可以如下安装: 三个地方设置好即可,其实第三个选第一个的话会出现无法提供函 ...

  6. python&lowbar;如何派生内置不可变类型并修改实例化行为

    案例: 我们想要自定义新类型的元组,对传入的可迭代对象我们只保留其中的int类型并且值大于0的元素,如下: [1, -2, 'xxx', 7, [1, 'oo'], 9]  >> (1, ...

  7. ElementUI在IE11下兼容性修改

    1.在项目里面使用了axios.js来发送http请求,在IE下报错Promise未定义,解决办法: 到http://bluebirdjs.com/docs/getting-started.html  ...

  8. 关于SQL视图的创建和使用方法

    SQL视图的创建和使用 视图这个东西在其他的软件中,我们也经常看得到,例如word中就有视图,我们不难发现,视图似乎是一种显示方式,就像WORD一样,有几种显示版面,这就是视图,那么SQL中的视图又该 ...

  9. Spring 中的接口知识整理

    本想每个小知识一篇随笔,但是那样,看起来有些单薄,所以,就放在一片文章里了.而且,以后还会慢慢在最后不断的追加. 目录: FactoryBean BeanPostProcessor 1.Factory ...

  10. 【git】之常用命令

    再使用git过程常用的命令在6-10左右,但是如果你想精通git那么需要记住的命令在80左右, 下面看这张图,我们了解一下git的概念的常用操作! Workspace:工作区(例如eclipse的工作 ...