1.前期准备

下载HtmlUnit,本博客使用的是2.15版本。

2.人人网登陆页面分析

在浏览器输入人人网登陆地址,查看网页源码可发现,登陆框代码如下:

<form method="post" <span style="color:#ff0000;">id="loginForm"</span> class="login-form" action="http://www.renren.com/PLogin.do">
<dl class="top clearfix">
<dd>
<input <span style="color:#ff0000;">type="text"</span> <span style="color:#ff0000;">name="email"</span> class="input-text" <span style="color:#ff0000;">id="email"</span> tabindex="1" value="" />
</dd>
</dl>
<dl class="pwd clearfix">
<dd>
<input <span style="color:#ff0000;">type="password" id="password" name="password"</span> error="请输入密码" class="input-text" tabindex="2"/>
<label class="pwdtip" id="pwdTip" for="password">请输入密码</label>
<a class="forgetPwd" id="forgetPwd" href="http://safe.renren.com/findPass.do" stats="home_findpassword">忘记密码?</a>
</dd>
</dl>
<div class="caps-lock-tips" id="capsLockMessage" style="display:none"></div>
<dl class="savepassword clearfix">
<dt>
<label title="为了确保您的信息安全,请不要在网吧或者公共机房勾选此项!" for="autoLogin" class="labelCheckbox">
<input type="checkbox" name="autoLogin" id="autoLogin" value="true" tabindex="4" />下次自动登录
</label>
</dt>
<dd>
<span class="getpassword" id="getpassword"><a href="http://safe.renren.com/findPass.do" stats="home_findpassword">忘记密码?</a></span>
</dd>
</dl>
<dl id="code" class="code clearfix">
<dt><label for="code">验证码:</label></dt>
<dd>
<input id="icode" type="text" name="icode" class="input-text" tabindex="3" autocomplete="off" />
<label class="codetip" id="codeTip" for="icode">请输入验证码</label>
</dd>
</dl>
<dl id="codeimg" class="codeimg clearfix">
<dt></dt>
<dd><img id="verifyPic_login" src="http://icode.renren.com/getcode.do?t=web_login&rnd=Math.random()"/>
</dd>
<a class="changeone" href="javascript:refreshCode_login();" >换一个</a>
</dl>
<dl class="bottom">
<input type="hidden" name="origURL" value="http://www.renren.com/home" />
<input type="hidden" name="domain" value="renren.com" />
<input type="hidden" name="key_id" value="1" />
<input type="hidden" name="captcha_type" id="captcha_type" value="web_login" />
<input <span style="color:#ff0000;">type="submit" id="login"</span> class="input-submit login-btn" stats="loginPage_login_button" <span style="color:#ff0000;">value="登录"</span> tabindex="5"/>
</dl>
</form>

欲模拟登陆,就先将用户名和密码填入响应输入框,人后将表单提交。简单浏览上述代码容易发现,表单的id为loginForm,

用户名输入框的name属性为email,密码输入框的name属性为password,登陆按钮的value属性为登陆,去代码中红色片段。通过

响应属性获取响应元素,执行相应操作即可。

3.编码实现

新建java工程,将HtmlUnit文件下libs下的所有*.jar添加到工程的classpath。具体方法为:右键工程,选择构建路径,选择配置构建路径,

添加外部Jar,全选添加。

package wukesly.htmlUnit.login;import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;public class LoginRenren {/*** 人人网登陆页面地址*/private static final String rrUrl = "http://www.renren.com/"; /*** 用户名*/private String username;/*** 密码*/private String password;/*** 浏览器*/private WebClient webClient;/*** 登陆页面*/private HtmlPage loginPage;/*** 登陆表单*/private HtmlForm loginForm;/*** 人人网登陆表格id*/private static final String formId = "loginForm";/*** 用户名输入域*/private HtmlTextInput usenameField;/*** 密码输入域name*/private static final String uFieldName = "email";/*** 密码输入域*/private HtmlPasswordInput passwordField;/*** 密码输入域name*/private static final String pFieldName = "password";/*** 登陆按钮*/private HtmlSubmitInput loginBnt;/*** 登陆按钮的值*/private static final String bntValue = "登录";/*** 登陆成功返回页面*/private HtmlPage retPage;/*** @param username 用户名* @param password 密码*/public LoginRenren(String username, String password) {this.username = username;this.password = password;init();}/*** 初始化函数*/private void init(){//初始化浏览器webClient = new WebClient(BrowserVersion.CHROME);//设置浏览器setting();}private void setting(){// TODO 设置浏览器属性webClient.getOptions().setJavaScriptEnabled(false);}/*** 关机*/public void shutdown(){//关闭浏览器webClient.closeAllWindows();}/*** 登陆* @return 登陆成功返回的页面* @exception 页面获取异常*/public HtmlPage Login() throws Exception{//获取登陆页面loginPage = webClient.getPage(rrUrl);//获取表单,人人网登陆页面只有一个表单loginForm = loginPage.getForms().get(0);//获取用户名输入域usenameField = loginForm.getInputByName(uFieldName);//获取密码输入域passwordField = loginForm.getInputByName(pFieldName);//设置登陆参数usenameField.setValueAttribute(username);passwordField.setValueAttribute(password);//获取登陆按钮loginBnt = loginForm.getInputByValue(bntValue);//提交表单retPage = loginBnt.click();return retPage;}/*** @param args*/public static void main(String[] args) {// TODO 自动生成的方法存根String u = "usename";//填写默认用户名String p = "password";//填写默认密码if(args.length<2){System.out.println("运行参数为默认!");}else if(args.length==2){u = args[0];p = args[1];}LoginRenren loginRenren = new LoginRenren(u, p);try {HtmlPage page = loginRenren.Login();System.out.println("*********************登陆成功!文本内容如下:*************************");
<span style="white-space:pre">         </span>//输出登陆成功返回页面的文本内容System.out.print(page.asText());} catch (Exception e) {// TODO 自动生成的 catch 块e.printStackTrace();}loginRenren.shutdown();}}

HtmlUnit实现人人网登陆相关推荐

  1. Webtop Html5 桌面App开发 -- 整合人人网登陆

    为什么80%的码农都做不了架构师?>>>    Webtop 既然是用html+css+js来开发桌面APP,那么在做一些娱乐社交应用的时候,去整合一些开放平台的时候也是十分方便的. ...

  2. 人人网登陆之C++版(MFC)

    人人网需要天天登陆,才能获得持续的登录奖励,但是每次都登录啥的,感觉非常没意思,于是派生出用软件来自动登陆,这样既省时省事,又能获得奖励. 之前没有怎么接触过网络编程,搜索了下,找到参考文章 http ...

  3. Web html5 app ,桌面,Webtop Html5 桌面App开发 -- 整合人人网登陆

    Webtop 既然是用html+css+js来开发桌面APP,那么在做一些娱乐社交应用的时候,去整合一些开放平台的时候也是十分方便的.我们直接可以使用jQuery的ajax来和开放平台交互就可以. 昨 ...

  4. PHPcms 把盛大登陆换成人人网登陆

    首先要确保你的 phpcms是比较新的版本, v9.3以后的吧 这里说明一个函数 rawurlencode() 本函数将字符串编码成 URL 的字符串专用格式,特殊的字符会转换成百分比符号后面加上二个 ...

  5. python爬虫人人网登陆

    Day1:人人网登录第一种方式 #导入模块 from urllib import request,parse from http import cookiejar #保存cookie,实例化cooki ...

  6. 爬虫-实现登陆功能-思路-RR网的例子

    目标,人人网 人人网,中国领先的实名制SNS社交网络.加入人人网,找到老同学,结识新朋友. http://www.renren.com/ 只分析如何登陆 不尝试去用js解析的方式去反爬 分析 登陆的本 ...

  7. 基于人人网的Android开发流程介绍

    人人网(www.renren.com)前身为校内网,是中国最大.最受用户欢迎的网络SNS平台.人人网目前针对不同领域的开发者,提供了相应的教程和文档,目前主要分为"站内应用开发". ...

  8. 基于人人网的简单爬虫(二)——具体实现

    该程序分为三个部分:获取人人网登陆权限.爬取所需要的好友信息和分析好友关系.下面对这三个部分的设计思路进行阐述. (1)获取人人网登陆权限 设计的核心思想是:将登陆所需要的cookie放在程序中,使得 ...

  9. 爬虫模拟登录人人网的三种方法

    # 登录人人网# 第一种,无验证码,直接post 账号密码 并且保存cookie信息到session 进行登录后的访问 # 第一种,无验证码,直接post 账号密码 并且保存cookie信息到sess ...

  10. scrapy框架中实现登录人人网(一)(最新登录方式)

    最近在弄scrapy框架的问题,感觉里面好玩的东西有很多,无意中在bilibili中看到关于在scrapy实现登录人人网的视频,人人网可能用户少,所以在现在的一些博客和教程里面看到最新的登录方法几乎没 ...

最新文章

  1. 【每日DP】day 8、P2014 [CTSC1997]选课(树形DP(树形背包)模板)难度⭐⭐⭐
  2. Tensorflow【实战Google深度学习框架】—TensorFlow 高级训练模型
  3. 我的Oracle 9i学习日志(20)-- profile
  4. foreach迭代ArrayList时,真的不能删除元素吗?
  5. Python——基于OpenCV获取倾斜子图的一种方法
  6. WinAPI: 钩子回调函数之 MouseProc
  7. eclipse java工程目录_转载:Eclipse下的java工程目录
  8. 这个C怎么了?求大佬指教
  9. Silverlight+WCF+ArcObjects获取地图服务图层列表的实现
  10. [ILINK32 Error] Error: Unresolved external 'WSAIoctl'
  11. error LNK2001: 无法解析的外部符号 __iob_func
  12. 混淆的艺术-(苍井空变凤姐)Proguard源码分析(一)前言和计划
  13. 关于政务版本中的公文签名及签章
  14. 地籍测量类毕业论文文献有哪些?
  15. Tomcat7 性能优化,提高并发-NIO模式
  16. 穷人python入门教程视频_穷的解释|穷的意思|汉典“穷”字的基本解释
  17. 移动端测试介绍和练习
  18. RCP Editor 常见错误处理方法
  19. 前端一键自动部署工具
  20. 电脑桌面上怎么找计算机,电脑自带计算器快捷键 如何快速打开电脑上的计算器...

热门文章

  1. Marlin固件配置
  2. 寻找隐藏在CloudFlare和Tor后的真实IP
  3. 遗传算法在机器人路径规划中的应用研究(Matlab代码实现)
  4. 单片机内部FLASH的字节操作
  5. 常见For 循环优化方式总结——提高效率小妙招
  6. vnc远程,在windows下如何实现vnc远程
  7. 交换两个数组的内容555555555
  8. Java执行语句--------04
  9. 硬核图解面试最怕的红黑树【建议反复摩擦】
  10. 网站视频倍速播放和进度自定义调整