基于httpclient的一个简单刷票器实现
2013-06-05 22:35
323 查看
package cn.ustb.edu.bean; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import org.apache.commons.httpclient.Cookie; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.cookie.CookiePolicy; import org.apache.commons.httpclient.cookie.CookieSpec; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.PostMethod; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; public class Hello { public static void main(String[] args) throws Exception { File file = new File("G:/aaa.txt"); InputStreamReader read = new InputStreamReader(new FileInputStream( file), "GBK"); BufferedReader bufferedReader = new BufferedReader(read); String lineTXT = null; String username = "", password = ""; String split[] = new String[2]; while ((lineTXT = bufferedReader.readLine()) != null) { split = lineTXT.toString().trim().split("\\s{1,}"); username = split[0]; password = split[1]; // 请求认证借口,获取cookie HttpClient client = new HttpClient(); GetMethod get = new GetMethod( "pollurl"); client.executeMethod(get); String html = get.getResponseBodyAsString(); get.releaseConnection(); Document document = Jsoup.parse(html); Elements element = document.select("input[name=csrf_token]"); String csrf = element.get(0).attr("value"); get.releaseConnection(); PostMethod post1 = new PostMethod( "pollurl"); System.err.println( username+":"+password ); NameValuePair namePair[] = { new NameValuePair("username", username ), new NameValuePair("password", password ), new NameValuePair("login", "1"), new NameValuePair("csrf_token", csrf) }; post1.setRequestBody(namePair); int state = client.executeMethod(post1); CookieSpec cookiespec = CookiePolicy.getDefaultSpec(); Cookie[] cookies = cookiespec.match("vote.ibeike.com", 80, "", false, client.getState().getCookies()); String coo = ""; for (Cookie cookie : cookies) { System.out.println(cookie.toString()); coo = cookie.toString(); } post1.releaseConnection(); PostMethod post2 = new PostMethod( "pollurl"); NameValuePair namePair1[] = { new NameValuePair("checked[]", "16"), // youjia new NameValuePair("csrf_token", csrf), new NameValuePair("isPoll", "1") }; post2.setRequestBody( namePair1 ); state = client.executeMethod(post2); Thread.sleep(3000); } read.close(); } }
aaa.txt文件里面放置的是用户名和密码,用来登录这个投票网站的,格式大概为: username password 中间是空格
主要是运用httpclient登录网站,获取Cookie,然后带着Cookie去访问下一个页面,获取相关数据后提交投票请求。
相关文章推荐
- 一个简单的基于注解的 Controller (spring 2.5 annotation 方式实现mvc )
- 一个C++基于boost简单实现的线程池
- 实现一个简单的基于asio的定时器
- golang简单实现一个基于TLS/SSL的 TCP服务器和客户端
- 三分钟实现一个插件平台和一个插件——基于最简单的OSGi.NET插件框架
- 50行代码实现的一个最简单的基于 DirectShow 的视频播放器
- 【微信支付】分享一个失败的案例 跨域405(Method Not Allowed)问题 关于IM的一些思考与实践 基于WebSocketSharp 的IM 简单实现 【css3】旋转倒计时 【Html5】-- 塔台管制 H5情景意识 --飞机 谈谈转行
- 一个简单的AJAX实现,基于C#的ASP.Net,包括服务器端的程序代码
- 一个简单基于LRU连接检测实现
- (高级篇 Netty多协议开发和应用)第十章-Http协议开发应用(基于Netty的HttpServer和HttpClient的简单实现)
- Castle AOP 系列(四):实现一个简单的基于上下文调用的权限校验机制
- 基于jQuery的一个简单的图片查看器实现
- 50行代码实现的一个最简单的基于 DirectShow 的视频播放器
- 基于express,MySQL,ejs实现的一个简单基本的网站后台管理应用
- Java学习3:基于Intellij IDEA实现一个简单Servlet
- 一个基于约束传播的,玩具级微型计算语言的设计和简单实现
- 基于链表实现一个简单通讯录功能
- 57-005-3 bootstrap实现一个简单的项目案例--新闻操作(基于jsp无刷新异步操作)
- 基于Python实现一个简单的银行转账操作
- 一个简单的基于注解的 Controller (spring 2.5 annotation 方式实现mvc )