您的位置:首页 > 运维架构 > 网站架构

使用htmlunit工具来实现对新浪的模拟登录获取cookie操作(也可适用其他网站,最好是无验证码的)

2018-01-12 16:57 921 查看
1.了解htmlunit,是一个页面分析工具,你可以调用他的方法,模拟出对浏览器的基本操作。你能通过加载设置,来实现其他网页链接方法如jsoup,httpclien不支持对页面内js运行的操作。

2.基本操作

使用htmlunit模拟登录,就是一个获取登录页面->找到输入框->填入用户名密码->模拟点击登录就完事的过程。

3.代码

先通过pom文件引入需要的jar包。

去maven官网导入http://mvnrepository.com/

需要的jar包有httpclient(4.5.2),junit(4.12),selenium-server(3.7.1),common-util(1.0),

commons-io(2.4),org.json(20171018),avro-examples(0.1.0),htmlunit(2.27)。

先创建一个webClient用于连接,设置加载项。

Webclient client=new WebClient(BrowserVersion.CHROM);//设置浏览器内核
client.getCookieManager().setCookieEnabled(true);//设置cookie是否可用
client.getOptions().setJavaScriptEnabled(true); // js是否可用
client.getOptions().setCssEnabled(false); //css 一般设置false因为影响运行速度
client.setAjaxController(new NicelyResynchronizingAjaxController()); // ajax设置
client.getOptions().setThrowExceptionOnScriptError(false);
client.getOptions().setThrowExceptionOnsFallingTatusCode(false);
Set<Cookie> cookie=null; //注意 ,cookie类使用htmlunit里面的cookie


接下来就是获取登录页面,对网页进行分析和添加用户名和密码了

先找到登录页面的用户名,密码和登录按钮的标签

获取cookie

网站:https://passport.weibo.cn/signin/login

// 用户名输入框

//密码输入框

登录 //登录按钮

HtmlPage page = client.getPage(map.get("https://passport.weibo.cn/signin/login"));手机面板微博
HtmlElement user = page.querySelector("input[id=loginName]"); //获取用户名输入框
user.setAttribute("value", "填入你的账号");//在页面中添加你的登录账号
HtmlElement pwd = page.querySelector("input[id=loginPassword]"); // 获取密码输入框
pwd.setAttribute("value","填入你的密码");
HtmlElement btn = page.querySelector("a[id=loginAction]"); //登录按钮
HtmlPage htmlPage = btn.click(); //点击
cookies = client.getCookieManager().getCookies();
cookies.stream().forEach(item->{
System.out.println(item.getName()+":"+item.getValue());
});
client.close();
System.out.println(htmlPage.asXml());//自动跳转登陆后的页面


验证是否登录成功,可以通过控制台输出的页面代码,查看自己的微博ID是否出现在页面中就行了。pc版的微博,因为js的原因会等待1分半左右才能登录成功,因此这里采取了手机网页版。

如果有什么问题可以加我微信:yigenlaolongfeng

代码很少,但是如果获取cookie这样就行了并且你在访问的时候,通过获取的登陆后的cookie去访问其他微博页面依然是在登录状态。

第一次写博客,将就看了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cookie 密码