使用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用于连接,设置加载项。
接下来就是获取登录页面,对网页进行分析和添加用户名和密码了
先找到登录页面的用户名,密码和登录按钮的标签
获取cookie
网站:https://passport.weibo.cn/signin/login
// 用户名输入框
//密码输入框
登录 //登录按钮
验证是否登录成功,可以通过控制台输出的页面代码,查看自己的微博ID是否出现在页面中就行了。pc版的微博,因为js的原因会等待1分半左右才能登录成功,因此这里采取了手机网页版。
如果有什么问题可以加我微信:yigenlaolongfeng
代码很少,但是如果获取cookie这样就行了并且你在访问的时候,通过获取的登陆后的cookie去访问其他微博页面依然是在登录状态。
第一次写博客,将就看了。
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去访问其他微博页面依然是在登录状态。
第一次写博客,将就看了。
相关文章推荐
- PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
- PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
- PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
- PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
- PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
- 使用httpclient4.3.X模拟post请求登陆网站获取cookie信息的操作
- PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
- 使用PHP-curl获取验证码并模拟登录教务系统
- php教程 CURL实现带有验证码网站的模拟登录的方法
- C#如何HttpWebRequest模拟登陆,获取服务端返回Cookie以便登录请求后使用
- QAuth2认证 -- ( 不使用友盟等 )自己实现第三方登录(UIWebView)、微博分享、等其他操作
- python 利用selenium模拟登录帐号验证网站并获取cookie
- jmeter 使用时间戳去redis获取验证码实现有验证码登录接口测试
- RF,RobotFramwork使用Cookie获取验证码,登录账户
- 跨域获取cookie,多个网站实现一键登录
- 使用cookie绕过验证码登录的实现代码
- python 利用selenium模拟登录帐号验证网站并获取cookie
- 引用 使用Session和Cookie实现网站自动登录
- 利用HttpWebRequest和HttpWebResponse获取Cookie并实现模拟登录
- 利用HttpWebRequest和HttpWebResponse获取Cookie并实现模拟登录